Oracle sharding database的示例分析

65次阅读
没有评论

共计 12535 个字符,预计需要花费 32 分钟才能阅读完成。

这篇文章主要为大家展示了“Oracle sharding database 的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“Oracle sharding database 的示例分析”这篇文章吧。

Sharding 架构是数据库层面的一种分片技术,可以使分过区的数据分布在各不相同的独立数据库里。Sharding 是 Oracle Database 12c Release 2 的新特性,它能为适合于 Sharding 技术的 OLTP 应用提供线性扩展和完全错误隔离的能力,q 我们可以将 Sharding 简单地理解为 Oracle 表分区技术的扩展,下面将详细描述安装操作。

1.Oracle Sharding 安装条件
12.2 企业版
non-cdb
使用文件系统而非 ASM(12.2 Beta 要求,正式发行后,可能会改)
主机 hosts 文件写上本机和各个 shard node 的 IP 解析
机器必须全新,不能残留之前有安装过 oracle 的信息。

2. 设置环境变量,创建相关目录与设置内核参数
shardcat 和 gds 都安装在一个主机上,同一个 oracle 用户,不同 ORACLE_HOME。

[oracle12c@sdb1 ~]$ cat .bash_profile
# .bash_profile
 
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
 
# User specific environment and startup programs
 
PATH=$PATH:$HOME/bin
 
export PATH
 
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
 
ORACLE_BASE=/u01/ora12c/app/oracle; export ORACLE_BASE
DB_HOME=$ORACLE_BASE/product/12.2.0/db_1; export DB_HOME
GSM_HOME=$ORACLE_BASE/product/12.2.0/gsm; export GSM_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=shardcat; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch; export PATH
 
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL
[root@shard1 ~]# groupadd -g 1009 dba
[root@shard1 ~]# groupadd -g 1010 oper
[root@shard1 ~]# groupadd -g 1011 oinstall
[root@shard1 ~]# useradd -u 1001 -g oinstall -G dba,oper oracle
[root@shard1 ~]# passwd oracle
Changing password for user oracle.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@shard1 ~]# mkdir -p /u01/app/oraInventory
[root@shard1 ~]# chown -R oracle:oinstall /u01/app/oraInventory
[root@shard1 ~]# chmod -R 775 /u01/app/oraInventory
[root@shard1 ~]# mkdir -p /u01/app/oracle
[root@shard1 ~]# chown -R oracle:oinstall /u01/app/oracle
[root@shard1 ~]# chmod -R 775 /u01/app/oracle
[root@shard1 ~]# mkdir -p /u01/app/oracle/product/12.2.0/db
[root@shard1 ~]# chown -R oracle:oinstall /u01/app/oracle/product/12.2.0/db
[root@shard1 ~]# chmod -R 775 /u01/app/oracle/product/12.2.0/db
[root@shard1 ~]# mkdir /u01/tmp
[root@shard1 ~]# chmod a+wr /u01/tmp
[root@shard1 ~]# mkdir -p /u01/app/oracle/product/12.2.0/gsm
[root@shard1 ~]# chown -R oracle:oinstall /u01/app/oracle/product/12.2.0/gsm
[root@shard1 ~]# chmod -R 775 /u01/app/oracle/product/12.2.0/gsm
[root@shard1 ~]# su - oracle
[oracle@shard1 ~]$ vi .bash_profile
export PATH
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH export PATH=$PATH:$ORACLE_HOME/bin CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib export CLASSPATH umask=022 [oracle@shard1 ~]$ alias gsm_env= . /home/oracle/gsm_env [oracle@shard1 ~]$ alias db_env= . /home/oracle/db_env   [oracle@shard1 ~]$ vi gsm_env ORACLE_HOME=$GSM_HOME; export ORACLE_HOME PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH [oracle@shard1 ~]$ vi db_env ORACLE_HOME=$DB_HOME; export ORACLE_HOME PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

修改内核参数编辑 /etc/sysctl.conf 文件

