DB2命令总汇

本文详细介绍了DB2数据库的常用命令,包括db2level、db2mtrk、数据库实例的创建与管理、表空间操作、DAS管理、数据库创建与删除、SQL错误查询、节点配置、数据恢复等,内容涵盖了DB2数据库的多个方面,旨在帮助读者掌握DB2的基本管理和操作技巧。
摘要由CSDN通过智能技术生成

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

               

DB2常用命令汇总之一


db2 -tvf my.sql

db2level 显示db2的版本号

显示SQL出错信息
db2 "? sql6031"

db2mtrk

管理DAS
产生:root运行-dascrt -u dasuser1
删除:root运行-dasdrop
启动:dasusr1运行-db2admin start
停止:dasusr1运行-db2admin stop

db2_kill
ipclean

db2start dbpartitionnum 9 restart

AIX启动控制中心:
db2cc

DB2用户管理:
  db2 use os to manage users.You can use following steps to add a db2 user:
  1,add a user on os.
  2,grant rights to user.
    GRANT  CREATETAB,CONNECT ON DATABASE  TO USER FUJIE;
    grant select, update, delete on table employee to user john with grant option

一,实例

产生
db2icrt -a AuthType(SERVER,CLIENT,SERVER_ENCRYPT) -p PORT_NAME
表空间PREFETCHSIZE的设置,EXTENTSIZE的关系,缓冲池的监控,页清除程序的多少。
   临时表空间页面大小与其他表空间页面大小的设置,临时表空间与缓冲池的设置。
example:db2icrt db2 -s ese -p d:/db2 -u Administrator

注意:在UNIX 上产生实例时需要产生一个和实例名称相同的用户名,和fencedid 用户。
  如:db2icrt -s ese -u db2fenc2 db2inst2 将在db2inst2用户中产生实例db2inst2.

缺省创建32位实例,创建64位实例:db2icrt -s ese -w 64 -u db2fenc2 db2inst2
  
删除
db2idrop instance-name
启动
db2start
停止
db2stop force
连接
db2 attach to testdb2
db2 detach
列出实例
db2ilist
设置当前实例
set db2instance=<instance-name>
得到当前实例
db2 get instance
设置实例自动重启动UNIX
db2iauto -on <instance-name>
db2iauto -off <instance-name>

获取实例的配置参数
db2 get dbm cfg
修改配置参数
例如:db2 update dbm cfg using authentication server_encrypt
     db2stop and db2start
    
二,声明注册表和环境变量
db2set   注意:设置完成后需要退出用户,再注册进入才能生效。
列出所有受支持的变量
db2set -lr
列出当前实例所有已定义的变量
db2set
要列出概要文件注册表中所有定义的注册表变量
db2set -all
列出单个变量
db2set registry_variable_name
更改变量
db2set registry_variable_name=new_value
变量复位为缺省值
db2set -r registry_variable_name

db2set DB2CODEPAGE=819

db2set DB2CODEPAGE=1386

db2 -tvf my_sql.sql

三,创建节点配置文件
db2nodes.cfg

UNIX 格式:dbpartitionnum(0-999) hostname [logical-port [netname]]
WIN  格式:nodenumber hostname computername logical_port netname

四,管理服务器
<配置助手,控制中心,开发中心> 通过DAS来进行工作
创建DAS
db2admin create (windows)
dascrt -u <DASUser>  需要root权限
启动和停止
db2admin start
db2admin stop
列出
db2admin
配置DAS
db2 get admin cfg
db2 update admin cfg using
db2 reset admin cfg
最好stop再start
五,配置多个逻辑节点
可以用两个方法来配置多个逻辑节点:
* 在db2nodes.cfg文件中配置逻辑节点(数据库分区).然后,可使用db2start启动所有逻辑和远程节点.
    对于windows nt,若系统中没有数据库,则必须使用db2ncrt来添加节点,否则,若一个或多个数据库,
    则应使用db2start addnode 命令.在nt 中,不能手工编辑db2nodes.cfg文件.
   db2ncrt /n:1 /u:administrator,yhnu0987 /m:fujie /p:1 /h:fujie
   db2start addnode nodenum 1 hostname guosd port 1 computer GUOSD user db2admin password db2admin

* 在另一个处理器上重新启动一个逻辑节点,其他逻辑数据库分区(节点)已在该处理器上运行.这允许覆盖
  在db2nodes.cfg中为逻辑数据库分区指定的主机名和端口号.
 

在WIN中添加逻辑节点
  db2ncrt /n:1 /u:Administrator,<pwd> /i:db2 /m:FUJIE /p:1
 
#删除逻辑节点
db2ndrop
有数据库的时候使用db2stop drop nodenum
#改变逻辑节点
db2nchg

 

 

