赞
踩
一、实验目的:
以分布式数据库管理系统Oracle为例,掌握利用相关技术实现多场地环境下数据的分布式存储,从而理解Oracle分布式数据库体系结构特有的水平分片方法。
二、实验内容:
以Oracle分布式数据库为例,掌握Oracle通过分区技术对多个场地数据的划分。
实验重点:创建到不同场地数据库的链接
实验难点:单机模拟Oracle分布式数据库环境的搭建,以及依据站点特性对数据库水平分片的实现。基于Oracle数据库管理系统,对数据库链接的创建、远程访问以及有关分区技术实现的语言操作层。
三、实验结果:
1.分布式环境搭建过程的简要描述
1.1 在虚拟机Windows10 X64安装oracle
①创建win10系统的虚拟机Windows10 X64
②联网下载oracle安装包,在虚拟机对oracle软件进行安装
运行setup.exe
对oracle进行安装配置
安装oracle
oracle在虚拟机上安装成功!
1.2 在虚拟机上安装oracle图形化工具SQLDeveloper
①下载SQLDeveloper安装包,并进行解压缩
②点击sqldeveloper应用程序,进行安装
③安装成功后,新建数据库连接test3
测试通过!
④成功连接到oracle数据库
1.3搭建Oracle分布式数据库环境
①对本机与虚拟机上的系统信息描述如下
本机服务器
IP:192.168.43.161
数据库:Oracle 11g
服务名:orcl
用户名:system
虚拟机服务器
IP:192.168.155.129
数据库:Oracle 11g
服务名:oracle
用户名:system
②启动oracle相关服务:OracleOraDB19Home1TNSListener与OracleServiceORCL
③对虚拟机oracle上的tnsnames.ora与listener.ora文件进行配置
④对本机oracle上的tnsnames.ora与listener.ora文件进行配置
⑤在虚拟机上打开Net Manager进行连接,服务命名为oracle111
使用用户system登录连接测试
连接测试成功!
2.在分布式环境下建立示例表
①考虑到在本机和虚拟机上分别使用SQL Developer工具分别进行数据库操作不太方便,此处使用Navicat工具连接本机oracle数据库与虚拟机的oracle数据库。
此处将与本机的oracle数据库连接命名为guoxu_B,将与虚拟机的oracle数据库连接命名为guoxu_虚拟机
②虚拟机连接本机oracle数据库
此处需注意using后的命名不是本机oracle数据库的服务名orcl,而是在虚拟机上使用Net Manager连接本机数据库时的连接服务命名oracle111。
create database link link5 connect to system identified by GuoXu1025 using 'oracle111';
③通过远程连接对本机oracle数据库的表进行select、delete等操作
查询本机oracle服务器上的数据库用户system拥有的表的数量
查询本机oracle服务器上Emp表的内容
使用delete命令删除Emp表中id为2001的整行数据
delete from “Emp” @link5 where ID = 2001;
删除后使用select命令重新查询Emp表
④本机连接虚拟机oracle数据库
在本机Net Manager上进行与虚拟机oracle的连接,服务命名为oracle222
利用Navicat连接虚拟机oracle数据库,连接命名为link9
create database link link9 connect to system identified by GuoXu102 using 'oracle222';
⑤通过远程连接虚拟机oracle数据库的表进行select、delete等操作
查询虚拟机oracle服务器上的数据库用户system拥有的表的数量
select table_name, tablespace_name, status from user_tables @link9;
查询虚拟机oracle服务器上Student表的内容
使用delete命令删除Student表中id为1001的整行数据
删除后使用select命令重新查询Student表
delete from "Student" @link9 where "id" = 1001;
select * from "Student" @link9;
至此,整个Oracle分布式数据库的环境已经搭建完成。
3.分布式数据库的详细设计过程——分区规则策略的实现
①分布式数据库详细设计概述
假设现有一个软件公司,公司总部在北京,另外在上海还有一个分公司。公司总部数据库中有一张公司全体员工的信息表EMP_ALL,里面包括所有员工的信息,对这张表基于部门进行水平分区。规定总部和分部员工的薪资情况只能在各部门下看到,基于此进行垂直分片。以本机oracle数据库模拟公司总部数据库,以虚拟机oracle模拟公司分部数据库。
②关系模式
整个公司的员工信息表为EMP_ALL={ENO,ENAME,EDEPT},此表存储在总部数据库中。
同时总部数据库用来存放总部员工的信息表为EMP_ZB={ENO,ENAME,EDEPT};
分部数据库用来存放分部员工的信息表为EMP_FB={ENO,ENAME,EDEPT};
存放总部所有员工的薪资情况的表为EMP_ZB_SAL={ENO,ENAME,SALARY} ;
存放分部所有员工的薪资情况的表为EMP_FB_SAL={ENO,ENAME,SALARY} 。
③分别创建表空间SP01与SP02
④在本机oracle建立EMP_ALL表,存放所有员工信息
EMP_ALL表存放的信息如下:
⑤查看水平分区结果EMP_ZB表(存放总部员工信息)
⑥查看水平分区结果EMP_FB表(存放总部员工信息)
⑦建立从本机oracle到虚拟机oracle的连接link9
建立虚拟机oracle到本机oracle的连接link5
⑧在本机oracle数据库上建立EMP_ZB_SAL表,用来存放总部员工的工资信息
⑨在虚拟机oracle数据库上建立EMP_FB_SAL表,用来存放分部员工的工资信息
⑩建立垂直分布视图
查看视图EMP_VIEW:
成功查得公司所有员工的全部信息,实现垂直分片!
注:上述的sql语句中,将两部分SELECT语句分别用于建立视图,即可分别得到公司本部员工所有信息的视图,与公司分部员工所有信息的视图。
四、实验总结
此次实验我完成了模拟Oracle分布式数据库环境的搭建、创建数据库之间的链接、访问远程数据库数据以及表的建立以及分片技术的分析与实现等功能,较好地完成了实验内容,在虚拟机上部署oracle数据库时,为了方便操作,我在虚拟机创建时选择了win10系统,后续也都是在虚拟机的win10系统下进行了oracle的所有操作。
实验完成过程较为复杂,在搭建分布式数据库、创建数据库连接及创建分区等部分都有遇到较多问题,实验整体耗时较长,但在解决每个问题的过程中,我也学习到了很多知识。现将实验过程中遇到的问题及解决方案说明如下:
问题一:在Net Manager创建了连接,但在tnsnames.ora文件里未生成对应配置信息
问题原因:创建连接后未手动保存网络配置,需要点击“文件—保存网络配置”后,才能在tnsnames.ora文件里自动生成对应配置信息。
问题二:切换电脑网络后,本机oracle与虚拟机oracle连接失败
问题原因:切换网络后,本机ip地址发生变化
解决方案:第一种方案是每次切换网络后都需查看本机ip,然后重新修改tnsname.ora文件中对应的ip地址等信息。但此方法需要每次切换网络都需要更改,较为麻烦,故而选择第二种方案——指定本机ip地址,这样切换网络后也不会自动分配ip地址。
另外也想到了更好的解决方案三:对现在的虚拟机进行克隆得到新的虚拟机,在虚拟机上分别配置oracle数据库,通过本机上的Navicat工具创建连接,进行两虚拟机oracle数据库之间的通信,这样操作较为方便,ip地址也不会随意改变。
问题三:虚拟机上TNSListener的服务无法启动
问题原因:自行指定了本机ip地址,修改ip地址后需重新配置监听程序
解决方案:首先查看oracle文件夹下的\network\admin的listener.ora文件,确定HOST的命名为虚拟机的hostname后(若不是,则将其修改为虚拟机的hostname),再重新使用Net Configuration Assistant工具重新配置监听程序。
问题四:修改tnsnames.ora文件与重新配置监听程序后仍连接失败
解决方案:每次修改tnsnames.ora文件、重新配置监听程序后,都需要手动重新启动本机或虚拟级的对应OracleOraDB19Home1TNSListener与OracleServiceORCL的服务,从而使得修改生效。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。