OB逻辑导数

news/2024/9/20 18:53:06/文章来源:https://www.cnblogs.com/z-uncle/p/18367751

OB逻辑导数方式

  • outfile方式导出数据到文件、CSV
  • dbcat工具导出、导入数据
  • dataX工具导出数据(不介绍)
  • OB4.x新特性旁路导入数据<load data、insert (append) into select>
  • OMS工具数据导出、导入、增量数据准实时同步(单独篇章介绍)

存储过程造数据(oracle租户)

创建表
create table zhzbusi.t1(id int,name varchar2(299),enrollment_date date);
创建存储过程
CREATE OR REPLACE PROCEDURE add_data_to_t1(n IN INT) IS
i INT := 1;
BEGIN
WHILE i <= n LOOP
INSERT INTO zhzbusi.t1 (id, name, enrollment_date) VALUES (i, 'Name' || i, TO_DATE('2022-01-01', 'YYYY-MM-DD') + i);
i := i + 1;
END LOOP;
END;
/
DELIMITER ;
执行存储过程造10条数据
call add_data_to_t1(10);
commit;

使用OUTFILE语句导出数据到CSV

OB4.2官方文档资料

  • 管理员用户登录,确认租户的unite资源落位
select * from gv$ob_units;  ##sys用户登录oracle租户
select * from oceanbase.gv$ob_units;##root用户登录mysql租户

image

  • 修改secure_file_priv参数,允许导出文件到指定目录
ssh  admin@10.1.1.1  ###根据上一步查询出主机ip地址,登录任意一台主机。
obclient -S /home/admin/oceanbase/run/sql.sock -usys@zhz_oracle -p  ##sys用户使用socket方式本地登录zhz_oracle租户
show variables like 'secure_file_priv';  #默认是null;V4.2.0开始,null和空字符串,表示禁止导出文件。
SET GLOBAL secure_file_priv = "/";    ##修改导数文件路径 / 表示可以导出到任意路径
  • 重新登录,导出数据
obclient -h10.1.1.1 -P端口 -usys@zhz_oracle#***** -pselect id,name,enrollment_date into outfile '/data/1/zhzbusi_t2.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'LINES TERMINATED BY '\n'FROM zhzbusi.t2;
  • 登录10.1.1.1查看导出的数据
    再哪一个ip上修改的secure_file_priv参数,outfile就会导出到哪个ip上。

dbcat数据导出导入

  • dbcat源端目标端支持多种数据库之间逻辑导出导入,具体兼容数据库类型和版本,参考官方提供的对照清单。
  • 这里不赘述安装步骤,简单记录使用方法。
    dbcat官方文档使用手册
./dbcat convert    查看帮助命令
参数说明:
-H:数据库所在机器的IP地址
-P:数据库对外提供服务的监听端口
-u:dbcat连接数据库使用的用户
-p:dbcat用户连接数据库的密码
-service-name:oracle数据库的服务名
-D:被迁移的schema名称
--from:源数据库类型,默认oracle11g 即可
--to:目标数据库类型,oboracle2250 或 oboracle2270 指定其一即可
--all:所有数据库对象,如表、视图、函数、触发器、序列、同义词等
--table '\*':导出所有的表
--view '\*':导出所有的视图
--sequence '\*':导出所有的序列,sequence需要在上线当晚导出,避免current_value不一致
--synonym '\*':导出所有的同义词
--procedure '\*':导出所有的存储过程
--function '\*':导出所有的函数
--valid-only '\*':导出数据库中STATUS='VALID'的对象
--exclude-type 'TABLE':此参数和--all同步使用,表示导出除了TABLE类型以外的所有对象,值必须是大写

以oracle导出数据到OB(oracle租户)为例:
导出:导出aaaaa用户除表、索引以外所有的对象。

cd /docker/dbcat-1.8.0-SNAPSHOT/bin
./dbcat convert -H 10.1.1.1 -P 1521 -u aaaaa -p 密码 --service-name 服务名 -D 被迁移的schema名称 --from oracle11g --to oboracle2270 --all --exclude-type 'TABLE','INDEX'
##导出的文件默认存储在安装目录下的output目录下,按照时间创建目录,可以增加-f 指定文件输出目录。导出的对象按照对象类型生产相应的SQL文件。

image
导入:将序列导入OB

dbcat导出的是sql文件,直接将sql文件是OB中运行即可,如导入序列:
obclient -c -A -vv -hXXX.XXX.XX.XXX -P2883 -uSYS@AAAA#BBBBBBBBB -p"XXXXXX"  -e "source VIEW-schema.sql" > VIEW-XXXXX.log 2>&1

旁路导入

旁路导入是OB4.X版本新功能,在导入数据到数据库的时候,可以绕过SQL层,直接将数据写入到底层文件系统的data文件中,极大的提高数据导入效率。旁路导入会把所有的已有的数据都写一遍。如果原表的数据比较大,导入的数据比较少,可能不适合使用旁路导入。
目前 OceanBase 数据库支持以下语句进行旁路导入:

  • LOAD DATA /*+ direct */
  • INSERT /*+ append */ INTO SELECT

使用 LOAD DATA 语句旁路导入数据

