南大通用数据库-Gbase-8a-学习-21-Oracle到Gbase8a迁移工具orato8a
orato8a 是一个可以快速、高效地从 oracle 数据库系统中抽取数据,并将数据保存到指定文件中的专用工具。并且 orato8a 还提供查询语句导出和全表导出两种方式,其中全表导出的登录用户需要对 dba_extents、dba_objects和 dba_tables 这三张表有 select 权限。
·
一、测试环境
名称 | 值 |
---|---|
cpu | Intel® Core™ i5-1035G1 CPU @ 1.00GHz |
操作系统 | CentOS Linux release 7.9.2009 (Core) |
内存 | 4G |
逻辑核数 | 3 |
Gbase-8a节点-IP | 192.168.142.12 |
Oracle节点-IP | 192.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
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
四、测试步骤(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
2、赋予权限
[root@czg1 pkg]# chown -R oracle:oinstall output/
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.
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
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)
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)
五、测试步骤(orato8a部署在其他服务器上)
1、创建用户
[root@czg1 pkg]# useradd czg
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)
)
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 9月 8 14:32 instantclient_11_1
drwxr-xr-x 2 czg czg 332 9月 8 14:32 instantclient_11_2
-rw-r--r-- 1 czg czg 60704657 9月 8 14:27 instantclient-basic-linux.x64-11.2.0.4.0.zip
-rw-r--r-- 1 czg czg 834491 9月 8 14:28 instantclient-sqlplus-linux.x64-11.2.0.4.0.zip
-rw-r--r-- 1 czg czg 607351 9月 8 14:29 sdk-11.1.0.7.0-linux-x86_64.zip
-rw-r----- 1 czg czg 520 9月 8 14:48 tnsnames.ora
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
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.
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
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)
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条内容
所有评论(0)