Oracle单机模拟分布式+分片操作

413 阅读6分钟

一、目的:

Oracle单机模拟分布式+数据分片操作.

二、环境需求

  1. Windows10操作系统.
  2. Orale11g数据库.
  3. Vmware虚拟机管理工具.

三、提示

本实验使用一个Windows10虚拟机和本机(Windows10)模拟Oracle分布式。

四、实验步骤

1.创建虚拟机节点
首先下载好cn_windows_10_education_x64_dvd_6847843.iso文件,即windows10教育版虚拟机,然后在Vmware中选择创建新的虚拟机,持续选择下一步,图中所给即为配置项。

![](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9c90ea1e8dc74182b323e2b9aaf2e430~tplv-k3u1fbpfcp-watermark.image)

到此Windows10虚拟机配置完毕,其中内存给了3G,磁盘空间给了60G。

     2 . 然后打开Windows虚拟机并进行Oracle的部署,部署过程在此不具体写(与本机相同)。

系统信息:

   3\. 然后先后打开主机和虚拟机的CMD命令行使用ipconfig命令查看其IP地址,并且关闭虚拟机和主机所在网络的防火墙,然后使用一个设备区Ping另一台,查看效果

注:查看本机IP地址时,需使用与虚拟机IP地址的网络名相同的IP

主机

Ping虚拟机,正常

虚拟机

Ping主机,正常

4 . 以主机为例,配置服务,虚拟机相似。

找到Oracle的安装目录,并找**:\app\wh\product\11.2.0\dbhome_1\NETWORK\ADMIN**

目录下的**listener.ora**文件,用高级文本编辑器打开并修改SID_LIST_LISTENER部分内容为此.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\wh\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\wh\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
    (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = E:\app\wh\product\11.2.0\dbhome_1)
      (GLOBAL_DBNAME = orcl)
    )
  )

其中SID_DESC、GLOBAL_DBNAME值为全局数据库名称,虚拟机的配置与此处相同。

5. 然后打开NET MANAGER在监听程序中的LISTENER中添加一份地址,并同样选择网络名与虚拟机相同的IP地址,设置端口号为1521,并在文件菜单处保存配置。

而后以管理员身份打开cmd命令行,输入lsnrctl进入监听程序配置,先stop停止,再用start启动监听服务,使得监听程序的新地址写入文件。

到此即可开始进行测试。

6.测试配置

同样在NET MANAGET界面中,点击服务命名,然后单击“+”号,新建oracle22(新建的服务名)服务,

然后选择TCP/IP协议

然后输入虚拟机的IP地址,端口号为1521

设置服务名为ORCL(待访问数据库的全局数据库名称),设置连接类型为默认链接或者共享连接,然后即可测试。

7.测试

测试成功,虚拟机操作与此相同,在此不做叙述。
**8.使用Navicat连接数据库**

分别使用sys、scott用户使用Navicat连接本机和虚拟机的Oracle,共4个连接

Navicat连接Oracle步骤为:

1.连接本机用scott用户

2.连接本地用sys用户

Navicat连接虚拟机的Oracle配置与连接本机相似,只将主机改为虚拟机的IP地址,建立后的4个连接为

分别在两个sys连接中给scott赋予sys权限

赋予后,即可使用scott用户创建连接,使用本机连接虚拟机

可以看到虚拟机有4个表,然后在虚拟机创建一个新表

再用本机连接查看虚拟机的数据表

9.分布式测试

然后用本机查看虚拟机的emp表内容 select * from emp @link1;

然后删除部分数据

delete from emp @link1 where ename='SMITH';
select * from emp @link1;
删除完之后的查询结果如下图示:

虚拟机对主机的连接也可以用
create database link link1 connect to scott identified by tiger using '192.168.197.1:1521/orcl';

建立

至此,分布式数据库的环境搭建已经完成

10.数据分片

首先在本机和虚拟机建立相同的

CUSTOMERS表

CREATE TABLESPACE 
CUS_TSDATAFILE 'CUS_TS.dat'
SIZE 5M
AUTOEXTEND ON;
CREATE TABLE CUSTOMERS(
    CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,
    FIRST_NAME  VARCHAR2(30)  NOT  NULL,
    LAST_NAME   VARCHAR2(30) NOT NULL,
    PHONE       VARCHAR2(15) NOT NULL,
    EMAIL       VARCHAR2(80),
    STATUS      CHAR(1));
commit;
然后分别再两边插入信息
向本机插入信息为:
insert into CUSTOMERS values (1,'w','h','119120110','123@qq.com','a');
向虚拟机插入信息为:
insert into CUSTOMERS values (100001,'y','h','120120120','321@qq.com','a');
然后分别查看两边的数据信息
在本机查看数据:
SELECT * FROM CUSTOMERs ;

在虚拟机上查看数据:

然后在本机建立视图

CREATE VIEW customers_v AS
SELECT * FROM customers
UNION ALL
SELECT * FROM customers 
@link1
然后查看视图内容
SELECT * FROM customers_v;

使用虚拟机进行相同操作视图结果:

实验结束。

**四**、实验总结**:**
由于专业课程中多用到

CentOS7的最小安装即无图形界面的虚拟机,所以优先考虑CentOS7的最小安装即无图形界面的虚拟机作为Oracle分布式的节点,查阅资料并尝试安装后发现无图形化的虚拟机在很多方面有较大问题,不好实现,而后又选则了Ubuntu20虚拟机,但同样在安装过程中那个发现Oracle在Linux中的安装部署过于复杂,多次尝试后还是无法完成,所以又使用Windwos虚拟机,首先考虑了Windows自带的Hyper-v虚拟机管理工具,实验大部分正常,只是在使用虚拟机访问本机时无法正常完成访问,总是报错为

ORA-12520TNS:监听程序无法为请求的服务器类型找到可用的处理程序尝试一般更改方法未解决,而后发现****VmwareHyper-v无法共存,尝试解决失败后,又放弃了Hyper-v管理工具,使用Vmware操作,后文仅给出成功的实验流程,失败的CentOS7UbtuntuHyper-v均不给出。**实验中遇到的错误:**ORA-12720,解决方法为,首先查看oralc的目:\app\wh\product\11.2.0\dbhome_1\NETWORK\ADMIN

**下的tnsnames.ora文件中,**
ORCL =  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))    )    
(CONNECT_DATA = 
     (SERVER = DEDICATED)  
    (SERVICE_NAME = orcl)    )  )
**部分中查看****SERVER**值是否为SHARED,是的话改为**DEDICATED**然后在系统测试中新建进程并再次测试,若还是失败,则判断为**process**不足问题,则需要通过sqlplus更改process值,具体做法为,在cmd中输入sqlplus,并以sys或者system用户登录,然后用

select count(*) from v$process;

语句查看当前的process数量,然后使用

alter system set processes = 300 scope = spfile;

命令合适的增大process值,然后再用
shutdown immediate
命令 关闭数据库,再用
`startup`
启动数据库即可完成改动,再次在系统测试步骤建立新的测试进程,即可完成测试,注:每次更改后需要删去原来的测试进程并建立新的测试进程才可。