首页 > 数据库 >oracle11g_获取所有对象&&表数据脚本(迁移后数据比对)

oracle11g_获取所有对象&&表数据脚本(迁移后数据比对)

时间:2023-09-18 17:47:32浏览次数:36  
标签:文件 name data object echo result && 数据 oracle11g

oracle11g进行数据库迁移后,数据比对靠人工的话比较麻烦,通过如下脚本可以直接取数,获取对象及数据结果文件后,通过notpad++即可进行对比

脚本内容如下

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/bin/bash
#2023/09 by jia.zhenhua
#auto check oracle11g object && data

 

#########################脚本说明#########################

#1. 脚本直接执行即可,不需要手工定义变量;脚本执行完成后,对象结果文件存放在/tmp/object_check_result.txt;数据结果文件存放在/tmp/data_check_result.txt

#2. 如果需要调整结果文件存放位置,那么调整全局变量中的 object_result 及 data_result 即可


#########################全局变量#########################

#定义对象结果存放文件,存放所有对象数量
object_result=/tmp/object_check_result.txt

#定义表数据结果存放文件,存放所有表行数
data_result=/tmp/data_check_result.txt

#定义系统自带用户
system_user="('DIP','MDDATA','SCOTT','SPATIAL_WFS_ADMIN_USR','SPATIAL_CSW_ADMIN_USR','ORACLE_OCM','XS$NULL','DBSNMP','SI_INFORMTN_SCHEMA','ORDPLUGINS','CTXSYS','ORDSYS','XDB','EXFSYS','DMSYS','SYSMAN','ANONYMOUS','WMSYS','MDSYS','OLAPSYS','APPQOSSYS','ORDDATA','SYSTEM','SYS','MGMT_VIEW','OUTLN','TSMSYS','OWBSYS','OWBSYS_AUDIT','APEX_030200','FLOWS_FILES','APEX_PUBLIC_USER','GGADMCAP')"

#########################脚本主体#########################

function get_blank(){
name_length=$(echo ${1}|awk '{print length($0)}')
let blank_length=${2}-${name_length}
reality_blank=$(seq -s " " $[${blank_length}+1]|sed 's/[0-90]//g')
echo -e "${1}${reality_blank}|"
}

####确认目录及文件

#创建存放对象结果文件
if [ -f "$object_result" ];then
echo "存放对象结果文件文件已存在,清空该文件"
cat /dev/null > $object_result
else
echo "存放对象结果文件文件不存在,创建该文件"
touch $object_result
fi

#创建存放数据结果文件
if [ -f "$data_result" ];then
echo "存放数据结果文件文件已存在,清空该文件"
cat /dev/null > $data_result
else
echo "存放数据结果文件文件不存在,创建该文件"
touch $data_result
fi


#1. 获取所有对象信息

echo "开始获取object信息"

#%-10d指定第一列序号的长度
objects_sum=`echo -e "set line 300 pages 999 long 999\n col OWNER for a30\n col OBJECT_TYPE for a30\n select owner,object_type,status,count(*) from dba_objects where owner not in $system_user group by owner,object_type,status order by owner,object_type,status;" | sqlplus -S / as sysdba | grep -v 'selected'`

echo -e '\n' >> $object_result

if [ -n "$objects_sum" ];then
echo "object对象类型、状态、数量详细信息:" >> $object_result
echo -e '\n' >> $object_result
echo "$objects_sum" >> $object_result
echo -e '\n' >> $object_result
else
echo "object对象数量:0" >> $object_result
echo -e '\n' >> $object_result
fi

echo "object信息获取完成"


#2. 循环获取数据库中每张表的数据量

#定义username变量,获取所有username名称(已排除系统用户)
user_name_list=`echo -e "select distinct USERNAME from dba_users where USERNAME not in $system_user;" | sqlplus -S / as sysdba | grep -v "USERNAME\|^$\|selected\|-"`

echo "开始取数"

#循环获取每个表数量并打印
for us in $user_name_list
do
tb_name_list=`echo -e "select distinct TABLE_NAME from dba_tables where owner in ('$us');" | sqlplus -S / as sysdba | grep -v "TABLE_NAME\|^$\|selected\|-"`

#若tb_name_list非空,则进入循环
if [[ -n "$tb_name_list" ]];then
for i in $tb_name_list
do
tb_count=`echo -e "select /*+ parallel(4) */ count(*) from $us.$i;" | sqlplus -S / as sysdba | grep -v "COUNT\|^$\|-" | column -t`
x=$(get_blank $us 30)
y=$(get_blank $i 60)
echo "表$us.$i取数完成"
echo "$x$y$tb_count" >> $data_result
done
fi
done

