Oracle_12c_Sharding集群安装教程
Oracle Sharding是Oracle 12.2版本推出的新功能,也称为数据分片,适用于online transaction processing (OLTP). Oracle Sharding基于表分区技术,是一种在数据层将数据水平分区存储到不同的数据库的技术. Sharding可以实现将一个分区表的不同分区存储在不同的数据库中,每个数据库位于不同的服务器,每一个数据库都称为shard, 这些shard组成一个逻辑数据库,称为sharded database (SDB). 这个table也称为sharded table, 每个shard数据库中保存该表的不同数据集(按照sharding key分区), 但是他们有相同的列(columns)。
Oracle Sharding优势:
Oracle Sharding技术提供线性扩展和失败隔离的优点:
线性扩展: 因为每个shard是一个独立的数据库,通过增加新的Shard节点,来线性扩展性能。自动rebalance数据。
失败隔离: 由于Shard是一种shared-nothing技术,每个shard使用独立的硬件,因此一个shard节点出现故障,只会影响到这个shard存放的数据,而不会影响到其他shard。
按照地理位置分布数据:可以选择根据地理位置不同,将数据存储在不同的shard。
滚动升级:选择不同时间升级不同的shard。比如同一时间只升级一个或一部分shard,那么只有这些升级的shard中存储的数据受到影响,其他的shard不受到影响,可以继续提供服务。
云部署:Shard非常适合部署在cloud。
Oracle 12c realese2安装教程
Oracle下载地址
单机节点
1 | 10.244.4.30 1521 SID=orcl |
shard集群信息
1 | master: |
单机版
1.创建oracle用户及oinstall用户组
创建oracle用户和oinstall用户组
1 | sudo groupadd oinstall |
创建oracle安装目录
1 | [oracle] mkdir -p ~/u01/app |
创建前一定要用df -h
查看下磁盘分区,选择合适的安装目录,最好磁盘空间剩余大于20G,开发机下 / 目录只有50G空间,不建议将oracle的安装目录设置在 / 目录下。
2.设置swap分区
free -m
查看swap分区情况
设置swap分区方法(512M)
1 | sudo dd if=/dev/zero of=/swapfile1 bs=1024k count=512 |
3.vnc配置
通过vnc可以使用图形化界面安装oracle,大大提高安装成功率
1 | sudo yum install tigervnc-server -y |
server开启vnc: vncserver :1
server停止vnc: vncserver -kill :1
客户端vnc下载地址
客户端连接方法: IP:开启的端口号
TIPS:
1、如果vnc没有出现shell窗口,检查server是否安装xterm
2、如果使用更多图形化界面,安装gnome
4.安装oracle 12c依赖包
1 | sudo yum install -y binutils* |
5.开始安装
通过vnc连接server,在安装目录下执行 ./runInstaller
安装过程具体每一步操作参考: 大专栏 Oracle_12c_Sharding集群安装教程ntq.net/2017/04/18/install-db12c-ol73/#%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%AE%BE%E7%BD%AE" target="_blank" rel="noopener noreferrer">Oracle Linux 7.3 下安装 Oracle Database 12c R2
Oracle环境变量
1 | export ORACLE_BASE=/home/oracle/u01/app |
Listener开启和关闭方法
1 | lsnrctl start |
TIPS: 如果遇到sqlplus command not found
lsnrctl command not found
,检查下环境变量是否失效
创建Oracle实例的方法: 执行 $ORACLE_HOME/bin/dbca
Sharding集群版
1.节点需要安装的服务
Master节点: Oracle RDMS,GSM
Slave节点: Oracle RDMS
Oracle安装Singleinstance database installation
版本,安装好之后仅仅在Master节点创建实例(非non-cdb
)
slave节点可采用响应文件进行静默安装 ./runInstaller -silent -responseFile /home/oracle/db.rsp
安装详细过程过程参考
2.配置hosts和防火墙
配置SDB与各个shard节点的host
1 | 100.88.11.91 OceanBase088011091.gtjsqa OceanBase088011091 |
关闭防火墙,开发机上默认是关闭的,最好检查一下
1 | sudo service iptables status |
3.Shard配置流程
环境变量
Oracle
1
2
3
4export ORACLE_BASE=/home/oracle/u01/app
export ORACLE_HOME=/home/oracle/u01/app/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=catadbGSM
1
2
3export ORACLE_BASE=/home/oracle/u01/app
export ORACLE_HOME=/home/oracle/u01/app/product/12.2.0/gsmhome_1
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
在master服务器(catalog 数据库/shard director),连接到Sharding catalog数据库, 解锁 GSMCATUSER 用户,shard director 通过GSMCATUSER 用户连接到shard catalog database
1
SQL> alter user gsmcatuser identified by oracle account unlock;
在 catalog数据库,创建管理用户mygds,用户mygds用于存储Sharding管理信息,GDSCTL接口通过用户mygds连接到catalog数据库
1
2
3
4SQL> create user mygds identified by oracle;
SQL> grant connect, create session, gsmadmin_role to mygds;
SQL> grant inherit privileges on user SYS to GSMADMIN_INTERNAL;
SQL> exec DBMS_SCHEDULER.SET_AGENT_REGISTRATION_PASS('oracle');
在gsm1服务器(catalog 数据库/shard director),创建shard catalog,在shard catalog中配置remote scheduler agent
1
2
3$ gdsctl
GDSCTL> create shardcatalog -database OceanBase088011091:1521:catadb -chunks 12 -user mygds/oracle -sdb shdb -region region1, region2 -agent_port 8080 -agent_password oracle
Catalog is created创建和启动shard director
1
2
3
4
5
6
7
8GDSCTL> add gsm -gsm sharddirector3 -listener 1522 -pwd oracle -catalog OceanBase088011091:1521:catadb -region region1
GSM successfully added
GDSCTL>start gsm -gsm sharddirector3
GSM is started successfully
GDSCTL> add credential -credential cre_reg1 -osaccount oracle -ospassword oracle
The operation completed successfully去shard节点上进行注册
1
2
3
4
5$ schagent -start
Scheduler agent started using port 21620
$ schagent -status
$ echo oracle | schagent -registerdatabase 100.88.11.91 8080
$ lsnrctl stop
**一定要关闭shard节点上的监听器**
deploy shard
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16$ gdsctl
GDSCTL> set gsm -gsm sharddirector3
GDSCTL> connect mygds/oracle
Catalog connection is established
GDSCTL> add shardgroup -shardgroup primary_shardgroup -deploy_as primary -region region1
The operation completed successfully
GDSCTL> add invitednode OceanBase088011096
GDSCTL> create shard -shardgroup primary_shardgroup -destination OceanBase088011096 -credential cre_reg1 -sys_password oracle
The operation completed successfully
DB Unique Name: sh1
GDSCTL> deploy
查看shard配置 `config shard`
查看invitednode `config vncr`
删除shard配置 `remove shard -shard sh1`
删除invitednode `remove invitednode oceanbase004085`
看到如下信息,说明shard集群已经搭建成功
1
2
3
4
5
6
GDSCTL>config shard
Catalog connection is established
Name Shard Group Status State Region Availability
---- ----------- ------ ----- ------ ------------
sh1 primary_shardgroup Ok Deployed region1 ONLINE
sh2 primary_shardgroup Ok Deployed region1 ONLINE
3.注意事项
下面是我安装过程中碰到的坑
- 安装Oracle过程中会检查安装条件,ignore即可
- slave节点安装好Oracle后,关闭Listener,否则deploy过程中会报错
- add shard过程中,如果遇到
destination not found
错误,检查节点上Hosts文件配置,确保各个节点上可以ping通 - deploy过程中十分缓慢(10分钟至20分钟),成功或者错误都会返回信息
如果还碰到困难参考下面帖子:
原文地址:https://www.cnblogs.com/sanxiandoupi/p/11698674.html
- 泛型List<T>使用示例
- linux系统最小化安装后的初始化脚本
- 简单对比git pull和git pull --rebase的使用
- VS 2010一步步开发windows服务(windows service)
- 运算符重载,以及迭代器[foreach]示例
- 牛津大学王宁博士:大数据与有限理性
- 侃哥:苹果服软了就“降速门”公开致歉并祭出优惠
- 委托示例(利用委托对不同类型的对象数组排序)
- event & delegate Demo(事件&委托示例)
- 最简单的匿名方法与委托示例
- Eclipse与Android源码中ProGuard工具的使用
- VSTS知识整理
- msmq在Internet上访问的问题(只能发送,不能接收)
- .Net3.0中的自动属性(示例)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- chrome 插件通信DEOM
- rust 模块组织结构
- PCIe例程理解(一)用户逻辑模块(接收)仿真分析
- 细品服务并发限流+Redis-cell的使用
- 在VCUTRD 2020.1 里设置HDMI-TX显示QT界面
- 稀疏数组 & 环形队列
- Spring+Mybatis+Atomikos实现分布式事务
- Android低功耗蓝牙总结
- 【云原生技术研究】 从bpftrace看如何利用eBPF实现内核追踪
- Qt多线程编程
- JavaScript中的时间与日期、正则表达式和Function类型
- JavaScript中的变量、作用域、内存问题和基本包装类型
- 【LeetCode之C#解法】 移动零、爬楼梯
- jQuery框架概述
- 久等了!Docker容器常用命令