在之前的“Oracle分布式分片技术实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立链接,对数据库进行水平分片”的基础上,实现两主机Oracle分布式数据库垂直分片。
需求:
将所有职工的基本信息存放在总公司(win10的Oracle数据库中),工资信息存放在各自公司(win10的Oracle数据库中和CentOS7的Oracle数据库中)。
思路:
对职工信息先进行垂直分片(分为基本信息和工资信息),再对工资信息进行水平分片。
OS:一台Windows10的电脑和在其上搭建一台CentOS7的虚拟机
数据库:Oracle19c
图形化工具:Navicat for Oracle
(建议直接从官网下载,也可以从我之前的博客中获取,里面讲述如何安装和使用这些软件)
在进行垂直分片前,需打开CentOS7中的Oracle数据库及监听服务
sqlplus / as sysdba
SQL> startup
lsnrctl start
(保证相同属性的各字段名称及类型相同)
(1)全部员工基本信息表:(EMP_Basic_ALL)
Create Table EMP_Basic_ALL(
ENO NUMBER(4) Primary Key,
ENAME VARCHAR2(10),
DEPTNO VARCHAR2(10)
);
INSERT INTO EMP_BASIC_ALL VALUES(1,'张山','Windows');
INSERT INTO EMP_BASIC_ALL VALUES(2,'王风','Windows');
INSERT INTO EMP_BASIC_ALL VALUES(3,'李雪','Windows');
INSERT INTO EMP_BASIC_ALL VALUES(4,'丁雨','CentOS');
INSERT INTO EMP_BASIC_ALL VALUES(5,'华电','CentOS');
INSERT INTO EMP_BASIC_ALL VALUES(6,'刘月','CentOS');
(2)总部员工工资信息表:(EMP_Salary_Windows)
Create Table EMP_Salary_Windows(
ENO NUMBER(4) Primary Key,
SALARY NUMBER(10,2));
INSERT INTO EMP_Salary_Windows VALUES(1,12800.45);
INSERT INTO EMP_Salary_Windows VALUES(2,15530.32);
INSERT INTO EMP_Salary_Windows VALUES(3,11905.68);
分部的员工工资信息表:(EMP_Salary_CentOS)
Create Table EMP_Salary_CentOS(
ENO NUMBER(4) Primary Key,
SALARY NUMBER(10,2));
INSERT INTO EMP_Salary_CentOS VALUES(4,16708.25);
INSERT INTO EMP_Salary_CentOS VALUES(5,12690.96);
INSERT INTO EMP_Salary_CentOS VALUES(6,13788.32);
在总部(Windows)建立分区视图,实现在总部对两地所有员工的所有信息透明访问:
Create View EMP As
Select EMP_Basic_ALL.ENO, ENAME,DEPTNO,SALARY
From EMP_Basic_ALL,EMP_Salary_Windows
Where EMP_Basic_ALL.ENO=EMP_Salary_Windows.ENO
Union
Select EMP_Basic_ALL.ENO, ENAME,DEPTNO,SALARY
From EMP_Basic_ALL,EMP_Salary_CentOS@link1
Where EMP_Basic_ALL.ENO=EMP_Salary_CentOS.ENO@link1;
注:其中的@link1
是win10-Oracle到CentOS7-Oracle的数据库链。
查询视图:
可以看出实现了win10的Oracle用户对CentOS的Oracle的透明访问,查询到其的工资信息!
注意:视图不支持增删改等DDL操作。
总结:在之前的“Oracle分布式分片技术实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立链接,对数据库进行水平分片”的基础上,实现了两主机Oracle分布式数据库垂直分片的实例操作。
后续会继续更新有关Oracle分布式数据库的内容!
(注:第14次发文,如有错误和疑问,欢迎在评论区指出,感谢捏!)
——2021.10.17