使用限制

  • 不能两个语句同时写一个表,因为导入的过程中会先加表锁
  • 不支持在触发器(Trigger)使用。
  • 支持 lob 类型,但是性能比较差,lob 会走原来事务写入数据的路径。
  • 不能在多行事务中运行。

注意事项
为了提高数据导入速率,OceanBase 数据库在 LOAD DATA 操作中采用了并行设计。在该过程中,需要导入的数据被划分为多个子任务以并行方式执行,每个子任务都作为一个独立的事务进行处理,并且执行顺序是随机的。因此,需要注意以下事项:

  • 无法保证整体数据导入的原子性。
  • 对于无主键表来说,数据写入的顺序可能与文件中的数据顺序不一致。

语法

LOAD DATA /*+ direct(need_sort,max_error) parallel(N) */ INFILE 'file_name' ...
image

实验用例

设置secure_file_priv参数,这里不再赘述obclient [ZHZBUSI]> LOAD DATA /*+ direct(true,0) parallel(8) */INFILE '/data/1/zhzbusi_t1.csv' INTO TABLE zhzbusi.t2 FIELDS TERMINATED BY ','  OPTIONALLY ENCLOSED BY '"'      LINES TERMINATED BY '\n'  ;
Query OK, 100010 rows affected (13.007 sec)
Records: 100010  Deleted: 0  Skipped: 0  Warnings: 0
obclient [ZHZBUSI]>

使用INSERT /*+ append */ INTO SELECT语句旁路导入数据

正常情况下需要enable_parallel_dml+parallel(N) 配合才能使用并行DML。若表开启了并行查询,可以忽略。

obclient [ZHZBUSI]> set autocommit =on;     ###使用旁路导入要开启自动提交,会话级生效。
Query OK, 0 rows affected (0.006 sec)obclient [ZHZBUSI]> INSERT /*+ append enable_parallel_dml parallel(4) */ INTO  zhzbusi.t1  select * from zhzbusi.t2;
Query OK, 100020 rows affected (11.241 sec)
Records: 100020  Duplicates: 0  Warnings: 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/784700.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

泊松自助法(Poisson Bootstrap Sampling):大型数据集上的自助抽样

自助抽样可以根据收集的样本推断总体的统计特征(如均值、十分位数、置信区间)。泊松自助抽样(Poisson Bootstrap Sampling)是一种用于统计分析中的重采样技术,特别是在机器学习和数据科学中用于模型评估和误差估计。这种方法的一个特点是保留了样本中数据点出现的自然波动,…

实用的 IEC61850 装置设备模拟器

目录实用的 IEC61850 装置设备模拟器主要功能软件截图 实用的 IEC61850 装置设备模拟器 官网地址:https://www.redisant.cn/iec61850server IEC 61850 是国际电工委员会(IEC)制定的一项国际标准,主要用于电力系统自动化领域,特别是变电站自动化系统。IEC 61850 是电力系统…

阿里巴巴 普惠体 (字体推荐)

阿里巴巴 普惠体 (字体推荐) 字体下载: https://www.zitijia.com/i/250417369606802489.html--------------------------------------------- 生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯! https://pengchenggang.gitee.io/navigator/ SMART原…

islide插件导致的word或者wps崩溃

禁止加载项目 或者是修复islide插件(安装目录有islide tool工具可以检查修复)iSlideTools.Toolbox.exe

SFR算法原理分析

成像系统的解析力:摄像头最关键的指标之一。所有用户拿到一张照片的时候首选看到的是照片清楚不清楚,这里的清楚指的就是解析力。但是如果评价一个成像系统的解析力也是大家一直在探讨的问题。目前主流的办法主要有三种TV line检测、MTF检测以及FR检测。MTF:MTF是Modulation…

Semantic Kernel/C#:接入智谱AI的两种方式

本文介绍了Semantic Kernel/C#:接入智谱AI的两种方式。Semantie Kernel中对话请求默认是发送到OpenAI去的:其他与OpenAI对话请求接口兼任的模型平台,一般只需要修改host即可,如下所示:default:uriBuilder = new UriBuilder(request.RequestUri){// 这里是你要修改的 URLSc…

挑选最佳待办事项工具:专家指南

国内外主流的10款好用的待办事项软件对比:1.PingCode;2Worktile;3.微软To Do;4.MeisterTask;5.Airtable;6.Wrike;7.Basecamp;8.ProofHub;;9.嘀嗒清单(TickTick);10.番茄ToDo。在管理日常任务时,挑选一款合适的待办事项软件可能是个挑战,尤其是市面上有如此多的选…

EBS: FRM-41041: 找不到表模块:无效的ID

EBS: FRM-41041: 找不到表模块:无效的ID EBS: FRM-41041: 找不到表模块:无效的ID。FRM-41041: Cannot find form module: invalid ID. Cause: An invalid ID was passedtoa Built-in subprogram. Action: Verify that a proper call to FIND_FORM will be performed.Level…

钓鱼WLK

首先我们需要将交互键打开并设置你想要的快捷键。设置完成后 输入/console SoftTargetInteractArc 2/console SoftTargetInteractRange 30这2宏的作用可以允许你在不面向目标的情况下进行交互以及将交互半径增加到30码!这时候我们就可以进行钓鱼,以往我们钓鱼的步骤是中鱼,鼠…