[root@shard1 ~]# vi /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/.conf file
# For more information, see sysctl.conf(5) and sysctl.d(5).
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
[root@shard1 ~]# sysctl -p
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

修改 oarcle 参数的 shell 限制, 在所有节点的 /etc/security/limits.conf 文件中添加以下参数

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728

修改 shell 的默认参数文件,在所有节点的 /etc/profile 文件中添加以下内容:

if [ $USER =  oracle  ]; then
if [ $SHELL =  /bin/ksh  ]; then
ulimit -p 16384
ulimit -n 65536
ulimit -u 16384 -n 65536
fi

3. 安装 Oracle 软件

[root@shard1 soft]# unzip linuxx64_12201_database.zip
[root@shard1 soft]# chown -R oracle:oinstall database
[root@shard1 Desktop]# xhost +
access control disabled, clients can connect from any host
[root@shard1 Desktop]# su - oracle
Last login: Thu Oct 12 12:01:58 CST 2017 on pts/1
[oracle@shard1 ~]$ export DISPLAY=:1
[oracle@shard1 ~]$ cd /soft/database
[oracle@shard1 database]$ ls -lrt
total 24
-rwxr-xr-x. 1 oracle oinstall 500 Feb 7 2013 welcome.html
drwxr-xr-x. 4 oracle oinstall 4096 Jan 26 2017 install
-rwxr-xr-x. 1 oracle oinstall 8771 Jan 26 2017 runInstaller
drwxr-xr-x. 2 oracle oinstall 34 Jan 26 2017 rpm
drwxrwxr-x. 2 oracle oinstall 28 Jan 26 2017 sshsetup
drwxrwxr-x. 2 oracle oinstall 58 Jan 26 2017 response
drwxr-xr-x. 14 oracle oinstall 4096 Jan 26 2017 stage
[oracle@shard1 database]$ ./runInstaller

[root@shard1 soft]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@shard1 soft]# /u01/app/oracle/product/12.2.0/db/root.sh
Performing root user operation.
The following environment variables are set as:
 ORACLE_OWNER= oracle
 ORACLE_HOME= /u01/app/oracle/product/12.2.0/db
Enter the full pathname of the local bin directory: [/usr/local/bin]: 
 Copying dbhome to /usr/local/bin ...
 Copying oraenv to /usr/local/bin ...
 Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root script. Now product-specific root actions will be performed. Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] :  Installing Oracle Trace File Analyzer (TFA). Log File: /u01/app/oracle/product/12.2.0/db/install/root_shard1_2017-10-12_13-06-02-537061115.log Finished installing Oracle Trace File Analyzer (TFA)

其它两个 shard 主机 shard2,shard3 安装 Oracle 软件的操作不再描述同上。

shard2 上的 oracle 环境变量设置如下, 其中 ORACLE_SID 与
ORACLE_UNQNAME 设置为 sh2,在后面向 shard catalog 数据库注册 shard 时会读取到

