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
아래에서 “-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>
다음 글로 이어집니다: