栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Oracle分布式分片技术——实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立分布式数据库管理

Oracle分布式分片技术——实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立分布式数据库管理

实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立分布式数据库管理
  • 前言
  • 0 软件版本
  • 1 环境搭建过程(简述)
  • 2 启动监听和数据库实例(均需切换到oracle用户下)
    • 2.1 启动监听进程
    • 2.2 查看监听状态
    • 2.3 启动数据库示例
    • 2.4 在本地windows下使用Navicat连接数据库
    • 2.5 关闭监听
    • 2.6关闭数据库实例
  • 3 创建到另一个主机(虚拟机CentOS7)中的Oracle数据库的链接服务
    • 3.1 查看服务,确保本地oracle监听已启动
    • 3.2 打开Net Manager—本地—服务命名—添加,弹出下面窗体
    • 3.3 访问远程数据库的数据
      • 3.3.1 在Navicat中登陆自己本机的Oracle数据库
      • 3.3.2 执行SQL脚本,创建database link
      • 3.3.3 通过刚刚建立的数据库连接link1,对服务器2数据库进行一系列操作,比如select、delete等等。
  • 4 表的建立以及分片技术的分析与实现
    • 4.1 在本地和虚拟机分别创建一个学生表(保证各字段名称及类型相同)
    • 4.2 向两个表插入不同的数据
    • 4.3 在本地oracle中的用户hr建立chinese_students和math_students的全局视图

前言

Oracle分布式分片技术实现两主机上的Oracle19c数据库(CentOS7与windows10)之间建立链接,对数据库进行水平分片,实现不同的分区策略,从而达到多场地下分布式数据库的访问。
本篇主要讲述如何单机模拟Oracle分布式数据库环境的搭建,创建到不同场地数据库的链接,以及依据站点特性对数据库水平分片的实现。


0 软件版本

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


1 环境搭建过程(简述)

在CentOS7中安装Oracle19c数据库,按照博客园中的这篇博客和CSDN中的这篇博客文中的步骤即可成功安装!
需要注意的是,文档中有一处细微的问题(关于启动安装oracle命令./runInstaller):
切换到oracle用户下时,注意不可以在root下是使用 su oracle来切换,要使用系统右上角的切换用户来切换,然后登录oracle用户,才能执行:./runInstaller
然后开始进行安装Oracle的步骤(与在Windows10下安装过程大致相同,可查看我之前的博客),直到安装成功!


2 启动监听和数据库实例(均需切换到oracle用户下) 2.1 启动监听进程
lsnrctl start

2.2 查看监听状态
lsnrctl status
2.3 启动数据库示例
sqlplus / as sysdba
SQL> startup

2.4 在本地windows下使用Navicat连接数据库


注意:服务名需填写自己在oracle数据库实例时设置的
可以成功连接,说明在Linux下已成功安装Oracle19c数据库,并配置好了环境!

2.5 关闭监听
 lsnrctl stop
2.6关闭数据库实例
SQL> shutdown normal     (正常关闭)
或      SQL> shutdown immediate   (立即关闭)

3 创建到另一个主机(虚拟机CentOS7)中的Oracle数据库的链接服务 3.1 查看服务,确保本地oracle监听已启动

3.2 打开Net Manager—本地—服务命名—添加,弹出下面窗体


自命名服务名,为了明白本服务对应的服务器,我在此处填入服务器2(CentOS7中的Oracle)的服务名wjw(添自己的),下一步:

选择默认的TCP/IP协议,下一步:

填写服务器2(CentOS7)的IP地址和Oracle端口号1521(默认),下一步:

填入服务器2的服务名wjw,连接类型选择默认设置或者共享服务器,下一步:

选择测试:

此处如果测试未成功,出现如下错误:
ORA-01017: invalid username/password; logon denied

说明所连接的oracle数据库未解锁Scott用户!
接下来需到CentOS中解锁Scott用户:
(1)登陆数据库:

sqlplus / as sysdba

(2)创建scoot用户:

create user scott identified by tiger;

(3)解锁scoot用户:

alter user scott account unlock;

(4)授予scott用户数据库管理员权限:

grant dba to scott;

再次测试连接:

发现连接测试成功,成功连接上CentOS7中Oracle数据库中的scott用户!

到此,成功创建了不同场地(Windows10到CentOS7)数据库的链接服务。


3.3 访问远程数据库的数据 3.3.1 在Navicat中登陆自己本机的Oracle数据库 3.3.2 执行SQL脚本,创建database link

SQL脚本为:

create database link link1 connect to scott identified by tiger using 'wjw';


这样,就建立了一个使用本地服务wjw(实际上是指向服务器2的服务wjw)、名为link1的数据库链接,该链接通过服务器2的用户名scott登入对方数据库。

3.3.3 通过刚刚建立的数据库连接link1,对服务器2数据库进行一系列操作,比如select、delete等等。
select table_name, tablespace_name, status from user_tables @link1;

查询结果如下图:

因为该scott用户是我们新建的,所有里面没有表,但我们可以为scott用户创建、修改、删除表操作。

4 表的建立以及分片技术的分析与实现 4.1 在本地和虚拟机分别创建一个学生表(保证各字段名称及类型相同)

本地oracle中的用户hr创建名为chinese_students的表:

CREATE TABLE chinese_students(
s_id NUMBER(10) primary key,
s_name VARCHAR2(10),
subject VARCHAR2(10),
s_score NUMBER(10));


虚拟机oracle中的用户scott创建名为math_students的表:

CREATE TABLE math_students(
s_id NUMBER(10) primary key,
s_name VARCHAR2(10),
subject VARCHAR2(10),
s_score NUMBER(10));

4.2 向两个表插入不同的数据

对chinese_students

INSERT INTO chinese_students VALUES(001,'***','语文',91.2);
INSERT INTO chinese_students VALUES(002,'***','语文',84.9);
INSERT INTO chinese_students VALUES(003,'***','语文',92.0);

SELECt * FROM chinese_students;


对math_students

INSERT INTO math_students VALUES(001,'***','数学',92.3);
INSERT INTO math_students VALUES(002,'***','数学',95.7);
INSERT INTO math_students VALUES(003,'***','数学',88.8);

SELECt * FROM math_students;


4.3 在本地oracle中的用户hr建立chinese_students和math_students的全局视图
CREATE VIEW total_student AS
SELECt * FROM CHINESE_STUDENTS WHERe SUBJECT='语文'
UNIOn ALL
SELECt * FROM math_students@link1 WHERe subject='数学';


可在本地oracle的用户hr直接透明查询到所有学生表的信息,这样就达到了oracle分布式数据库水平分片的效果:
可以看到可以建立了分区视图:

建立分区视图后,可以在本地oracle数据库的hr用户下,对远程数据库对象透明访问:

SELECt * FROM TOTAL_STUDENT;


总结:单机模拟Oracle分布式数据库环境的搭建,创建到不同场地数据库的链接,以及依据站点特性对数据库水平分片的实现。

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327188.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号