db2编目抽取
最近迁移DB2数据库从AIX到Linux平台:需要整理所有服务器编目,服务器有aix和linux,手动整理肯定较慢切容易出错,下面写脚本解决。
策略:
1、编写脚本提取服务器编目的脚本,编目信息保存到文件。
2、ansible分发到各台Linux服务器,aix没有ssh认证的需手动完成。
3、ansible批量执行脚本,提取信息到文件。
4、ansible拉取各台服务器编目信息文件到本机。
5、本机编写脚本批处理,生成csv格式。
下面给出关键处理脚本:
获取编目信息到文件:
#!/bin/bash
#linux平台
db_host=`hostname`
db_ip=$(ifconfig -a | grep "inet addr" | grep -v "127.0.0.1" | awk '{print $2}' | awk -F':' '{print $2}')
who_am=`whoami` db2 list db directory > ${db_ip}_${who_am}_${db_host}.db
db2 list node directory > ${db_ip}_${who_am}_${db_host}.node #!/usr/bin/ksh
#aix平台
db_host=`hostname`
db_ip=`ifconfig -a | sed -n "5,5p" | awk '{print $2}'`
who_am=`whoami` db2 list db directory > ${db_ip}_${who_am}_${db_host}.db
db2 list node directory > ${db_ip}_${who_am}_${db_host}.node
批处理各台服务器编目:
#!/bin/bash
#bash $0 catadir linux|aix db|node
#脚本运行时有三个参数:
# 1、编目信息文件所在目录,
# 2、平台linux或aix
# 3、所要生成的编目类型,node或db if [ $# -ne 3 ]; then
echo "bash $0 catadir linux|aix db|node"
exit 1
fi cata_dir="$1"
os_sys="$2"
db_node="$3"
os_linux="linux"
os_aix="aix"
db="db"
node="node" catalog_node="catalog_node_`date +%F`"
catalog_db="catalog_db_`date +%F`" for file in $(find ${cata_dir} -name "*.${db_node}" | awk -F'/' '{print $2}')
do
#echo filename:$file
ip_user="${file%_*}"
db_host="${ip_user%_*}"
db_user="${ip_user#*_}"
#linux node
if [[ "${os_sys}"x = "${os_linux}"x && "${db_node}"x = "${node}"x ]]; then
cat ${cata_dir}/${file} | egrep 'Node name|entry type|Protocol|Hostname|Service name' | awk '{print $NF}' | awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_node}
fi
#aix node
if [[ "${os_sys}"x = "${os_aix}"x && "${db_node}"x = "${node}"x ]]; then
cat ${cata_dir}/${file} | grep -e "节点名" -e "目录条目类型" -e "协议" -e "主机名" -e "服务名称" | awk '{print $NF}' | awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_node}
fi
#linux db
if [[ "${os_sys}"x = "${os_linux}"x && "${db_node}"x = "${db}"x ]]; then
#间接db
cat ${cata_dir}/${file} | egrep 'alias|Database name|entry type|partition' | awk '{print $NF}' | grep -A 1 -B 2 "Indirect" | grep -v "\-\-" | awk '{printf $0","} NR%2==0 && NR%4!=0 {printf ","} NR%4==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
#远程db
cat ${cata_dir}/${file} | egrep 'alias|Database name|Node name|entry type|partition' | grep -A 1 -B 3 "Remote" | grep -v "\-\-" | awk '{print $NF}' |awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
fi
#aix db
if [[ "${os_sys}"x = "${os_aix}"x && "${db_node}"x = "${db}"x ]]; then
#间接db
cat ${cata_dir}/${file} | egrep '数据库别名|数据库名称|目录条目类型|目录数据库分区号' | awk '{print $NF}' | grep -A 1 -B 2 "间接" | grep -v "\-\-" | awk '{printf $0","} NR%2==0 && NR%4!=0 {printf ","} NR%4==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
#远程db
cat ${cata_dir}/${file} | egrep '数据库别名|数据库名称|节点名|目录条目类型|目录数据库分区号' | grep -A 1 -B 3 "远程"| grep -v "\-\-" | awk '{print $NF}' |awk '{printf $0","} NR%5==0 {print db_host","db_user}' db_host="$db_host" db_user="$db_user" >> ${catalog_db}
fi
done exit $?
db2编目抽取的更多相关文章
- 【DB2基础】DB2编目和数据库连接
1.编目节点和编目数据库 编目(Catalog),是在本地或远程建立客户端到服务器的数据库连接的过程.其目的在于获取编目信息,即生成用来访问数据库的目录. 系统数据库目录包含一个列表和指针,通过目录可 ...
- DB2编目配置及管理
打开命令:db2cmd 我一般打开的方式如下: (在db2) ...
- DB2 编目并访问远程数据库
之后将逐步对项目上的DB2相关经验做个总结,梳理一下知识结构. 要远程操作数据库,首先要进行编目,分三个步骤: 1. 在客户端建立服务器端数据库的节点,编目远程节点. 格式如下: 1. CATALOG ...
- DB2 - 编目的解释
编目(Catalog),是在本地或远程建立客户端到服务器的数据库连接的过程.其目的在于获取编目信息,即生成用来访问数据库的目录.系统数据库目录包含一个列表和指针,通过目录可以使 DB2 能够找到已知的 ...
- DB2 错误信息码
000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 +098 01568 动态SQL语句用分号结束 +1 ...
- DB2 SQLCODE 大全
DB2错误信息sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 ...
- DB2中错误信息说明
DB2错误信息SQLCODE SQLSTATE (按sqlcode排序) .分类: db2数据库 2012-10-19 11:35 2942人阅读 评论(0) 收藏 举报 db2sql存储table数 ...
- db2数据库sql报错信息
sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用 +098 ...
- DB2错误代码
db2错误代码大全 博客分类: 数据库 sqlcode sqlstate 说明 000 00000 SQL语句成功完毕 01xxx SQL语句成功完毕,可是有警告 +012 01545 未限定的列名被 ...
随机推荐
- 在macOS下正确配置 VS Code 使用 virtualenv 里的 python 环境参数
在macos配置好并启动 virtualenv 环境后,如何让 VS Code 使用这个环境下来编译调试 python 脚本呢? 1.首先当然是先配置好python虚拟环境 假定配置python的的虚 ...
- hdu 6185 递推+【矩阵快速幂】
<题目链接> <转载于 >>> > 题目大意: 让你用1*2规格的地毯去铺4*n规格的地面,告诉你n,问有多少种不同的方案使得地面恰好被铺满且地毯不重叠.答案 ...
- C++中的智能指针
一.动态内存管理 通常我们创建动态内存的时候,需要自己管理好内存,也就是说,new出来的对象一定要注意释放掉.下面通过例子可以看到这个问题所在: struct BBE{ int X; int Y; v ...
- 服务端、实时、大数据、AI计算
服务端.实时.大数据.AI计算,各种各样的计算,计算机本质是什么,计算机的本质是 利用compute的计算速度为人提供更优的计算结果. 所以实时也好,准实时.离线.AI本质上是两个维度,实时准实时强调 ...
- 安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization
安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization 汉化包 百度云盘 ...
- 仙剑奇侠传 游戏 开发 教程 Xianjian qixia development Game development tutorial
仙剑奇侠传 开发 游戏 开发 教程 Xianjian qixia development Game development tutorial 作者:韩梦飞沙 Author:han_meng_fei_ ...
- 喵哈哈村的魔法考试 Round #20 (Div.2) 题解
题解: A 喵哈哈村的跳棋比赛 题解:其实我们要理解题意就好了,画画图看看这个题意.x<y,那么就交换:x>y,那么x=x%y. 如果我们经过很多次,或者y<=0了,那么就会无限循环 ...
- C语——宏小结
c语言关于宏的使用十分频繁.但是宏的使用有利也有弊,与此同时,它还是一个特别容易搞错的地方.正是基于此,它常常成为一些面试会侧重考察的地方. 所谓宏就是 #define 机制包括的一个规定,即允许把参 ...
- JNI编程实现(Linux)
JNI是Java Native Interface的缩写,是Java平台的本地调用,从Java1.1就成为了Java标准的一部分,它允许Java代码和其它语言的代码进行互相调用,只要调用约定支持即可, ...
- Ubuntu GNOME 13.04将关闭窗口的按钮放在最右边
转载请注明:转自http://blog.csdn.net/u010811449/article/details/9426187 先上图: 首先打开dconf系统配置编译器. 找到 rog -> ...