【AntDB数据库】AntDB数据库迁移(二)

2023-11-10

导出导入数据

导出数据

编写配置文件

ora2pg 导出数据的配置文件如下:

cat > shcrm_so1_data.conf << EOF
ORACLE_HOME /home/postgres/oracle/instantclient_11_2  
ORACLE_DSN  dbi:Oracle:host=10.10.141.225;sid=shcrm1  
ORACLE_USER so1  
ORACLE_PWD  Csxt-123  
SCHEMA  so1 
TYPE COPY 
OUTPUT_DIR  /adbdata/ora2pg/data/so1
USER_GRANTS 1
FILE_PER_TABLE 1
SPLIT_FILE 1
DISABLE_SEQUENCE 1
STOP_ON_ERROR 0
ORACLE_COPIES 10
DATA_LIMIT  100000
SPLIT_LIMIT  10000000
WHERE expire_date >= to_date('2015/06/01 00:00:00','yyyy/MM/dd hh24:mi:ss') and expire_date < to_date('2016/07/01 00:00:00','yyyy/MM/dd hh24:mi:ss')
EOF

OUTPUT_DIR 指定了导出sql文件的存放目录。

WHERE 指定了导出时候对数据的过滤条件,如果需要全表数据导出,则去掉该参数。

创建相关目录

mkdir -p /adbdata/ora2pg/data/{so1,so2,party}/import_done

import_done 存放各个用户下,导入完成后的sql文件。

导出数据

在迁移涉及到的表数量比较多的时候,建议采用表的方式来记录迁移表的信息,方便查询表的迁移状态。

创建配置表

创建配置表用来存放迁移表的信息:

create table t_ora2adb_tableinfo
(
dbname text,
owner text,
tablename text,
batch_tag text,
o_cnt numeric,
a_cnt numeric,
o_cnt_time timestamp,
a_cnt_time timestamp,
o_minus_a numeric,
a_minus_o numeric,
o_size_m numeric,
a_size_m numeric,
is_export numeric,
export_time timestamp,
where_filter text
);

初始化配置表

insert into t_ora2adb_tableinfo
(dbname,owner,tablename,is_export)
select 'shhis',a.tableowner,a.tablename,0
from pg_tables a
where 1=1
and a.tableowner not in ('postgres','') 
and a.schemaname not in ('public','pg_catalog','information_schema')
and a.tablename like 'sec%';
;

更新配置表字段

字段is_export的值在初始化的时候设置为0,需要更新该字段为1或者更新其他字段,则通过update语句来操作:

update t_ora2adb_tableinfo set xx=xx where xx ..

编写导出脚本

vi ora2pg_export.sh
#!/bin/bash 
# ora2pg export 
# ora2pg config: shhis_data.conf
# sh ora2pg_export.sh owner tablenamelike tablecnt
# sh ora2pg_export.sh configfile username tablename  logdir tablecnt
 
function check_ora_conn
{
conn_tag=`sqlplus -S /nolog <<EOF
set heading off feedback off pagesize 0 verify off echo off
conn $oraconn
select * from dual;
exit
EOF`
if [ "x$conn_tag" = "x" ]; then
  echo "the oracle connection is invalid!"  
  exit(0)
else
  echo "the oracle connection is ok!" 
fi
}

function check_ora2pg
{
  which ora2pg
  if [ $? -eq 0 ]; then
        return 0
  else
        echo "ora2pg execute program not find!"
        exit        
  fi
}

function check_ora2pgcfg
{
  if [ -f "$configfile" ]; then
        return 0
  else
        echo "ora2pg config file does not exist!"
        exit        
  fi
}

function init_tablecnt
{
if [ "x$tablecnt" = "x" ]; then
  echo "tablecnt apply init value:10"
  tablecnt=10
fi
}

function ora2pg_background
{
selectsql="select tablename 
from t_ora2adb_tableinfo 
where dbname='$dbname' 
and owner='$tableowner' 
and tablename like '%$tablelike%'
and is_export=0
limit $tablecnt;"
tables=(`$psqlconn -c "$selectsql"`)
for t in ${tables[@]}
do
 updatesql="update t_ora2adb_tableinfo set is_export=1,export_time=now() where owner='$tableowner' and tablename='$t'"
 $psqlconn -c "$updatesql"
 ora2pg -c $configfile -n $tableowner -a"$t" -d > ${logdir}/"ora2pg_"$tableowner_$t.log 2>&1 &
 echo "ora2pg to export table: $tableowner.$t"
done
}
# init parameter
configfile=$1
username=$2
tablelike=$3
logdir=$4
tablecnt=$5
tableowner="$username"
dbname="shcrm1"
# Make sure this option is correct,If the oracle database is not connected, the program will exit 
oraconn="$username/Csxt-123@10.10.141.225/shcrm"
psqlconn="psql -d $dbname -U $tableowner -q -t"
check_ora2pg
check_ora2pgcfg
init_tablecnt
ora2pg_background

执行导出操作

sh ora2pg_export.sh /adbdata/ora2pg/conf/shcrm_so1_data.conf so1 ord_user_ext_f_210_201612 /adbdata/ora2pg/log 3

AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔电信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【AntDB数据库】AntDB数据库迁移(二) 的相关文章

