既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
select force_logging,supplemental_log_data_min from v$database;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030085249209.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
当显示NO的时候表示没有开启,需要调整
* 开启数据库的辅助日志和补充日志
开启强制日志后数据库会记录除临时表空间或临时回滚段外所有的操作,命令:
alter database force logging;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030085345223.png#pic_center)
开启辅助日志命令:
alter database add supplemental log data;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030085417263.png#pic_center)
开启主键附加日志命令:
alter database add supplemental log data (primary key) columns;
开启全列附加日志命令:
alter database add supplemental log data (all) columns;
* 检查数据库是否成功开启辅助日志和补充日志
执行SQL语句验证:
select force_logging,supplemental_log_data_min from v$database;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030085535667.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
当显示为YES的时候表示开启成功。
### 7.2 安装OGG源端
#### 7.2.1 解压和安装OGG源端软件包
1. 创建OGG源端的目录,使用root用户创建:
mkdir /u01/app/ogg/src
2. 添加OGG源端的目录到oracle用户的环境变量中(需要切换到oracle用户操作)
su - oracle
vim ~/.bash_profile
export OGG_SRC_HOME=/u01/app/ogg/src
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
source ~/.bash_profile
退出oracle用户shell命令:
exit
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030085832444.png#pic_center)
3. 解压OGG源端软件
OGG源端的软件包是V34339-01.zip,存放在/export/softwares/oracle/ogg目录下。需要使用root用户解压
cd /export/softwares/oracle/ogg
创建src文件夹是用来存放解压后的OGG源端软件
mkdir /export/softwares/oracle/ogg/src/
解压OGG源端软件到src文件夹下
unzip /export/softwares/oracle/ogg/V34339-01.zip -d /export/softwares/oracle/ogg/src/
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090017446.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
cd /export/softwares/oracle/ogg/src/
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103009004974.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
fbo\_ggs\_Linux\_x64\_ora11g\_64bit.tar文件才是OGG源端的软件包,解压该文件到/u01/app/ogg/src目录下,执行命令:
tar -xf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/app/ogg/src
4. 配置/u01/app/ogg/src目录及其所有文件的权限
使用root用户执行授权命令:
chown -R oracle:oinstall /u01/app/ogg/src
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090207303.png#pic_center)
可以看到/u01/app/ogg/目录下的src属于oracle用户和oinstall组
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090230853.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
可以看到/u01/app/ogg/src目录下的所有文件都属于oracle用户和oinstall组
#### 7.2.2 在Oracle中创建OGG相关的用户和表空间
创建表空间在磁盘中的物理路径(需要到root用户操作)
mkdir -p /u01/app/oracle/oggdata/orcl/
chown -R oracle:oinstall /u01/app/oracle/oggdata/orcl
进入sqlplus
切换到oracle用户:
su - oracle
登录sqlplus:sqlplus “/as sysdba”
创建oggtbs表空间
create tablespace oggtbs datafile ‘/u01/app/oracle/oggdata/orcl/oggtbs.dbf’ size 500M autoextend on;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090354775.png#pic_center)
创建ogg用户(用户名和密码都是ogg)
create user ogg identified by ogg default tablespace oggtbs;
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103009044060.png#pic_center)
赋予ogg用户dba权限
grant dba to ogg;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090529618.png#pic_center)
#### 7.2.3 OGG源端初始化
使用oracle用户登录源端OGG的命令行中
su – oracle
cd $OGG_SRC_HOME
./ggsci
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090610223.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
初始化源端OGG目录
注意:如果不在OGG\_SRC\_HOME下,初始化OGG目录时会报错
create subdirs
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090653353.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
退出OGG命令行客户端:exit
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090727988.png#pic_center)
检查源端OGG初始化后的目录
初始化完成后,可以查询在$OGG\_SRC\_HOME下是否存在dirchk、dirdat、dirdef、dirjar、dirout、dirpcs、dirprm、dirrpt、dirsql、dirtmp共11个目录。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090758288.png#pic_center)
### 7.3 配置OGG源端
#### 7.3.1 Oracle创建测试表
#切换到oracle用户:
su – oracle
#登录sqlplus:
sqlplus “/as sysdba”
#在oracle中创建test_ogg用户:
create user test_ogg identified by test_ogg default tablespace users;
#为test_ogg用户授权:
grant dba to test_ogg;
#使用test_ogg用户登录:
conn test_ogg/test_ogg;
#创建test_ogg表:
create table test_ogg(id int ,name varchar(20),primary key(id));
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030090943471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
#### 7.3.2 配置OGG的全局变量
* 使用oracle用户进入OGG\_SRC\_HOME目录下
#切换到oracle用户下:
su – oracle
#打印源端OGG_SRC_HOME:
echo $OGG_SRC_HOME
#进入OGG_SRC_HOME:
cd $OGG_SRC_HOME
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030091037488.png#pic_center)
* 进入源端OGG命令行
./ggsci
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030091234576.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
* 使用oracle中的ogg用户登录
dblogin userid ogg password ogg
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103009130820.png#pic_center)
* 配置全局变量
edit param ./globals
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103009133198.png#pic_center)
>
> oggschema ogg
>
>
>
然后跟使用vi一样,在新窗口中添加oggschema ogg后保存退出编辑
#### 7.3.3 配置管理器MGR进程
* 进入源端OGG命令行
./ggsci
创建mgr进程:
edit param mgr
>
> PORT 7809
> DYNAMICPORTLIST 7810-7909
> AUTORESTART EXTRACT \*,RETRIES 5,WAITMINUTES 3
> PURGEOLDEXTRACTS ./dirdat/\*,usecheckpoints, minkeepdays 3
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030091456481.png#pic_center)
| 参数名称 | 参数说明 |
| --- | --- |
| PORT | mgr的默认监听端口 |
| DYNAMICPORTLIST | 当指定的mgr端口不可用时,会在这个端口列表中选择一个,最大指定范围为256个 |
| AUTORESTART EXTRACT \*,RETRIES 5,WAITMINUTES 3 | 重启EXTRACT进程的参数,最多5次,每次间隔3分钟 |
| PURGEOLDEXTRACTS | TRAIL文件的定期清理 |
#### 7.3.4 添加复制表
* 进入源端OGG命令行
./ggsci
add trandata test_ogg.test_ogg
info trandata test_ogg.test_ogg
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030091651524.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
#### 7.3.5 配置extract进程
配置Extract进程:
edit param extkafka
新增内容:
extract extkafka
>
> dynamicresolution
> SETENV (ORACLE\_SID = “orcl”)
> SETENV (NLS\_LANG = “american\_america.AL32UTF8”)
> userid ogg,password ogg
> exttrail /u01/app/ogg/src/dirdat/to
> table test\_ogg.test\_ogg;
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030091815750.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030091830488.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
| 参数名称 | 参数说明 |
| --- | --- |
| extract extkafka | 定义extract进程名称 |
| dynamicresolution | 启用动态解析 |
| SETENV (ORACLE\_SID = “orcl”) | 设置Oracle数据库 |
| SETENV (NLS\_LANG = “american\_america.AL32UTF8”) | 设置字符集 |
| userid ogg,password ogg | OGG连接Oracle数据库的帐号密码 |
| exttrail /u01/app/ogg/src/dirdat/to | 定义trail文件的保存位置以及文件名,文件字母最多2个,否则会报错 |
| table test\_ogg.test\_ogg; | 复制表的表名,支持\*通配,必须以;结尾 |
添加Extract进程:
add extract extkafka,tranlog,begin now
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103009203086.png#pic_center)
将trail文件配置与extract进程绑定:
add exttrail /u01/app/ogg/src/dirdat/to,extract extkafka
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092101854.png#pic_center)
#### 7.3.6 配置pump进程
配置Pump进程:
edit param pukafka
新增内容:
>
> extract pukafka
> passthru
> dynamicresolution
> userid ogg,password ogg
> rmthost localhost mgrport 7809
> rmttrail /u01/app/ogg/tgr/dirdat/to
> table test\_ogg.test\_ogg;
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092221488.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
extract进程名称;passthru即禁止OGG与Oracle交互,我们这里使用pump逻辑传输,故禁止即可;dynamicresolution动态解析;userid ogg,password ogg即OGG连接Oracle数据库的帐号密码rmthost和mgrhost即目标端(kafka)OGG的mgr服务的地址以及监听端口;rmttrail即目标端trail文件存储位置以及名称。
| 参数名称 | 参数说明 |
| --- | --- |
| extract pukafka | 定义pump进程名称 |
| passthru | 因使用了pump逻辑传输,所以禁止OGG与Oracle交互 |
| dynamicresolution | 配置动态解析 |
| userid ogg,password ogg | OGG连接Oracle数据库的帐号密码 |
| rmthost localhost mgrport 7809 | 目标端OGG的mgr服务的地址以及监听端口 |
| rmttrail /u01/app/ogg/tgr/dirdat/to | 目标端OGG的trail文件存储位置以及名称 |
| table test\_ogg.test\_ogg; | 要采集的表,必须使用;结尾 |
将源端trail文件绑定到Extract进程:
add extract pukafka,exttrailsource /u01/app/ogg/src/dirdat/to
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092419929.png#pic_center)
将目标端trail文件绑定到Extract进程:
add rmttrail /u01/app/ogg/tgr/dirdat/to,extract pukafka
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092448781.png#pic_center)
#### 7.3.7 配置define文件
注意:该文件用来在异构数据源之间传输时,需明确知道表之间的映射关系,比如:Oracle与MySQL,Hadoop集群(HDFS,Hive,kafka等)等之间数据传输可以定义为异构数据类型的传输,故需要定义表之间的关系映射,在OGG命令行执行:
配置define文件:
edit param test_ogg
>
> defsfile /u01/app/ogg/src/dirdef/test\_ogg.test\_ogg
> userid ogg,password ogg
> table test\_ogg.test\_ogg;
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092536617.png#pic_center)
生成表schema文件:(在OGG\_SRC\_HOME目录下执行(oracle用户))
./defgen paramfile dirprm/test_ogg.prm
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092603801.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
将生成的/u01/app/ogg/src/dirdef/test\_ogg.test\_ogg发送的目标端ogg目录下的dirdef里:
scp -r /u01/app/ogg/src/dirdef/test_ogg.test_ogg /u01/app/ogg/tgr/dirdef/
`因为目标端目录还没有创建,因此发送文件可能会失败,所以执行完目标端配置后发送即可`
### 7.4 配置OGG目标端
#### 7.4.1 解压和安装OGG目标端软件包
* 创建OGG目标端的目录
使用root用户创建:
mkdir /u01/app/ogg/tgr
* 添加OGG目标端的目录到oracle用户的环境变量中
从root用户切换到oracle用户:
su oracle
`注意【非常重要】:在这里,需要调整oracle用户的.bash_profile,主要是更新LD_LIBRARY_PATH的值,来确保源端和目标端的ggsci命令都可以正常使用。如果不更新的话,目标端ggsci命令可以使用,但源端的ggsci命令无法使用,会报错./ggsci: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory`
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092801586.png#pic_center)
vim ~/.bash_profile
export OGG_TGR_HOME=/u01/app/ogg/tgr
export LD_LIBRARY_PATH=
J
A
V
A
_
H
O
M
E
/
j
r
e
/
l
i
b
/
a
m
d
64
:
JAVA\_HOME/jre/lib/amd64:
JAVA_HOME/jre/lib/amd64:JAVA_HOME/jre/lib/amd64/server:
J
A
V
A
_
H
O
M
E
/
j
r
e
/
l
i
b
/
a
m
d
64
/
l
i
b
j
s
i
g
.
s
o
:
JAVA\_HOME/jre/lib/amd64/libjsig.so:
JAVA_HOME/jre/lib/amd64/libjsig.so:JAVA_HOME/jre/lib/amd64/server/libjvm.so:$ORACLE_HOME/lib:/usr/lib
source ~/.bash_profile
#退出oracle用户shell命令:
exit
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030092910130.png#pic_center)
* 解压OGG目标端软件
OGG源端的软件包是V971332-01.zip,存放在/export/softwares/oracle/ogg目录下。需要使用root用户解压
cd /export/softwares/oracle/ogg
创建tgr文件夹是用来存放解压后的OGG目标端软件
mkdir -p /export/softwares/oracle/ogg/tgr/
解压OGG目标端软件到tgr文件夹下
unzip /export/softwares/oracle/ogg/V971332-01.zip -d /export/softwares/oracle/ogg/tgr/
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093004331.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
cd /export/softwares/oracle/ogg/tgr/
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093035833.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
ggs\_Adapters\_Linux\_x64.tar文件是真正的OGG目标端软件包,解压该文件到/u01/app/ogg/tgr目录下,执行命令:
tar -xf ggs_Adapters_Linux_x64.tar -C /u01/app/ogg/tgr/
* 配置/u01/app/ogg/tgr目录及其所有文件的权限
解压后的默认用户和组
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093115862.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
使用root用户执行授权命令:
chown -R oracle:oinstall /u01/app/ogg/tgr
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093144848.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
可以看到/u01/app/ogg/目录下的tgr属于oracle用户和oinstall组。
ll /u01/app/ogg/tgr
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093232889.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
可以看到/u01/app/ogg/tgr目录下的所有文件都属于oracle用户和oinstall组。
#### 7.4.2 OGG目标端初始化
* 使用oracle用户登录目标端OGG的命令行中
可以看到/u01/app/ogg/目录下的tgr属于oracle用户和oinstall组。
su oracle
切换oracle用户时需要重新加载环境变量:
source ~/.bash_profile
cd $OGG_TGR_HOME
./ggsci
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093328265.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
* 初始化目标端OGG目录
注意:如果不在OGG\_TGR\_HOME下,初始化目标端OGG目录时会报错
create subdirs
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030093405371.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
退出OGG命令行客户端:exit
* 检查目标端OGG初始化后的目录
初始化完成后,可以查询在$OGG\_TGR\_HOME下是否存在dirchk、dircrd、dirdat、dirdef、dirdmp、diretc、dirout、dirpcs、dirprm、dirrpt、dirsql、dirtmp、dirwlt、dirwww共14个目录。
#### 7.4.3 拷贝源端的define文件到目标端
将生成的/u01/app/ogg/src/dirdef/test\_ogg.test\_ogg发送的目标端ogg目录下的dirdef里:
scp -r $OGG_SRC_HOME/dirdef/test_ogg.test_ogg $OGG_TGR_HOME/dirdef/
#### 7.4.4 安装zookeeper和Kafka
* 安装ZooKeeper(使用root用户操作)
解压:
tar -zxf /export/softwares/zookeeper-3.4.14.tar.gz -C /export/services/
创建软连接:
ln -s /export/services/zookeeper-3.4.14 /export/services/zookeeper
创建zoo.cfg:
cp /export/services/zookeeper/conf/zoo_sample.cfg /export/services/zookeeper/conf/zoo.cfg
配置zoo.cfg:
vim /export/services/zookeeper/conf/zoo.cfg
>
> tickTime=2000
> initLimit=10
> syncLimit=5
> dataDir=/export/datas/zookeeper/data
> dataLogDir=/export/datas/zookeeper/log
> clientPort=2181
>
>
>
创建ZooKeeper的数据路径:
mkdir -p /export/datas/zookeeper/data
mkdir -p /export/datas/zookeeper/log
添加到环境变量:
vim /etc/profile
>
> export ZOOKEEPER\_HOME=/export/services/zookeeper
> export PATH=.:$ZOOKEEPER\_HOME/bin:$JAVA\_HOME/bin:$JAVA\_HOME/jre/bin:$PATH
>
>
>
source /etc/profile
启动ZooKeeper:
zkServer.sh start
zkServer.sh status
* 安装kafka(使用root用户操作)
解压:
tar -zxf /export/softwares/kafka_2.11-2.2.0.tgz -C /export/services/
创建软连接:
ln -s /export/services/kafka_2.11-2.2.0 /export/services/kafka
配置server.prperties:
vim /export/services/kafka/config/server.properties
>
> listeners=PLAINTEXT://server01:9092
> broker.id=0
> zookeeper.connect=server01:2181
>
>
>
添加环境变量:
vim /etc/profile
export KAFKA_HOME=/export/services/kafka
export PATH=.:
K
A
F
K
A
_
H
O
M
E
/
b
i
n
:
KAFKA\_HOME/bin:
KAFKA_HOME/bin:ZOOKEEPER_HOME/bin:
J
A
V
A
_
H
O
M
E
/
b
i
n
:
JAVA\_HOME/bin:
JAVA_HOME/bin:JAVA_HOME/jre/bin:$PATH
source /etc/profile
启动Kafka:
kafka-server-start.sh -daemon /export/services/kafka/config/server.properties
创建主题:
kafka-topics.sh --create --zookeeper server01:2181 --replication-factor 1 --partitions 1 --topic test_ogg
查看主题:
kafka-topics.sh --list --zookeeper server01:2181
#### 7.4.5 配置管理器MRG进程
使用oracle用户进入OGG\_SRC\_HOME目录下
切换到oracle用户下:
su – oracle
打印目标端OGG\_TGR\_HOME:
echo $OGG_TGR_HOME
进入OGG\_TGR\_HOME:
cd $OGG_TGR_HOME
启动ggsci:
./ggsci
配置目标端MRG进程
配置MGR进程:
edit param mgr
新增内容:
>
> PORT 7810
> DYNAMICPORTLIST 7810-7909
> AUTORESTART EXTRACT \*,RETRIES 5,WAITMINUTES 3
> PURGEOLDEXTRACTS ./dirdat/\*,usecheckpoints, minkeepdays 3
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094156332.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
#### 7.4.6 配置checkpoint
edit param ./GLOBALS
新增内容:
>
> CHECKPOINTTABLE test\_ogg.checkpoint
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094250439.png#pic_center)
#### 7.4.7 配置Replicate进程
配置目标端Replicate进程
配置replicate进程:
edit param rekafka
>
> REPLICAT rekafka
> sourcedefs /u01/app/ogg/tgr/dirdef/test\_ogg.test\_ogg
> TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props
> REPORTCOUNT EVERY 1 MINUTES, RATE
> GROUPTRANSOPS 10000
> MAP test\_ogg.test\_ogg, TARGET test\_ogg.test\_ogg;
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094347896.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
#### 7.4.8 添加trail文件到replicate进程
添加trail文件到Replicate进程
add replicat rekafka exttrail /u01/app/ogg/tgr/dirdat/to,checkpointtable test_ogg.checkpoint
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094432425.png#pic_center)
#### 7.4.9 配置kafka.props
* 配置kafka.props
cd $OGG_TGR_HOME
vim dirprm/kafka.props
新增内容:
>
> gg.handlerlist=kafkahandler
> gg.handler.kafkahandler.type=kafka
> gg.handler.kafkahandler.KafkaProducerConfigFile=custom\_kafka\_producer.properties
> gg.handler.kafkahandler.topicMappingTemplate=test\_ogg
> gg.handler.kafkahandler.format=json
> gg.handler.kafkahandler.mode=op
> gg.classpath=dirprm/:/export/services/kafka/libs/\*:/u01/app/ogg/tgr/:/u01/app/ogg/tgr/lib/\*
>
>
>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094545825.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
* 配置custom\_kafka\_producer.properties
cd $OGG_TGR_HOME
vim dirprm/custom_kafka_producer.properties
新增内容:
bootstrap.servers=server01:9092
acks=1
compression.type=gzip
reconnect.backoff.ms=1000
value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
batch.size=102400
linger.ms=10000
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094643558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
#### 7.4.10 最后确认所有的进程
在目标端,主要做了4个操作,共包括2个进程,分别是MANAGER和REPLICAT。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103009471571.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
### 7.5 OGG测试
#### 7.5.1 启动OGG的源端和目标端
前提:切换到 oracle 账号且启动了 Oracle
注意:要严格按照启动顺序执行:
* 第一步:启动源端mgr进程
* 第二步:启动目标端mgr进程
* 第三步:启动源端extract进程
* 第四步:启动源端pump进程
* 第五步:启动目标端replicate进程
1. 启动源端mgr进程
cd $OGG_SRC_HOME
./ggsci
#查看所有进程状态:
info all
#启动MANAGER进程:
start mgr
#检查所有进程状态:
info all
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094822927.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
2. 启动目标端mgr进程
cd $OGG_TGR_HOME
./ggsci
#启动MANAGER进程:
start mgr
#查看所有进程状态:
info all
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030094917545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
3. 启动源端extract进程
cd $OGG_SRC_HOME
./ggsci
#启动EXTRACT进程:
start extkafka
#查看所有进程状态:
info all
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095006555.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
4. 启动源端pump进程
启动pump进程:
start pukafka
查看所有进程状态:
info all
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095051934.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
5. 启动目标端replicat进程
cd $OGG_TGR_HOME
./ggsci
启动replicat进程:
start rekafka
查看所有进程状态:
info all
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095139948.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
6. 确认源端和目标端进程运行情况
源端:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095217296.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
目标端:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095245118.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
#### 7.5.2 测试OGG的数据采集
* 使用oracle用户登录到oracle11g数据库(源端)
su – oracle
sqlplus “/as sysdba”
conn test_ogg/test_ogg
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095330665.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
* 对表进行DML操作(每一条SQL都需要手动执行commit提交)
登录到test\_ogg用户下:
conn test_ogg/test_ogg
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095410745.png#pic_center)
查看该用户拥有的表:
select table_name from user_tables;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095443664.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
查看TEST\_OGG表的字段信息:
select column_name,data_type from user_tab_columns where table_name = upper(‘TEST_OGG’);
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103009551346.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
插入数据:
insert into test_ogg values(1,‘beijing’);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095546157.png#pic_center)
执行Commit:
commit;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095608370.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
查看kafka是否多出了一个叫做test\_ogg的主题:
kafka-topics.sh --list --zookeeper server01:2181
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095647930.png#pic_center)
然后启动kafka的消费者来消费test\_ogg主题的数据:
kafka-console-consumer.sh --bootstrap-server server01:9092 --topic test_ogg --from-beginning
再查看kafka的test\_ogg主题下是否有了数据:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095727408.png#pic_center)
执行修改数据(修改id=2的name为china-shanghai):
update test_ogg set name=‘china-shanghai’ where id=2;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095756634.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
查看kafka中是否有了id为2的china-shanghai的这条记录:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095821990.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
删除id为2的数据:
delete test_ogg where id=2;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095849532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
检查kafka是否多个一条被标记为删除的数据:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030095919323.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
:{“table”:“TEST_OGG.TEST_OGG”,“op_type”:“I”,“op_ts”:“2020-05-28 09:22:18.000129”,
{“table”:“TEST_OGG.TEST_OGG”,“op_type”:“U”,“op_ts”:“2020-05-28 09:25:17.000140”,“current_ts”:“2020-05-28T09:25:22.085000”,“pos”:“00000000000000001227”,“before”:{},“after”:{“ID”:1,“NAME”:“china-shanghai”}}
* 关于数据文件的检查
如果数据库中发生了事务(都被commit后)操作,会在源端和目标端的dirdat下生成trail数据文件。数据文件名称只能使用2个字母,多了会报错。
当源端发生事务后,检查源端的trail文件:
ll /u01/app/ogg/src/dirdat/
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030100028196.png#pic_center)
目标端会接收到源端pump进程传过来的数据文件:
ll /u01/app/ogg/tgr/dirdat/
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030100057577.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
#### 7.5.3 注意事项
* 必须严格遵守OGG的启动顺序;
* 必须严格遵守OGG的关闭顺序;
* 如果需要修改OGG的进程,必须先停止,修改成功后,再重启;
#### 7.5.4 错误日志位置
源端错误日志路径
>
> /u01/app/ogg/src/ggserr.log
>
>
>
目标端错误日志路径
>
> /u01/app/ogg/tgr/ggserr.log
>
>
>
## 8. 初始化业务数据
### 8.1 安装OGG源端
#### 8.1.1 在Oracle中创建OGG相关的用户和表空间
1. 创建表空间在磁盘中的物理路径(需要到root用户操作)
mkdir -p /u01/app/oracle/oggdata/orcl/
chown -R oracle:oinstall /u01/app/oracle/oggdata/orcl
2. 进入sqlplus
切换到oracle用户:su - oracle
登录sqlplus:
sqlplus “/as sysdba”
3. 创建oggtbs表空间
CREATE TABLESPACE “TBS_LOGISTICS” DATAFILE ‘/u01/app/oracle/oradata/orcl/tbs_logistics.dat’ SIZE 500M AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030102634629.png#pic_center)
4. 创建erainm用户(用户名和密码都是erainm)
CREATE USER erainm IDENTIFIED BY erainm DEFAULT TABLESPACE TBS_LOGISTICS;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030102759171.png#pic_center)
5. 赋予erainm用户dba权限
GRANT connect,resource,dba to erainm;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030102814672.png#pic_center)
#### 8.1.2 OGG源端初始化
1. 使用oracle用户登录源端OGG的命令行中
su – oracle
cd $OGG_SRC_HOME
./ggsci
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030102933762.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
2.
初始化源端OGG目录
注意:如果不在OGG\_SRC\_HOME下,初始化OGG目录时会报错
create subdirs
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201030103015372.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
退出OGG命令行客户端:exit
3. 检查源端OGG初始化后的目录
初始化完成后,可以查询在$OGG\_SRC\_HOME下是否存在dirchk、dirdat、dirdef、dirjar、dirout、dirpcs、dirprm、dirrpt、dirsql、dirtmp共11个目录。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103010310793.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2VyYWluaW5n,size_16,color_FFFFFF,t_70#pic_center)
### 8.2 配置OGG源端
#### 8.2.1 Oracle创建项目相关表
| 属性名 | 属性值 |
| --- | --- |
| 主机地址 | 192.168.88.10 |
| 端口号 | 1521 |
| 数据库实例名称 | ORCL |
| 数据库实例类型 | Service Name |
| 用户名 | erainm |
| 角色 | Normal |
| 密码 | erainm |
| JDBC访问URL | jdbc:oracle:thin:@//192.168.88.10:1521:ORCL |
| JDBC驱动名称 | 使用OracleDataSource连接池,无需配置Driver |
– 创建所有的序列
CREATE SEQUENCE tbl_emp_info_map_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_driver_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_emp_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_tt_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_charge_standard_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_company_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_company_dot_map_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_company_route_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_company_warehouse_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_courier_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_deliver_region_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_delivery_record_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_department_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_fixed_area_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_goods_rack_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_job_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_out_warehouse_dtl_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_pkg_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_postal_standard_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_push_warehouse_dtl_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_service_evaluation_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_store_grid_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_vehicle_monitor_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_rack_map_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_receipt_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_waybill_line_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_waybill_record_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_work_time_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_test_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_areas_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_deliver_package_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_customer_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_codes_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_consumer_address_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_receipt_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_send_vehicle_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_vehicle_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_dot_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_transport_tool_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_dot_transport_tool_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_address_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_route_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_push_warehouse_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_out_warehouse_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_warehouse_emp_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_express_package_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_express_bill_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_consumer_sender_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_collect_package_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
CREATE SEQUENCE tbl_waybill_id_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999;
– 创建所有的业务表
CREATE TABLE “tbl_emp_info_map” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“company_id” NUMBER(19,0),
“dot_id” NUMBER(19,0),
“emp_id” NUMBER(19,0),
“job_id” NUMBER(19,0),
“dep_id” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_EMP_INFO_MAP” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_driver” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“job_number” NVARCHAR2(50),
“name” NVARCHAR2(50),
“gender” NVARCHAR2(100),
“birathday” DATE,
“state” NUMBER(19,0),
“driver_license_number” NVARCHAR2(100),
“driver_license_type” NUMBER(19,0),
“get_driver_license_dt” DATE,
“car_id” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_DRIVER” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_emp” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“emp_number” NVARCHAR2(50),
“emp_name” NVARCHAR2(50),
“emp_gender” NUMBER(10,0),
“emp_birathday” DATE,
“state” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_EMP” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_warehouse_transport_tool” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“warehouse_id” NUMBER(19,0),
“transport_tool_id” NUMBER(19,0),
“allocate_dt” DATE,
“state” NUMBER(10,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_WAREHOUSE_TRANSPORT_TOOL” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_charge_standard” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“start_area_id” NUMBER(19,0),
“stop_area_id” NUMBER(19,0),
“first_weight_charge” NUMBER(19,0),
“follow_up_weight_charge” NUMBER(19,0),
“prescription” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_CHARGE_STANDARD” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_company” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“company_name” NVARCHAR2(50),
“city_id” NUMBER(19,0),
“company_number” NVARCHAR2(50),
“company_addr” NVARCHAR2(100),
“company_addr_gis” NVARCHAR2(100),
“company_tel” NVARCHAR2(20),
“is_sub_company” NUMBER(19,0),
“state” NUMBER(10,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_COMPANY” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_company_dot_map” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“company_id” NUMBER(19,0),
“dot_id” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_COMPANY_DOT_MAP” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_company_transport_route_ma”
(
“id” NUMBER(19,0) NOT NULL ENABLE,
“company_id” NUMBER(19,0),
“transport_route_id” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_COMPANY_TRANSPORT_ROUTE” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_company_warehouse_map” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“company_id” NUMBER(19,0),
“warehouse_id” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_COMPANY_WAREHOUSE_MAP” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_courier” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“job_num” NVARCHAR2(50),
“name” NVARCHAR2(50),
“birathday” DATE,
“tel” NVARCHAR2(20),
“pda_num” NVARCHAR2(50),
“car_id” NUMBER(19,0),
“postal_standard_id” NUMBER(19,0),
“work_time_id” NUMBER(19,0),
“dot_id” NUMBER(19,0),
“state” NUMBER(10,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_COURIER” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_deliver_region”
(
“id” NUMBER(19,0) NOT NULL ENABLE,
“search_keyword” NVARCHAR2(100),
“search_assist_keyword” NVARCHAR2(100),
“area_id” NUMBER(19,0),
“fixed_area_id” NUMBER(19,0),
“state” NUMBER(10,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_DELIVER_REGION” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_delivery_record” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“cur_warehouse_id” NVARCHAR2(50),
“vehicle_id” NUMBER(19,0),
“start_vehicle_dt” DATE,
“next_warehouse_id” NUMBER(19,0),
“predict_arrivals_dt” DATE,
“actua_arrivals_dt” DATE,
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_DELIVERY_RECORD” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
d" NUMBER(19,0),
“warehouse_id” NUMBER(19,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_COMPANY_WAREHOUSE_MAP” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_courier” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“job_num” NVARCHAR2(50),
“name” NVARCHAR2(50),
“birathday” DATE,
“tel” NVARCHAR2(20),
“pda_num” NVARCHAR2(50),
“car_id” NUMBER(19,0),
“postal_standard_id” NUMBER(19,0),
“work_time_id” NUMBER(19,0),
“dot_id” NUMBER(19,0),
“state” NUMBER(10,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_COURIER” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_deliver_region”
(
“id” NUMBER(19,0) NOT NULL ENABLE,
“search_keyword” NVARCHAR2(100),
“search_assist_keyword” NVARCHAR2(100),
“area_id” NUMBER(19,0),
“fixed_area_id” NUMBER(19,0),
“state” NUMBER(10,0),
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_DELIVER_REGION” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
CREATE TABLE “tbl_delivery_record” (
“id” NUMBER(19,0) NOT NULL ENABLE,
“cur_warehouse_id” NVARCHAR2(50),
“vehicle_id” NUMBER(19,0),
“start_vehicle_dt” DATE,
“next_warehouse_id” NUMBER(19,0),
“predict_arrivals_dt” DATE,
“actua_arrivals_dt” DATE,
“cdt” DATE,
“udt” DATE,
“remark” NVARCHAR2(100),
CONSTRAINT “PK_TBL_DELIVERY_RECORD” PRIMARY KEY (“id”)
) TABLESPACE “TBS_LOGISTICS”;
[外链图片转存中…(img-IMkeeyHa-1715718418005)]
[外链图片转存中…(img-FBtqfyhH-1715718418005)]
[外链图片转存中…(img-AMLO6yHc-1715718418006)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新