DB2常用命令汇总之二

六,创建数据库
创建数据库时,完成如下任务:
* 设置数据库所需的所有系统目录表
* 分配数据库恢复日志
* 创建数据库配置文件,设置缺省值
* 将数据库实用程序与数据库绑定

初始数据库分区组的定义
当最初创建数据库时,会为所有在db2nodes.cfg文件中指定的分区创建数据库分区.可以用
add dbpartitionnum 和 drop dbpartitionnum verify 命令来添加或除去其他分区.
定义了三个数据库分区组:
         * 用于容纳syscatspace表空间的ibmcatgroup, 保存系统目录表
         * 用于容纳tempspaces1表空间的ibmtempgroup,保存系统临时表
* 用于容纳userspace1表空间的ibmdefaultgroup,缺省保存用户表和索引

(创建新的数据库后最好重新启动db2clp)

EXAMPLE:
CREATE DATABASE PERSONL
   CATALOG TABLESPACE
     MANAGED BY SYSTEM USING (path 'D:/PCATALOG','E:/PCATALOG')
     EXTENTSIZE 16 PREFETCHSIZE 32
   USER TABLESPACE
     MANAGED BY DATABASE USING (FILE 'D:/DB2DATA/PERSION1' 5000,
                                FILE 'D:/DB2DATA/PERSION2' 5000)
     EXTENSIZE 32 PREFETCHSIZE 64
   TEMPORARY TABLESPACE
     MANAGED BY SYSTEM USING (path 'F:/DB2TEMP/PERSONL')
   WITH "PERSONNEL DB FOR DSCHIEFER CO"

create database sccrm using codeset GBK territory CN

#删除数据库
   DROP DATABASE <DB-NAME>
  

# 数据库目录的定义
  *本地数据库目录(节点的目录中的文件SQLDBDIR)
     本地数据库目录文件存在于定义了数据库的每条路径(或WIN中的"驱动器")
     对于可以从该位置存取得每个数据库此目录都包含一个条目.包含信息:
      数据库名称,数据库别名,数据库注释,数据库的根目录的名称,其他系统信息.
  *系统数据库目录(实例中的目录中的文件SQLDBDIR)
     对于数据库管理器的每个实例,都存在一个系统数据库目录文件,该文件对于针对
     此实例编目的每个数据库都包含一个条目.使用CREATE DATABASE时隐式的编目数据库
     每个数据库包含一条信息: 数据库名,数据库别名,数据库注释,本地数据库目录的位置,
      指示该数据库是间接的指示符,表示它与系统数据库目录文件驻留在相同的机器上.
查看本地或系统数据库目录文件
   LIST DATABASE DIRECTORY ON <location>
   LIST DATABASE DIRECTORY
  
  *节点目录
     数据库管理器在编目第一个数据库分区时会创建节点目录.要编目数据库分区,
     使用CATALOG NODE命令.要显示本地节点目录的内容,使用LIST NODE DIRECTORY
     .在每个数据库客户机上都创建并维护节点目录.对于具有客户机可以存取得一个
     或多个数据库的每个远程工作站,该目录都包含一个条目.db2客户机使用该节点目录中
     的通信端点信息.
     catalog tcpip node my_node_name remote 10.10.10.10 server 54321
uncatalog node my_node_name
     catalog database DB as my_data_alias at node my_node_name
# "轻量级目录访问协议" (LDAP)目录服务
    目录服务是一个关于分布式环境中的多个系统和服务的资源信息的资源库;它
    提供对这些资源的客户机和服务器存取.客户机和服务器将使用目录服务来找出
    如何存取其他资源.
    LDAP是业界标准的存取目录服务的方法.每个数据库服务器实例都会将它的存在情况发布给LDAP,
    并在创建数据库时向LDAP目录提供数据库信息.当客户机与数据库连接后,可从LDAP目录检索
    服务器的目录信息.不再要求每个客户机将目录信息以本地方式存储在每台机器上.

# 创建数据库分区组
    可以使用CREATE DATABASE PARTITION GROUP语句创建数据库分区组.此语句指定表空间
    容器和表数据将驻留其上的一组数据库分区.
      *为数据库分区组创建分区映象.
      *生成分区映象标识
      *将记录插入下列目录表:
       SYSCAT.DBPARTITONGROUPS,SYSCAT.PARTITIONMAPS,SYSCAT.DBPARTITIONGROUPDEF

   CREATE DATABASE PARTITION GROUP <name> ON DBPARTITIONNUMS (<value>,<value>)
 
#创建表空间
表空间建立数据库系统使用的物理存储设备与用来存储数据的逻辑容器或表的关系

