datax源端最小化权限创建Oracle用户

前言:在使用datax抄写数据的时候,需要将源端的用户权限最小化,比如,只需要抄写T1表,那么我只将T1表的SELECT权限授权给dataxuser用户

https://www.cndba.cn/hbhe0316/article/4928

1.在源端创建用户并授权

SQL> show pdbs;
SQL> alter session set container=hbhe;
SQL> select count(*) from hbhe.T1

  COUNT(*)
----------
     100

SQL> create user dataxuser identified by wwwwww;
SQL> grant connect, resource to dataxuser;
SQL> grant select on HBHE.T1 to datauser;
SQL> alter user dataxuser identified by passw0rd;

2.编写oracle to oracle的json文件

https://www.cndba.cn/hbhe0316/article/4928
https://www.cndba.cn/hbhe0316/article/4928
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "oraclereader", 
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:oracle:thin:@IP:PORT/dbname"], 
                                "querySql": ["select * FROM schema.table where 1=1"],
                            }
                        ], 
                        "password": "password", 
                        "username": "username"
                    }
                }, 
                "writer": {
                    "name": "oraclewriter", 
                    "parameter": {
                        "column": ["*"], 
            "batchWriteCount": "10000",
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:oracle:thin:@IP:Port/dbname", 
                                "table": ["schema.table"]
                            }
                        ], 
                        "password":"password", 
                        "preSql": ["truncate table schema.table"], 
                        "username":"username"
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "36",
            }
        }
    }
}

3.这里有个乌龙,将preSql写成postSql,导致执行datax后,日志显示已经抄写完成,但是目标端的数据一直是空的。
在datax官网找到答案:https://github.com/alibaba/DataX/blob/master/postgresqlwriter/doc/postgresqlwriter.mdhttps://www.cndba.cn/hbhe0316/article/4928https://www.cndba.cn/hbhe0316/article/4928

postSql
描述:写入数据到目的表后,会执行这里的标准语句。(原理同 preSql )
必选:否
默认值:无https://www.cndba.cn/hbhe0316/article/4928https://www.cndba.cn/hbhe0316/article/4928

preSql
描述:写入数据到目的表前,会先执行这里的标准语句。如果 Sql 中有你需要操作到的表名称,请使用 @table 表示,这样在实际执行 Sql 语句时,会对变量按照实际表名称进行替换。比如你的任务是要写入到目的端的100个同构分表(表名称为:datax_00,datax01, … datax_98,datax_99),并且你希望导入数据前,先对表中数据进行删除操作,那么你可以这样配置:”preSql”:[“delete from @table”],效果是:在执行到每个表写入数据前,会先执行对应的 delete from 对应表名称
必选:否
默认值:无

https://www.cndba.cn/hbhe0316/article/4928
https://www.cndba.cn/hbhe0316/article/4928

4.编写脚本

https://www.cndba.cn/hbhe0316/article/4928
#!/bin/sh
python /datax/bin/datax.py /datax/job/t1.json >> /datax/datax_shot.log 2>&1

5.将datax加入crontab -e中,每隔两小时一次

[dataxuser@test01 ~]$ crontab -l
* */2 * * * /datax/bin/fullSync.sh

版权声明:本文为博主原创文章,未经博主允许不得转载。

DATAX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值