zoukankan      html  css  js  c++  java
  • DB2

    DB2 - 命令 数据库操作

    标签(空格分隔): DB2实例 DB2授权 数据库


    DB2用户授权

    # 数据库名称
    database_name=lqr 
    # 用户名称
    user_name=lqr
    # 查看表空间名称
    # db2 "list tablespaces show detail" 
    # 表空间名称 需要大写
    tablesapce_name=USERSPACE1 
    # 实例或者数据库管理员用户登录,不然权限不足
    instance_name=db2inst1
    instance_passwd=qwe123
    
    db2 connect to $database_name user $instance_name using $instance_passwd
    # 数据库授权
    db2 "grant connect on database to user $user_name" 
    # 表空间授权
    db2 "grant use of tablespace $tablesapce_name to user $user_name"    
    # 需要先db2 connect to $database_name user $instance_name using $instance_passwd(用数据库管理员权限)
    db2 "grant dbadm, createtab, bindadd, connect, create_not_fenced_routine, implicit_schema, load, create_external_routine, quiesce_connect, quiesce_connect, secadm on database to user $user_name" 
    
    echo "$user_name $database_name 授权成功"  

    DB2数据批量导入导出脚本

    Time:2017-02-18

    echo "----   数据库数据导入&导出脚本   -----"
    #     一次性导出数据库中所有表,并生成对应的ex.sh导出脚本和lo.sh导入脚本
    #     操作:1.修改参数 2.运行脚本export.sh得到ex.sh和lo.sh以及columns.txt
    #          3.运行ex.sh导出数据得到大量del文件 4.使用lo.sh导入del数据到数据库
    
    #参数
    db_name=dwdb    #数据库名称
    user_name=lqr   #用户名称
    user_passwd=qwe123    #用户密码
    tabschema_name=LQR    #用户名称 #必须大写 
    #db2 "select SCHEMANAME,owner,CREATE_TIME from syscat.schemata" 查看当前存在的Schema
    
    
    #db2 connect to lqr user lqr using qwe123;
    db2 connect to $db_name user $user_name using $user_passwd;
    rm -rf columns.txt
    rm -rf ex.sh
    rm -rf lo.sh
    #db2 -x "select tabname,colname,row_number() over(partition by tabname order by colno desc) from syscat.columns where tabschema = 'LQR' and left(tabname,2) = 'FB' order by tabname,colno with ur" > columns.txt
    db2 -x "select tabname,colname,row_number() over(partition by tabname order by colno desc) from syscat.columns where tabschema = '$tabschema_name' order by tabname,colno with ur" > columns.txt
    #echo "db2 connect to lqr user lqr using qwe123;" >> ex.sh
    echo "db2 connect to $db_name user $user_name using $user_passwd;" >> ex.sh
    echo "db2 connect to $db_name user $user_name using $user_passwd;" >> lo.sh
    
    sql=""
    cat columns.txt|while read tabname colname num
    do
        if [ $num == 1 ]
        then
            echo "db2 "export to $tabname.del of del select $sql$colname from $tabname"">> ex.sh
            echo "db2 "load from $tabname.del of del  insert into $tabname ($sql$colname)"">> lo.sh
            sql=""
        else
            sql="$sql$colname,"
        fi
    done
    

    备注:导出的数据,用txt文件查看中文正常,xshell查看乱码,导入乱码,由于Linux默认的读取编码问题导致的,在用户目录下的.vimrc中加入set encoding=utf-8 fileencodings=ucs-bom,utf-8,gbk,cp936 设置读取的编码格式

    运行后的结果:

    运行后的结果

    —– 未测试

    1、查看数据库页大小
    db2 get db cfg
    2、收集表状态信息
    db2 runstats on table schema.table_name
    3、查询数据表占用页的数量
    select tabname, npages from syscat.tables where tabname = ‘table_name’
    4、计算表占用磁盘空间大小
    表占用磁盘空间大小 = 数据页大小 * 页数量
    查看表占磁盘空间大小:select tabname, npages*16384/(1024*1024) from syscat.tables where tabname = ‘XXXXXX’

    db2 v9以上查看表占磁盘逻辑空间大小:select sum(x.DATA_OBJECT_P_SIZE+x.INDEX_OBJECT_P_SIZE+x.LOB_OBJECT_P_SIZE+x.LONG_OBJECT_P_SIZE+x.XML_OBJECT_P_SIZE) from SYSIBMADM.ADMINTABINFO x where TABNAME=’XXXXXXX’;
    select TABNAME,sum(x.DATA_OBJECT_P_SIZE+x.INDEX_OBJECT_P_SIZE+x.LOB_OBJECT_P_SIZE+x.LONG_OBJECT_P_SIZE+x.XML_OBJECT_P_SIZE) from SYSIBMADM.ADMINTABINFO x group by TABNAME;
    db2 v9以上查看数据库占用空间大小:db2 “call SYSPROC.GET_DBSIZE_INFO(?,?,?,10)”

  • 相关阅读:
    征战蓝桥 —— 2015年第六届 —— C/C++A组第5题——九数组分数
    征战蓝桥 —— 2015年第六届 —— C/C++A组第5题——九数组分数
    征战蓝桥 —— 2015年第六届 —— C/C++A组第4题——格子中输出
    SSLZYC 邮票
    SSLZYC 道路阻塞
    SSLZYC 反射
    SSLZYC 家族
    秒杀系统架构分析与实战
    工厂模式
    工厂模式
  • 原文地址:https://www.cnblogs.com/superscfan/p/12257042.html
Copyright © 2011-2022 走看看