随机推荐

  • 理想的程序员

    http blog jobbole com 84747 我算是靠坑蒙拐骗进了程序员的门 然后一路狂奔 26岁之前几乎没有任何写代码的经验 研究生毕业却意外选择了一家不可能提供培训的初创公司 在每日担忧公司倒闭 害怕被炒鱿鱼以及同事冷落白眼的
  • 偶写的第一个CUDA程序——向量加法

    这个CUDA工程包括了三个文件 一个是makefile 一个是vector add cu 用于联系主机端与设备端 最后是vector add kernel cu 这个就是设备端要执行的真正的CUDA程序 首先看看makefile Add s
  • HarmonyOS开发:探索动态共享包的依赖与使用

    前言 所谓共享包 和Android中的Library本质是一样的 目的是为了实现代码和资源的共享 在HarmonyOS中 给开发者提供了两种共享包 HAR Harmony Archive 静态共享包 和HSP Harmony Shared
  • Can you solve this equation?(二分)

    Problem Description Now given the equation 8 x 4 7 x 3 2 x 2 3 x 6 Y can you find its solution between 0 and 100 Now ple
  • 解决MDK通过JLink或ST-Link烧写程序之后必须断电才可以运行的问题

    问题描述 通过JLink或ST Link烧写完程序之后发现程序不运行 断电重启程序又能跑起来 解决方法 1 打开魔术棒 2 进入Debug界面 点击Setting 3 进入Cortex M Target Driver Setup界面 将 R
  • 详解Hpptclient 与RestTemplate 的Get与Post请求

    spring中最长见得两种请求方式 Get与Post 有些时候我们需要跨域去访问其他服务上的接口 此时就用到HtppClient与RestTemplate 重点讲一下RestTemplate 一 HttpClient 1 引入相关依赖包 m
  • 十、软考2013年下半年软件设计师易错题整理

    十 软考2013年下半年软件设计师易错题整理 文章目录 十 软考2013年下半年软件设计师易错题整理 错题1 错题2 错题3 错题4 错题5 错题6 错题7 错题8 错题9 错题10 错题11 错题12 错题13 错题14 错题15 错题1
  • 单端反激(Flyback)变换器的工作原理

    反激 Flyback 型电路的结构见图2 40 该电路可以看成是将boost buck电路中的电感换成相互耦合的电感N1和N2得到的 因此反激型电路中的变压器在工作中总是经历着储能一放电的过程 电流工作在连续模式CCM 它与正激电路不同的地
  • urdf to webots

    1 webots 模型 文件地址 software workspace git leap model 文件树结构 controller是仿真文件的控制程序 agent revision是正常的控制程序 my controller是调试控制程
  • 利用ScheduledThreadPoolExecutor定时执行任务

    最近时间好忙 终于抽出时间来写一篇博客了 想了想 把之前遇到的一个小bug分享一下吧 之前在做时钟插件时候 我用到了一个定时器 即大家常用的TimerTask 但它总是意外的停止 就是我开启了一个定时器 每一秒都会走run方法 有时候定时器
  • AD 每次更新PCB时,总有一个元件被删除,再添加

    问题如标题所述 在网上找到几种方法 试过最终可行方法如下 在原理图中双击出问题的元件 弹出窗口中点Reset按钮 改一下该元件的Unique ID 然后再更新PCB 就不会出现这样情况了 出错的元件 每个都要改一下
  • 2021非常全的接口测试面试题及参考答案

    一 前言 接口测试最近几年被炒的火热了 越来越多的测试同行意识到接口测试的重要性 接口测试为什么会如此重要呢 主要是平常的功能点点点 大家水平都一样 是个人都能点 面试时候如果问你平常在公司怎么测试的 你除了说点点点 还能说什么呢 无非就是
  • 精品,阿里P8爆款《SpringBoot+vue全栈开发实战项目》笔记太香了,先睹为快

    前言 Spring 作为一个轻量级的容器 在JavaEE开发中得到了广泛的应用 但是Spring 的配置繁琐臃肿 在和各种第三方框架进行整合时代码量都非常大 并且整合的代码大多是重复的 为了使开发者能够快速上手Spring 利用Spring
  • 交互计算-eval,input,print,range,join,map

    描述 编写一个简单的交互计算机 输入表达式 给出结果 eval 函数 eval 允许将任何字符串评估为Python表达式 这是个非常强大的功能 因为它允许在运行时动态生成和执行代码 它可以接受任意表达式 例如 gt gt gt eval
  • sql not in 查询结果为空解决

    使用下列sql语句进行查询时 发现出来的结果为0 select count distinct id from result where date 20221205 and us id xxx and id not in select dis
  • 简单介绍一下c++正则表达式

    目录 1 正则表达式的需求 1 1普通字符 1 2特殊字符 1 3限定字符 2 std regex极其相关 2 1regex match 2 2regex replace and regex search 3 常用的regex 3 1检验数
  • mysql5.7版本没有over()函数

    mysql5 7版本没有over 函数 两个小时血的教训
  • 入侵检测与数字取证-期末复习

    ids复习 idshwk1 alert tcp any any gt any 8080 flags A content I 20 am 20 IDS 20 Homework 20 I offset 99 depth 101 msg TEST
  • Python实现寻找二叉树中最近的公共祖先

    Python实现寻找二叉树中最近的公共祖先 在二叉树中 我们可以定义节点的父节点为其直接连接上层节点的边 无法访问父节点信息的情况下如何获取两个节点的最低公共祖先呢 我们可以采用递归遍历二叉树的方式进行查找 首先 我们需要定义一个函数来检查
  • 【AntDB数据库】AntDB数据库迁移(二)

    导出导入数据 导出数据 编写配置文件 ora2pg 导出数据的配置文件如下 cat gt shcrm so1 data conf lt lt EOF ORACLE HOME home postgres oracle instantclien