Oracle分布式数据库的垂直分片实例

目录

  • 前言
  • 0 软件版本
  • 1 启动监听及数据库
    • 1.1 启动数据库示例
    • 1.2 启动监听进程
  • 2 建立表
    • 2.1 在总部(Windows)建立全部员工的基本信息表和总部员工的工资信息表
    • 2.2 在分部(CentOS)建立该分部的员工工资信息表
  • 3 建立垂直分区视图


前言

在之前的“Oracle分布式分片技术实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立链接,对数据库进行水平分片”的基础上,实现两主机Oracle分布式数据库垂直分片。

需求:
将所有职工的基本信息存放在总公司(win10的Oracle数据库中),工资信息存放在各自公司(win10的Oracle数据库中和CentOS7的Oracle数据库中)。
思路:
对职工信息先进行垂直分片(分为基本信息和工资信息),再对工资信息进行水平分片。


0 软件版本

OS:一台Windows10的电脑和在其上搭建一台CentOS7的虚拟机
数据库:Oracle19c
图形化工具:Navicat for Oracle
(建议直接从官网下载,也可以从我之前的博客中获取,里面讲述如何安装和使用这些软件)


1 启动监听及数据库

在进行垂直分片前,需打开CentOS7中的Oracle数据库及监听服务

1.1 启动数据库示例

sqlplus / as sysdba
SQL> startup

1.2 启动监听进程

lsnrctl start

2 建立表

保证相同属性的各字段名称及类型相同

2.1 在总部(Windows)建立全部员工的基本信息表和总部员工的工资信息表

(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');

Oracle分布式数据库的垂直分片实例_第1张图片
(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);

Oracle分布式数据库的垂直分片实例_第2张图片

2.2 在分部(CentOS)建立该分部的员工工资信息表

分部的员工工资信息表:(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);

Oracle分布式数据库的垂直分片实例_第3张图片


3 建立垂直分区视图

在总部(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的数据库链。
Oracle分布式数据库的垂直分片实例_第4张图片
查询视图:
Oracle分布式数据库的垂直分片实例_第5张图片
可以看出实现了win10的Oracle用户对CentOS的Oracle的透明访问,查询到其的工资信息!
注意:视图不支持增删改等DDL操作。


总结:在之前的“Oracle分布式分片技术实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立链接,对数据库进行水平分片”的基础上,实现了两主机Oracle分布式数据库垂直分片的实例操作。

后续会继续更新有关Oracle分布式数据库的内容!
(注:第14次发文,如有错误和疑问,欢迎在评论区指出,感谢捏!)
——2021.10.17

你可能感兴趣的:(数据库,oracle,数据库)