CREATE TABLESPACE <name>
    MANAGED BY SYSTEM
    USING ('<path>')
   
CREATE TABLESPACE <name>
    MANAGED BY DATABASE
    USING (FILE'<path>' <size>)
           DEVICE
*指定分区组
CREATE TABLESPACE PLANS IN ODDNODEGROUP
    MANAGED BY DATABASE
    USING (DEVICE '/dev/HDISK0' 10000,DEVICE '/dev/n1hd01' 40000) on node 1
        (DEVICE '/dev/HDISK0' 10000,DEVICE '/dev/n1hd03' 40000) on node 3
        (DEVICE '/dev/HDISK0' 10000,DEVICE '/dev/n1hd05' 40000) on node 5 

CREATE  REGULAR  TABLESPACE CUSTTBS IN DATABASE PARTITION GROUP CUSTOMER
PAGESIZE 4 K  MANAGED BY DATABASE  USING
( FILE 'D:/testdbtbs/custtbs0_1' 5120 ) ON DBPARTITIONNUM (0)
USING
( FILE 'D:/testdbtbs/custtbs1_1' 5120 ) ON DBPARTITIONNUM (1)
EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16
 
   在多分区数据库中创建单分区组.
   CREATE DATABASE PARTITION GROUP single_tbs_grp ON DBPARTITIONNUM(0)
   在单分区组中创建单分区表空间.
   CREATE TABLESPACE single_part_tbs IN DATABASE PARTITION GROUP single_tbs_grp
   MANAGED BY DATABASE USING (FILE 'd:/testdbtbs/single_part_tbs_1' 5120)
  
  在UNIX中使用字符设备.
 
* 创建特定类型的表空间
  创建系统临时表空间
  CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp
   MANAGED BY SYSTEM
   USING ('d:/tmp_tbsp','e:/tmp_tbsp')
  
   在分区数据库中创建系统临时表空间 只能在IBMTEMPGROUP中产生
   CREATE  SYSTEM TEMPORARY  TABLESPACE TEMPSYS_TBSP1
    IN DATABASE PARTITION GROUP IBMTEMPGROUP
    PAGESIZE 4 K  MANAGED BY SYSTEM 
    USING ('D:/testdbtbs/sys_temp_0' ) ON DBPARTITIONNUM (0)
    USING ('d:/testdbtbs/sys_temp_1' ) ON DBPARTITIONNUM (1)
    EXTENTSIZE 16 OVERHEAD 10.5 PREFETCHSIZE 16
  创建用户临时表空间
   CREATE USER TEMPORARY TABLESPACE usr_tbsp
    MANAGED BY DATABASE
    USING (FILE 'd:/db2data/user_tZbsp' 5000,
           FILE 'e:/db2data/user_tbsp' 5000)
   
    在分区数据库中创建用户临时表空间 可在除IBMTEMPGROUP中的其他分区组中产生.
   CREATE  USER TEMPORARY  TABLESPACE USER_TEMP_TBSP
    IN DATABASE PARTITION GROUP USER_TEMP_TBSGRP
    PAGESIZE 4 K  MANAGED BY SYSTEM 
    USING ('D:/testdbtbs/user_temp_0' ) ON DBPARTITIONNUM (0)
    USING ('d:/testdbtbs/user_temp_1' ) ON DBPARTITIONNUM (1)       
  
  *指定物理设备
  在WINDOWS上,指定物理硬盘驱动器,使用//./PhysicalDriveN (N-0,1,2..)
              指定逻辑驱动器使用//./N: (N是系统中的逻辑盘符)
  在UNIX中指定字符设备.
 
   #SMS  当对象增大时,文件每次扩展一页。若需要提高插入性能,可以考虑启用多页分配,如MDC表。
运行db2empfa. 对于多分区数据库必须对每个分区运行此使用程序,一旦启用就不能禁止。
   #DMS 
单分区表空间大小,4kb - 64gb;8kb-128gb;16kb-256gb;32kb-512gb
            在缺省情况下,每个容器都保留一个数据块作为开销,表空间的最小大小是5个数据块。
三个保留给开销使用。两个用于用户表数据。

  #在多个节点上产生表空间
CREATE TABLESPACE TS1 MANAGED BY DATABASE USING
(device '/dev/rcont $N' 20000)

CREATE TABLESPACE TS2 MANAGED BY DATABASE USING
(file '/DB2/containers/TS2/container $N+100' 10000)