[oracle@shard2 ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH export PATH=$PATH:$ORACLE_HOME/bin CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib export CLASSPATH umask=022

shard3 上的 oracle 环境变量设置如下, 其中 ORACLE_SID 与
ORACLE_UNQNAME 设置为 sh2,在后面向 shard catalog 数据库注册 shard 时会读取到

[oracle@shard3 ~]$ vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH export PATH=$PATH:$ORACLE_HOME/bin CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib export CLASSPATH umask=022

4. 安装 Shard Director Software

[root@shard1 soft]# unzip linuxx64_12201_gsm.zip
[root@shard1 Desktop]# xhost + 
access control disabled, clients can connect from any host
[root@shard1 Desktop]# su - oracle
Last login: Thu Oct 12 18:05:56 CST 2017 on pts/0
[oracle@shard1 ~]$ export DISPLAY=:1
[oracle@shard1 ~]$ cd /soft/gsm
[oracle@shard1 gsm]$ ls -lrt
total 24
-rwxrwxr-x. 1 oracle oinstall 500 Feb 7 2013 welcome.html
-rwxr-xr-x. 1 oracle oinstall 8772 Jan 26 2017 runInstaller
drwxr-xr-x. 4 oracle oinstall 4096 Jan 26 2017 install
drwxrwxr-x. 2 oracle oinstall 28 Jan 26 2017 response
drwxr-xr-x. 14 oracle oinstall 4096 Jan 26 2017 stage
[oracle@shard1 gsm]$ ./runInstaller

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

[root@shard1 soft]# /u01/app/oracle/product/12.2.0/gsm/root.sh
Performing root user operation.
The following environment variables are set as:
 ORACLE_OWNER= oracle
 ORACLE_HOME= /u01/app/oracle/product/12.2.0/gsm
Enter the full pathname of the local bin directory: [/usr/local/bin]: 
The contents of  dbhome  have not changed. No need to overwrite.
The contents of  oraenv  have not changed. No need to overwrite.
The contents of  coraenv  have not changed. No need to overwrite.
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

5. 创建 shard catalog 数据库
运行 dbca 开始建立数据库实例,这个实例是放分片数据的元数据的。我们把这个实例名叫 shardcat。

[root@shard1 Desktop]# xhost +
access control disabled, clients can connect from any host
[root@shard1 Desktop]# su - oracle
Last login: Thu Oct 12 18:35:35 CST 2017 on pts/1
[oracle@shard1 ~]$ export DISPLAY=:1
[oracle@shard1 ~]$ dbca

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

Oracle sharding database 的示例分析

[oracle@shard1 arch]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 12-OCT-2017 18:58:06
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=shard1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 12-OCT-2017 18:26:22
Uptime 0 days 0 hr. 31 min. 43 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.2.0/db/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/shard1/listener/alert/log.xml
Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=shard1)(PORT=1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service  shardcat  has 1 instance(s).
 Instance  shardcat , status READY, has 1 handler(s) for this service...
Service  shardcatXDB  has 1 instance(s).
 Instance  shardcat , status READY, has 1 handler(s) for this service...
The command completed successfully

6. 设置 Oracle Sharding Management and Routing Tier
登录 shardcat 主机,登录 shardcat 数据库:– 建立 tablespace set 需要使用 omf,所以需要指定 db_create_file_dest 参数。

[oracle@shard1 ~]$ echo $ORACLE_SID
shardcat
[oracle@shard1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Oct 12 19:01:30 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL  alter system set db_create_file_dest= /u01/app/oracle/oradata  scope=both;
System altered.
SQL  alter system set open_links=16 scope=spfile;
System altered.
SQL  alter system set open_links_per_instance=16 scope=spfile;
System altered.
SQL  startup force
ORACLE instance started.
Total System Global Area 2147483648 bytes
Fixed Size 8622776 bytes
Variable Size 620760392 bytes
Database Buffers 1509949440 bytes
Redo Buffers 8151040 bytes
Database mounted.
Database opened.
SQL  alter user gsmcatuser account unlock;
User altered.
SQL  alter user gsmcatuser identified by oracle;
User altered.
SQL  create user mygdsadmin identified by oracle;
User created.
SQL  grant connect, create session, gsmadmin_role to mygdsadmin;
Grant succeeded.
SQL  grant inherit privileges on user SYS to GSMADMIN_INTERNAL;
Grant succeeded.
(update 2016-11-10  注:在 12.2. beta 2 后可以不做这步)
SQL  alter system set events  immediate trace name GWM_TRACE level 7  
System altered.
(update 2016-11-10  注:在 12.2. beta 2 后可以不做这步)
SQL  alter system set event= 10798 trace name context forever, level 7  scope=spfile;
System altered.
SQL  execute dbms_xdb.sethttpport(8080);
PL/SQL procedure successfully completed.
SQL  commit;
Commit complete.
SQL  @?/rdbms/admin/prvtrsch.plb 
PL/SQL procedure successfully completed.

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计12535字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)