본문 바로가기

Database/Oracle Database

18c 신기능 - 오라클 샤딩 (Sharding) - #4 설치 사례 - Sharding Management & Routing Tier 설정

이전 글: 2022.04.19 - [Database/Oracle Database] - 18c 신기능 - 오라클 샤딩 (Sharding) - #3 설치 사례 - Software, Catalog 설치

 

Sharding Management & Routing Tier 설정

이제 shard catalog, shard director, shard 서로 통신하도록 설정할 차례입니다.

Shard Catalog 호스트에 접속해서 db_create_file_dest, open_links, open_links_per_instance 파라미터를 설정합니다. open_links, open_links_per_instance 이후 데모용 어플리케이션에서 사용됩니다. 16으로 설정했습니다.

[oracle@inst-scatalog ~]$ sqlplus "/as sysdba"
...
SQL> alter system set db_create_file_dest='/opt/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> shutdown immediate
...
SQL> startup
ORACLE instance started.
...
SQL> show parameter open_links

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_links                           integer     16
open_links_per_instance              integer     16

 

Sharding 유저/권한을 설정합니다. 신규로 생성하는 mysdbadmin 스키마에는 Sharding 환경 정보 관리 작업에 대한 변경 사항이 저장됩니다. gdsctl 명령이 mysdbadmin 유저를 통해 수행되어 Shading 변경 사항이 전달됩니다.

SQL> set echo on
SQL> set termout on
SQL> spool setup_grants_privs.lst
SQL> alter user gsmcatuser account unlock;

User altered.

SQL> alter user gsmcatuser identified by Welcome123##;

User altered.

SQL> create user mysdbadmin identified by Welcome123##;

User created.

SQL> grant connect, create session, gsmadmin_role to mysdbadmin;

Grant succeeded.

SQL> grant inherit privileges on user SYS to GSMADMIN_INTERNAL;

Grant succeeded.

SQL> spool off

 

Shard Director 호스트에 접속해서 shard catalog 생성합니다. sharding 방식 (system-managed, user-defined, composite) 따라 shard catalog 생성 옵션이 다릅니다. 여기서는 DG, ADG, OGG 등을 이용한 shard replication 하지 않고, system-managed 방식으로 Sharding shard catalog 생성했습니다.

 

참고. Sharding에서 사용되는 GDSCTL 명령어 reference

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/gsmug/gdsctl-sharding-env.html#GUID-3285C437-78F8-4339-AAAB-33DBB7A9D400

 

아래에서 “-agent_port” XDB 사용할 포트 번호입니다. 지정하지 않으면 8080으로 세팅됩니다. “-agent_password” remote scheduler Catalog DB agent 등록 사용하는 패스워드입니다.

[oracle@inst-sdirector ~]$ gdsctl
GDSCTL: Version 19.0.0.0.0 - Production on Fri Nov 22 13:17:23 KST 2019

Copyright (c) 2011, 2019, Oracle.  All rights reserved.

Welcome to GDSCTL, type "help" for information.

Warning:  GSM  is not set automatically because gsm.ora does not contain GSM entries. Use "set  gsm" command to set GSM for the session.
Current GSM is set to GSMORA
GDSCTL> create shardcatalog -database 10.0.2.2:1521:SCATALOG -user mysdbadmin/Welcome123## -sdb demo_sdb -agent_port 8080 -agent_password Welcome123##

Catalog is created

 

shard director를 생성 시작합니다.

GDSCTL> add gsm -gsm sdirector -listener 1521 -pwd Welcome123## -catalog 10.0.2.2:1521:SCATALOG
GSM successfully added
GDSCTL> start gsm -gsm sdirector
GSM is started successfully

 

shard director shard 접속해서 remote scheduler agent 수행하여 DBCA, NETCA 등을 이용해서 shard 셋업하기 위해서는 ①각 shard에서 Oracle 환경설정과, Oracle Software 설치 유저 (oracle) OS 계정 정보가 필요합니다. 또한 ③각 shard에서 scheduler agent (schagent) 통신하는 포트를 찾아서 shard catalog 통신할 있도록 개방해 줘야 합니다.

 

Shard1 호스트에 접속해서 1 shard에서 Oracle 환경설정을 합니다.

[root@inst-shard1 tmp]# su - oracle
Last login: Mon Dec  2 00:51:24 GMT 2019
[oracle@inst-shard1 ~]$ vi .bash_profile
...
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=sh1
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
...
[oracle@inst-shard1 ~]$ source .bash_profile
[oracle@inst-shard1 ~]$ exit
logout

 

Shard2 호스트에 접속해서 2 shard에서 Oracle 환경설정을 합니다.

[root@inst-shard2 tmp]# su - oracle
Last login: Mon Dec  2 00:51:22 GMT 2019
[oracle@inst-shard2 ~]$ vi .bash_profile
...
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=sh2
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
...
[oracle@inst-shard2: ~]$ source .bash_profile
[oracle@inst-shard2 ~]$ exit
logout

 

shard1, shard2 호스트에서 패스워드 인증이 가능하도록 sshd 설정을 변경 , root, oracle 패스워드 설정. shard1, shard2 호스트 모두 설정합니다.