CREATE TABLESPACE TS3 MANAGED BY SYSTEM USING
('/TS3/cont $N%2', '/TS3/cont $N%2+2')

  #增加表空间的空间
    ALTER TABLESPACE RESOURCE
       ADD (DEVICE '/dev/rhd9' 10000,
            DEVICE '/dev/rhd10' 10000)
   #改变表空间状态
    DB2 ALTER TABLESPACE <name> SWITCH ONLINE
   #删除表空间
    DROP TABLESPACE <name>
    可以先增加一个系统临时表空间,然后删除老的.
   #获取表空间使用信息
    get snapshot for tablespaces on sample
   #获取表空间的CONTAINER
    LIST TABLESPACE CONTAINERS FOR 0(TABLESPACE_ID) SHOW DETAIL
  
# 创建和填充表

  列出表:
  list tables - 列出当前用户的表
  list tables for all - 列出数据库中所定义的所有表
  list tables for schema schemaname - 列出具有指定模式的表
  describe table tablename - 显示指定表的结构

  产生表和主键
  CREATE TABLE DEPARTMENT
(DEPTNO CHAR(3) NOT NULL,
DEPTNAME VARCHAR(29) NOT NULL,
MGRNO CHAR(6),
ADMRDEPT CHAR(3) NOT NULL,
LOCATION CHAR(16),
PRIMARY KEY (DEPTNO))
  IN RESOURCE
  产生外键
  CREATE TABLE EMPLOYEE
(EMPNO CHAR(3) NOT NULL PRIMARY KEY,
FIRSTNME VARCHAR(12) NOT NULL,
LASTNAME VARCHAR(15) NOT NULL,
WORKDEPT CHAR(3),
PHONENO CHAR(4),
PHOTO BLOB(10m) NOT NULL,
FOREIGN KEY DEPT (WORKDEPT)
REFERENCES DEPARTMENT ON DELETE NO ACTION)
  IN RESOURCE
        ON DELETE NO ACTION 表示如果该部门有任何雇员则该部门不能被删除.
  定义表检查约束
      在创建或改变表时,通过将检查约束定义与表关联来对该表创建表检查约束.
      当INSERT或UPDATE语句修改该表中的数据时,就自动激活此约束.表检查约束对
      DELETE或SELECT没有影响.检查约束不能与类型表相关.
       约束名不能与在同一个CREATE TABLE语句内指定的任何其他约束相同.若不
       指定约束名,系统会自动生成18个字符的唯一标识符.
      表检查约束用于实现键唯一性或引用完整性约束所未涵盖的数据完整性规则.
      如:
CREATE TABLE EMP_ACT
(EMPNO CHAR(6) NOT NULL,
PROJNO CHAR(6) NOT NULL,
ACTNO SMALLINT NOT NULL,
EMPTIME DECIMAL(5,2),
EMSTDATE DATE,
EMENDATE DATE,
CONSTRAINT ACTDATES CHECK(EMSTDATE <= EMENDATE) )
IN RESOURCE
     约束EMSTDATE必须小于EMENDATE

   定义信息性约束
       信息性约束是一个规则,可由SQL编译器使用,但数据库管理器不会强制使用它.
       SQL编译器包括一个重写查询阶段,它将SQL语句变换为可能是优化的格式并改进
       所需数据的存取路径.目的是改进查询性能.
   对新表定义生成列
       生成列在基本表中定义,在这些列中,存储的值是使用表达式计算得出的,而不是
通过插入或更新操作指定.可以改善查询性能,特别是计算很复杂或在查询时要进行
多次表达式求值.
CREATE TABLE t1 (c1 INT,
c2 DOUBLE,
c3 DOUBLE GENERATED ALWAYS AS (c1 + c2)
c4 GENERATED ALWAYS AS
(CASE WHEN c1 > c2 THEN 1 ELSE NULL END))
    创建用户定义临时表
临时表不出现在系统目录中,不能共享此表
DECLARE GLOBAL TEMPORARY TABLE gb1_temp
  LIKE tmpltab1
  ON COMMIT DELETE ROES
  NOT LOGGED
  IN usr_tbsp
 
定义此用户临时表所使用的列的名称和描述与empltabl的列的名称和描述完全相同.
隐式定义只包括列名,数据类型,可空性特征和列缺省值属性.未定义其他列属性,包括
唯一约束,外键约束,触发器和索引.
    对新表定义身份列
        为插入表的每一行自动生成保证唯一数字值的方法.
        只在单分区数据库中支持.
CREATE TABLE test_table ( col1 int,
  col2 double,
  col3 int not null generated always as identity
       (start with 100,increment by 5))

    创建序列
        序列是一个数据库对象,它允许自动生成值.序列特别适合于生成唯一键值.
        与身份列属性不同,未使序列与特定表列相关,也未将它绑定至唯一列,只是仅可通过该表
        列存取.只在单分区数据库中才受支持.
        在多分区环境中的单分区数据库也不行.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值