本文主要介绍如何通过 DBcat 工具从原生 Oracle 11g 数据库中导出 Schema 定义。
适用版本
OceanBase 数据库 V2.X 及后续版本。
前提条件
本地环境已经安装了 DBcat。
[root@h07f02152.sqa.eu95:/home/admin/dbcat/dbcat-1.9.1-RELEASE]# tree -L 3 --filelimit 30 . ├── bin │ ├── dbcat │ ├── dbcat.bat │ └── dbcat-debug ├── conf │ ├── dbcat.properties │ └── logback.xml ├── docs │ ├── README.docx │ ├── README.md │ └── README.txt ├── LEGAL.md ├── lib [47 entries exceeds filelimit, not opening dir] ├── LICENSE ├── meta │ └── README ├── NOTICE └── output原生 Oracle 的 schema 如下。
SQL> conn test2/xxx Connected. SQL> select table_name from user_tables;返回结果如下。
TABLE_NAME ------------------------------ DBMS_TABCOMP_TEMP_UNCMP DRC_TXN_P_40YZVY84MR5S DRC_TXN_P_4C30HYX040O0 BMSQL_ITEM C1 B1 A1 BMSQL_CONFIG DRC_TXN_P_3IIRO06U8YIO DRC_TXN_P_3IPRE5A0RWXS DRC_TXN_P_3IUF3BHMMDA8 TABLE_NAME ------------------------------ DRC_TXN_P_3MAAWP2KATB4 T_PTEST T_TEST DRC_TXN_P_3UMKQYCRJFOG DRC_TXN_P_3UMNL0QRILPC DRC_TXN_P_3UN0873GKNXC DRC_TXN_P_4BZ4CM3JQVA8 LIST_TEST BMSQL_STOCK BMSQL_OORDER BMSQL_WAREHOUSE TABLE_NAME ------------------------------ BMSQL_ORDER_LINE BMSQL_NEW_ORDER BMSQL_DISTRICT BMSQL_CUSTOMER 26 rows selected.
操作步骤
配置好环境变量
JAVA_HOME或者JRE_HOME。export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.1.alios7.x86_64/jre通过 DBCat 工具批量导出 Oracle 数据库的 schema 定义。
./dbcat convert -H 127.x.x.x -P 1521 -u test2 -p xxx --service-name helowin -D TEST2 --from oracle11g --to oboracle322 --all其中,各参数说明如下表所示。
参数 说明 -H 主机地址 IP -P Oracle 数据库得端口号 -u 连接数据库的用户名 -p 连接数据库的密码 --server-name 连接 Oracle 数据库需要提供服务名 -D 连接的数据库名 --from Oracle 数据库版本 --to 转换成 OceanBase 数据库 Oracle 模式版本 导出结果如下。
[root@h07f02152.sqa.eu95:/home/admin/dbcat/dbcat-1.9.1-RELEASE/output/dbcat-2023-05-31-171933/TEST2]# pwd /home/admin/dbcat/dbcat-1.9.1-RELEASE/output/dbcat-2023-05-31-171933/TEST2 [root@h07f02152.sqa.eu95:/home/admin/dbcat/dbcat-1.9.1-RELEASE/output/dbcat-2023-05-31-171933/TEST2]# ll total 52 -rw-r--r-- 1 root root 170 Jun 1 09:30 PROCEDURE-schema.sql -rw-r--r-- 1 root root 238 Jun 1 09:30 FUNCTION-schema.sql -rw-r--r-- 1 root root 81 Jun 1 09:30 TYPE-schema.sql -rw-r--r-- 1 root root 39555 Jun 1 09:30 TABLE-schema.sql
说明
添加了 --all 以后,默认会把所有的对象(包括 UDT、UDF、存储过程等等)都导出来的;如果不加 --all 的话,默认只会导出 Table 和 View。