[root@inst-shard1 opc]# vi /etc/ssh/sshd_config
...
PermitRootLogin yes
...
PasswordAuthentication yes
...
#PasswordAuthentication no
...
[root@inst-shard1 opc]# service sshd reload
Redirecting to /bin/systemctl reload sshd.service
[root@inst-shard1 opc]# passwd root
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@inst-shard1 opc]# passwd oracle
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

 

Shard Director 호스트에 접속해서 shard director shard 접속해서 remote scheduler agent 수행하여 DBCA, NETCA 등을 이용해서 shard 셋업 사용할 credential 생성합니다. 여기서 계정은 shard Oracle Software 설치 OS 유저 (oracle) 정보입니다.

GDSCTL> add credential -credential oracle_cred -osaccount oracle -ospassword dhfkzmfWkd1!
The operation completed successfully
GDSCTL> exit

 

shard 접속해서 schagent 시작하고, shard catalog 연결합니다.

“schagent -registerdatabase” 명령에서 사용하는 포트는 “create shardcatalog” 에서 지정한 포트 번호입니다. 디폴트는 8080. 패스워드를 입력하라고 하는 부분에서는 마찬가지로 “create shardcatalog” 에서 지정한 패스워드를 입력합니다.

또한 schagent 사용 포트를 개방 합니다. VCN 레벨에서는 이미 shard shard catalog 통신을 가능하도록 했으니, 호스트에서만 개방하면 됩니다.

Shard1 호스트에 접속해서

[root@inst-shard1 opc]# su - oracle
Last login: Tue Dec  3 00:56:06 GMT 2019 on pts/0
[oracle@inst-shard1 ~]$ schagent -start

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /opt/oracle/product/19c/dbhome_1/data/wallet/agent.key -destkeystore /opt/oracle/product/19c/dbhome_1/data/wallet/agent.key -deststoretype pkcs12".

Scheduler agent started using port 17553
[oracle@inst-shard1 ~]$ schagent -status
Agent running with PID 3169

Agent_version:19.3.0.0.0
Running_time:00:00:29
Total_jobs_run:0
Running_jobs:0
Platform:Linux
ORACLE_HOME:/opt/oracle/product/19c/dbhome_1
ORACLE_BASE:/opt/oracle
Port:17553
Host:inst-shard1.subnetshard.demovcn.oraclevcn.com
[oracle@inst-shard1 ~]$ schagent -registerdatabase 10.0.2.2 8080
Agent Registration Password ? *************

Oracle Scheduler Agent Registration for 19.3.0.0.0 Agent
Agent Registration Successful!
[oracle@inst-shard1 ~]$ exit
logout

 

“schagent -status” 명령에서 확인한 schagent 사용 포트를 개방합니다.

[root@inst-shard1 opc]# firewall-cmd --permanent --add-port=17553/tcp
success
[root@inst-shard1 opc]# firewall-cmd --reload
success

 

shard 생성 사용되는 디렉토리도 미리 생성합니다.

[root@inst-shard1 opc]# su – oracle
[oracle@inst-shard1 ~]$ mkdir -p $ORACLE_BASE/oradata
[oracle@inst-shard1 ~]$ mkdir -p  $ORACLE_BASE/fast_recovery_area

 

Shard2 호스트에 접속해서 아래와 같이 수행합니다.

[root@inst-shard2 opc]# su - oracle
Last login: Tue Dec  3 00:51:21 GMT 2019 on pts/0
[oracle@inst-shard2 ~]$ schagent -start
[oracle@inst-shard2 ~]$ schagent -start

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /opt/oracle/product/19c/dbhome_1/data/wallet/agent.key -destkeystore /opt/oracle/product/19c/dbhome_1/data/wallet/agent.key -deststoretype pkcs12".

Scheduler agent started using port 20395
[oracle@inst-shard2 ~]$ schagent -status
Agent running with PID 25053

Agent_version:19.3.0.0.0
Running_time:00:00:26
Total_jobs_run:0
Running_jobs:0
Platform:Linux
ORACLE_HOME:/opt/oracle/product/19c/dbhome_1
ORACLE_BASE:/opt/oracle
Port:20395
Host:inst-shard2.subnetshard.demovcn.oraclevcn.com

[oracle@inst-shard2 ~]$ schagent -registerdatabase 10.0.2.2 8080
Agent Registration Password ? *************

Oracle Scheduler Agent Registration for 19.3.0.0.0 Agent
Agent Registration Successful!
[oracle@inst-shard2 ~]$ exit
logout

 

“schagent -status” 명령에서 확인한 schagent 사용 포트를 개방합니다.

[root@inst-shard2 opc]# firewall-cmd --permanent --add-port=20395/tcp
success
[root@inst-shard2 opc]# firewall-cmd --reload
success

 

shard 생성 사용되는 디렉토리도 미리 생성합니다.

[root@inst-shard2 opc]# su – oracle
[oracle@inst-shard2 ~]$ mkdir -p $ORACLE_BASE/oradata
[oracle@inst-shard2 ~]$ mkdir -p  $ORACLE_BASE/fast_recovery_area

 

<END>

다음 글로 이어집니다:

2022.04.19 - [Database/Oracle Database] - 18c 신기능 - 오라클 샤딩 (Sharding) - #5 설치 사례 - System-Managed Sharded Database 생성