echo "取数结束"

echo "脚本执行结束"

 

标签:文件,name,data,object,echo,result,&&,数据,oracle11g
From: https://www.cnblogs.com/jzhsw/p/17712548.html

相关文章

  • 场景题:海量数据如何判重?
    在海量数据如何确定一个值是否存在?这是一道非常经典的面试场景题。那怎么回答这个问题呢?接下来咱们就详细的聊一聊。参考答案判断一个值是否存在?通常有以下两种解决方案:使用哈希表:可以将数据进行哈希操作,将数据存储在相应的桶中。查询时,根据哈希值定位到对应的桶,然后在桶内进......
  • oracle19c(CDB模式)_获取所有对象&&表数据脚本(迁移后数据比对)
    oracle19c进行数据库迁移后,数据比对靠人工的话比较麻烦,通过如下脚本可以直接取数,获取对象及数据结果文件后,通过notpad++即可进行对比脚本内容如下--------------------------------------------------------------------------------------------------------------------------......
  • 软件设计师——数据定义语言
    1建立数据库基本语法:CREATEDATABASE数据库名2建立基本表3修改基本表结构增加一个新列:ALTERTABLE表名ADD列名类型修改一个新列ALTERTABLE表名ALTERCOLUMN列名类型删除一个列ALTERTABLE表名DROPCOLUMNf24删除基本表基本语句如下:DROPRTABLE表名......
  • 在EasyGBS数据库中怎么样存储视频,有哪些方式储存视频
    EasyGBS平台是一款安防视频监控/视频集中存储/云存储/磁盘阵列平台,具有强大的可拓展性和灵活的视频能力,轻便易部署。该平台支持国标GB28181、RTSP/Onvif、RTMP等主流标准协议,以及海康Ehome、海大宇等设备的SDK接入。有两种方法:1、在数据库中建立相关表保存视图的相对路径即可调......
  • mysql 复制表数据和uuid 生成
    复制表结构及数据到新表CREATETABLE新表SELECT*FROM旧表这种方法会将旧表中所有的内容都拷贝过来,当然我们可以用deletefrom新表;来删除。不过这种方法的一个最不好的地方就是新表中没有了旧表的primarykey、Extra(auto_increment)等属性。需要自己添加uuid生成selectrep......
  • 和鲸协办:中国综合社会调查 CGSS 数据分析与可视化大赛一触即发!
    作为我国最早且具全国性、综合性、连续性的学术社会调查项目,中国综合社会调查(ChineseGeneralSocialSurvey,CGSS)始于2003年,由中国人民大学中国调查与数据中心(NSRC)常年负责。2003至2023年间,CGSS共进行十六次年度调查,在全国范围内成功以问卷访问172036人。依据章程,各年度数......
  • 人人都能学的数据分析体系课(16周完整版+源码+PDF课件)
    点击下载——人人都能学的数据分析体系课(16周完整版+源码+PDF课件) 提取码:4vxi人人都能学的数据分析(16周完整版+源码+PDF课件),其中包含Excel从入门到表格分析、从0开始学SQL、数据可视化利器Tableau、Python实现数据分析、Python实现网络爬虫、构建用户画像、预售销售额、调整运......
  • 1-03-物理层和数据链路层的基本概念
    物理层的基本概念:传输媒体大致可以被分为两类:导引型传输媒体:1)双绞线2)同轴电缆3)光纤非导引型传输媒体:1)微波通信(2~40GHz) 物理层协议的主要任务: 数据链路层概述:数据链路层在网络结构体系中所处的地位:链路,数据链路和帧的概念:计算机中的网络适配器(俗称网卡)和其相应......
  • 不要使用count(列名)或count(常量)来替代count(*),count(*)就是SQL92定义的标准统计行
    慢SQL治理经验总结https://mp.weixin.qq.com/s/LZRSQJufGRpRw6u4h_Uyww慢SQL治理经验总结原创 药糖 大淘宝技术 2023-09-1816:20 发表于浙江 在过去两年的工作中,我们团队曾负责大淘宝技术的慢SQL治理工作,作为横向的数据安全治理平台,如何快速准确地发现部门内所有应用......
  • KingbaseES数据库适配Activiti7 didn't put process definition问题处理过程
    一、Activiti介绍Activiti是一个轻量级的java开源BPMN2工作流引擎.目前以升级至7.x,支持与springboot2.x集成.二、项目环境SpringBoot版本2.2.5Activiti版本7.1.x源数据库:MySQL5.7目标数据库:KinbgaseESV008R006C007B0024JDBC驱动:Postgre形态的JDBC驱动,postgresql-42.......