• 南大通用数据库-Gbase-8a-学习-21-Oracle到Gbase8a迁移工具orato8a


    一、测试环境

    名称
    cpuIntel® Core™ i5-1035G1 CPU @ 1.00GHz
    操作系统CentOS Linux release 7.9.2009 (Core)
    内存4G
    逻辑核数3
    Gbase-8a节点-IP192.168.142.12
    Oracle节点-IP192.168.142.11
    Gbase-8a数据库版本8.6.2.43-R33.132743
    Oracle数据库版本Release 11.2.0.1.0 Production

    二、介绍

    1、简介

    orato8a 是一个可以快速、高效地从 oracle 数据库系统中抽取数据,并将数据保存到指定文件中的专用工具。并且 orato8a 还提供查询语句导出和全表导出两种方式,其中全表导出的登录用户需要对 dba_extents、dba_objects和 dba_tables 这三张表有 select 权限。

    2、语法

    ./orato8a parameter_1 parameter_2 …… parameter_n
    
    • 1

    parameter_1:orato8a 的参数,一个 orato8a 后可以使用多个参数,参数可以使用全称格式,也可以使用简称格式。

    3、参数

    参数描述
    user指定连接 oracle 数据库的相关参数,包括:用户名、密码、oracle 数据库所在服务器的 IP、oracle 监听端口号和 oracle 实例名。
    query指定导出数据所使用的查询 SQL 语句。由于查询语句常有空格,该参数在指定时,需要用双引号限定。该参数不能与 parallel 参数同时使用。另外,查询语句应该为一个符合 oracle 语法的 SQL,并且只返回一组结果集。示例:–query=“select * from lineorder”
    table_name指定表名,该参数不能与 query 参数同时使用。
    owner在全表导出时,指定被导出表的隶属的用户名,该参数不能与 query 参数同时使用。如果不指定该 参数,默认为登录用户。
    file该参数可以指定为一个包含绝对路径的文件名,也可以指定为一个包含相对路径的文件名。当该参数指定为一个不包含路径的文件名时,该文件被保存在当前路径中。
    format指定导出数据文件的数据格式。当设置为 3 时,导出数据为无转义的文本格式;
    field功能:指定字段分隔符。参数值可使用字符本身、转义符或十六进制方式表示。当使用 format=3 导出时,必须设置该参数的值。
    string_qualifier指定字段包围符,该参数只在 format=3 时有效。如果设定字段包围符,所有字段都会加上字段包围符。如果字段内容与字段包围符内容有重复的部分,则使用字段包围符对字段内容进行转义。
    line_separator该参数用于设定行分隔符。只在 format=3 时,该参数有效。
    null_value该参数用于设定 NULL 值。只在 format=3 时,该参数有效。
    parallel指定并行度。此模式下,需要使用 table_name 参数指定表名,不能使用query 参数,也就是意味着,使用并行模式,只能全表导出。
    help该参数用于查看 orato8a 命令参数的帮助信息。
    version该参数用于查看 orato8a 工具的版本信息。

    4、注意点

    (1)最好安装在Oracle服务器。

    (2)如果不安装在数据库服务器上,需要安装 oracle客户端,配置tnsnames.ora。

    (3)需要用oracle用户运行迁移工具orato8a(orato8a和oracle部署在同一台时)。

    三、oracle 11G客户端安装包

    如果测试第五大步需要下载。

    链接:https://pan.baidu.com/s/1rasI0FxPi5jZ6XhB-nPiCQ 
    提取码:eysi
    
    • 1
    • 2

    四、测试步骤(orato8a部署在Oracle服务器上)

    1、Oracle服务器解压工具orato8a

    [root@czg1 pkg]# tar -xvf orato8a-9.5.3.27.16-redhat7-x86_64.tar.bz2 
    output/orato8a
    output/orato8a.xml
    
    • 1
    • 2
    • 3

    2、赋予权限

    [root@czg1 pkg]# chown -R oracle:oinstall output/
    
    • 1

    3、oracle端测试数据

    SQL> desc L_PTY_CUS_POLICY_RENEWAL_0714;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     START_DATE                                         DATE
     PERSON_ID                                          NUMBER(38)
    
    SQL> select * from L_PTY_CUS_POLICY_RENEWAL_0714;
    
    START_DATE           PERSON_ID
    ------------------- ----------
    2022-08-15 00:00:00          1
    2022-08-14 00:00:00          1
    2022-08-13 00:00:00          1
    2022-08-12 00:00:00          1
    2022-08-15 00:00:00          2
    2022-08-14 00:00:00          2
    2022-08-13 00:00:00          2
    2022-08-12 00:00:00          2
    
    8 rows selected.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    4、orato8a抽数据写到文本

    [oracle@czg1 output]$ ./orato8a --user='czg/qwer1234@orcl' --table_name=L_PTY_CUS_POLICY_RENEWAL_0714 --file=/home/oracle/L_PTY_CUS_POLICY_RENEWAL_0714.txt --field="|" --format=3 --parallel=2
    export columns: 2
    export rows: 8
    export time: 0 sec
    process ok!
    
    [oracle@czg1 output]$ cat /home/oracle/L_PTY_CUS_POLICY_RENEWAL_0714.txt 
    2022-08-15 00:00:00|1
    2022-08-14 00:00:00|1
    2022-08-13 00:00:00|1
    2022-08-12 00:00:00|1
    2022-08-15 00:00:00|2
    2022-08-14 00:00:00|2
    2022-08-13 00:00:00|2
    2022-08-12 00:00:00|2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    5、Gbase8a创建测试表

    gbase> create table L_PTY_CUS_POLICY_RENEWAL_0714(START_DATE timestamp,PERSON_ID DOUBLE);
    Query OK, 0 rows affected (Elapsed: 00:00:00.10)
    
    • 1
    • 2

    6、文本数据导入Gbase8a

    gbase>  LOAD DATA INFILE 'sftp://root:qwer1234@192.168.142.11//home/oracle/L_PTY_CUS_POLICY_RENEWAL_0714.txt' into table L_PTY_CUS_POLICY_RENEWAL_0714 DATA_FORMAT 3 FIELDS TERMINATED BY '|' MAX_BAD_RECORDS 0;
    Query OK, 8 rows affected (Elapsed: 00:00:00.84)
    Task 393226 finished, Loaded 8 records, Skipped 0 records
    
    gbase> select * from L_PTY_CUS_POLICY_RENEWAL_0714;
    +---------------------+-----------+
    | START_DATE          | PERSON_ID |
    +---------------------+-----------+
    | 2022-08-15 00:00:00 |         1 |
    | 2022-08-14 00:00:00 |         1 |
    | 2022-08-13 00:00:00 |         1 |
    | 2022-08-12 00:00:00 |         1 |
    | 2022-08-15 00:00:00 |         2 |
    | 2022-08-14 00:00:00 |         2 |
    | 2022-08-13 00:00:00 |         2 |
    | 2022-08-12 00:00:00 |         2 |
    +---------------------+-----------+
    8 rows in set (Elapsed: 00:00:00.00)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    五、测试步骤(orato8a部署在其他服务器上)

    1、创建用户

    [root@czg1 pkg]# useradd czg
    
    • 1

    2、拷贝tnsnames.ora

    拷贝tnsnames.ora到移工具orato8a部署节点

    [root@czg1 ~]# scp /u01/app/oracle/product/11.2.0/network/admin/tnsnames.ora czg0:/opt/pkg/OracleClient
    
    [czg@czg0 OracleClient]$ cat tnsnames.ora 
    # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.142.11)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    
    gbase8a =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.142.11)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = gbase8a)
        )
     (HS = OK)
      )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    3、安装oracle 客户端安装包

    [root@czg0 OracleClient]# unzip instantclient-basic-linux.x64-11.2.0.4.0.zip 
    
    [root@czg0 OracleClient]# unzip instantclient-sqlplus-linux.x64-11.2.0.4.0.zip
    
    [root@czg0 OracleClient]# unzip sdk-11.1.0.7.0-linux-x86_64.zip 
    
    [czg@czg0 OracleClient]$ ll
    总用量 60700
    drwxr-xr-x 3 czg czg       17 98 14:32 instantclient_11_1
    drwxr-xr-x 2 czg czg      332 98 14:32 instantclient_11_2
    -rw-r--r-- 1 czg czg 60704657 98 14:27 instantclient-basic-linux.x64-11.2.0.4.0.zip
    -rw-r--r-- 1 czg czg   834491 98 14:28 instantclient-sqlplus-linux.x64-11.2.0.4.0.zip
    -rw-r--r-- 1 czg czg   607351 98 14:29 sdk-11.1.0.7.0-linux-x86_64.zip
    -rw-r----- 1 czg czg      520 98 14:48 tnsnames.ora
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4、配置环境变量

    [czg@czg0 OracleClient]$ cat /home/czg/.bashrc 
    # .bashrc
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi
    
    # Uncomment the following line if you don't like systemctl's auto-paging feature:
    # export SYSTEMD_PAGER=
    
    # User specific aliases and functions
    
    
    export SQLPATH=/opt/pkg/OracleClient
    export TNS_ADMIN=/opt/pkg/OracleClient
    export LD_LIBRARY_PATH=/opt/pkg/OracleClient/instantclient_11_2/:$LD_LIBRARY_PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5、oracle端测试数据

    SQL> desc L_PTY_CUS_POLICY_RENEWAL_0714;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     START_DATE                                         DATE
     PERSON_ID                                          NUMBER(38)
    
    SQL> select * from L_PTY_CUS_POLICY_RENEWAL_0714;
    
    START_DATE           PERSON_ID
    ------------------- ----------
    2022-08-15 00:00:00          1
    2022-08-14 00:00:00          1
    2022-08-13 00:00:00          1
    2022-08-12 00:00:00          1
    2022-08-15 00:00:00          2
    2022-08-14 00:00:00          2
    2022-08-13 00:00:00          2
    2022-08-12 00:00:00          2
    
    8 rows selected.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    6、orato8a抽数据写到文本

    [czg@czg0 output]$ ./orato8a --user='czg/qwer1234@orcl' --table_name=L_PTY_CUS_POLICY_RENEWAL_0714 --file=/home/czg/L_PTY_CUS_POLICY_RENEWAL_0714.txt --field="|" --format=3 --parallel=2
    export columns: 2
    export rows: 8
    export time: 0 sec
    process ok!
    
    [czg@czg0 output]$ cat /home/czg/L_PTY_CUS_POLICY_RENEWAL_0714.txt 
    2022-08-15 00:00:00|1
    2022-08-14 00:00:00|1
    2022-08-13 00:00:00|1
    2022-08-12 00:00:00|1
    2022-08-15 00:00:00|2
    2022-08-14 00:00:00|2
    2022-08-13 00:00:00|2
    2022-08-12 00:00:00|2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    7、Gbase8a创建测试表

    gbase> create table L_PTY_CUS_POLICY_RENEWAL_0714(START_DATE timestamp,PERSON_ID DOUBLE);
    Query OK, 0 rows affected (Elapsed: 00:00:00.10)
    
    • 1
    • 2

    8、文本数据导入Gbase8a

    gbase> LOAD DATA INFILE 'sftp://root:qwer1234@192.168.142.10//home/czg/L_PTY_CUS_POLICY_RENEWAL_0714.txt' into table L_PTY_CUS_POLICY_RENEWAL_0714 DATA_FORMAT 3 FIELDS TERMINATED BY '|' MAX_BAD_RECORDS 0;
    Query OK, 8 rows affected (Elapsed: 00:00:01.01)
    Task 4063237 finished, Loaded 8 records, Skipped 0 records
    
    gbase> select * from L_PTY_CUS_POLICY_RENEWAL_0714;
    +---------------------+-----------+
    | START_DATE          | PERSON_ID |
    +---------------------+-----------+
    | 2022-08-14 00:00:00 |         1 |
    | 2022-08-12 00:00:00 |         1 |
    | 2022-08-14 00:00:00 |         2 |
    | 2022-08-12 00:00:00 |         2 |
    | 2022-08-15 00:00:00 |         1 |
    | 2022-08-13 00:00:00 |         1 |
    | 2022-08-15 00:00:00 |         2 |
    | 2022-08-13 00:00:00 |         2 |
    +---------------------+-----------+
    8 rows in set (Elapsed: 00:00:00.01)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    【Excel】快速提取某个符号前面的数据内容
    实验(三):微程序计数器uPC实验
    教程 | Datavines 自定义数据质量检查规则(Metric)
    【滤波器】基于matlab实现微波带低通高通带通滤波器设计
    浅谈查找算法
    vue项目打包优化
    一个简单的网页制作期末作业,学生个人html静态网页制作成品代码
    R语言生物群落(生态)数据统计分析与绘图
    09 呼吸灯
    CrossOver软件2023官方破解版本下载
  • 原文地址:https://blog.csdn.net/qq_45111959/article/details/126729416