1. 程式人生 > 其它 >Oracle 19C 分片叢集安裝測試

Oracle 19C 分片叢集安裝測試

技術標籤:oracle

Oracle 19C 分片叢集安裝測試

資料庫版本需要12c R2以上

一 叢集安裝

安裝依賴包

yum -y install nano vim wget curl net-tools lsof  zip unzip perl autoconf autoconf binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libXau libXi libXau.i686 libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ xterm libXp e2fsprogs e2fsprogs-libs elfutils-libelf-devel libXrender bc

建立使用者相關資訊

建立組:

/usr/sbin/groupadd -g 1001 oinstall
/usr/sbin/groupadd -g 1002 dba
/usr/sbin/groupadd -g 1003 oper
/usr/sbin/groupadd -g 1004 asmdba
/usr/sbin/groupadd -g 1005 backupdba
/usr/sbin/groupadd -g 1006 dgdba
/usr/sbin/groupadd -g 1007 kmdba
/usr/sbin/groupadd -g 1008 racdba

建立使用者:
/usr/sbin/useradd -u 1001 -m -g oinstall -G dba,oper,asmdba,backupdba,dgdba,kmdba,racdba oracle

chage -M -1 oracle
chage -l oracle

修改作業系統相關配置檔案

  1. 修改/etc/sysctl.conf

     [[email protected] ~]# grep MemTotal /proc/meminfo
     MemTotal:       131348800 kB
    
     #計算方法如下
     shmall  = 3861320 * 1024 / 4096 =32837200
     shmmax  =  3861320 * 1024 *0.9 =121051054080
    
     vi /etc/sysctl.conf
    
     fs.file-max = 6815744
     kernel.sem = 250 32000 100 128
     kernel.shmmni = 4096
     kernel.shmall = 121051054080
     kernel.shmmax = 121051054080
     kernel.panic_on_oops = 1
     net.core.rmem_default = 262144
     net.core.rmem_max = 4194304
     net.core.wmem_default = 262144
     net.core.wmem_max = 1048576
     net.ipv4.conf.all.rp_filter = 2
     net.ipv4.conf.default.rp_filter = 2
     fs.aio-max-nr = 1048576
     net.ipv4.ip_local_port_range = 9000 65500
    
     #生效
     sysctl -p
    
  2. 修改/etc/hosts

     10.10.100.24 sit1
     10.10.100.25 sit2
     10.10.100.26 sit3
     10.10.100.27 sit4
    
  3. 修改/etc/security/limits.conf

     oracle soft nproc 100000
     oracle hard nproc 100000
     oracle soft nofile 100000
     oracle hard nofile 100000
     oracle  soft  stack  100000
     oracle  hard  stack  100000
    
  4. vi /etc/pam.d/login

    session required /lib64/security/pam_limits.so
    #session required /lib/security/pam_limits.so

建立目錄

mkdir -p /app/oracle
chown -R oracle:oinstall /app/oracle
su - oracle

vi .bash_profile

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=sit1; export ORACLE_HOSTNAME
ORACLE_BASE=/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; 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

在所有非gsm節點安裝資料庫軟體(只安裝軟體)

解壓安裝檔案

mv /app/LINUX.X64_193000_db_home.zip /app/oracle/product/19.3.0/db_1/
cd /app/oracle/product/19.3.0/db_1
unzip LINUX.X64_193000_db_home.zip

修改響應檔案

cd /app/oracle/product/19.3.0/db_1/install/response
vi db_install.rsp


oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/app/oracle/oraInventory
ORACLE_HOME=/app/oracle/product/19.3.0/db_1
ORACLE_BASE=/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba

執行響應指令碼

./runInstaller -silent -force -responseFile /app/oracle/product/19.3.0/db_1/install/response/db_install.rsp

安裝gsm節點

mkdir -p /app/gsm/product/19.3.0/gsm
chown -R oracle:oinstall /app/gsm/product/19.3.0/gsm
mv LINUX.X64_193000_gsm.zip /app/gsm/product/19.3.0/
unzip LINUX.X64_193000_gsm.zip
./runInstaller -silent -force -responseFile /app/gsm/product/19.3.0/gsm/response/gsm_install.rsp

安裝Shard catalog

Shard catalog是shard伺服器的元資料資訊,也是個Oracle資料庫,所以在非gsm伺服器中正常安裝資料庫就行,但是記住,真正的shard伺服器不要建立監聽

  1. 建立監聽

     netca /silent /responsefile /app/oracle/product/19.3.0/db_1/assistants/netca/netca.rsp
    
  2. 修改dbca.rsp響應檔案

     vi /app/oracle/product/19.3.0/db_1/assistants/dbca/dbca.rsp
    
     gdbName=catadb
     sid=catadb
     createAsContainerDatabase=false # 這個引數很重要必須是false
     sysPassword=sys
     systemPassword=sys
     totalMemory=4096
     characterSet=AL32UTF8
     nationalCharacterSet=AL16UTF16
     templateName=General_Purpose.dbc
    
     dbca -silent -createDatabase -responseFile /app/oracle/product/19.3.0/db_1/assistants/dbca/dbca.rsp
    
  3. 設定Oracle分片管理和路由層

     連線新建的catalog資料庫
    
     sqlplus / as sysdba
    
    
     SQL> show parameter db_create_file_dest;
     
     NAME				     TYPE	 VALUE
     ------------------------------------ ----------- ------------------------------
     db_create_file_dest		     string
    
     # 此引數必須設定,否則無法建立後面的分片表空間
     SQL> alter system set db_create_file_dest='/app/oracle/oradata' scope=both;
     SQL> show parameter open_links;
     
     NAME				     TYPE	 VALUE
     ------------------------------------ ----------- ------------------------------
     open_links			     integer	 4
     open_links_per_instance 	     integer	 4
    
     SQL> alter system set open_links=200 scope=spfile;
     SQL> alter system set open_links_per_instance=200 scope=spfile;
    
     SQL> alter user gsmcatuser identified by oracle account unlock;
     SQL> create user damsadmin identified by damsadmin;
     SQL> grant connect, create session, gsmadmin_role to damsadmin;
     SQL> grant inherit privileges on user SYS to GSMADMIN_INTERNAL;
    

配置GSM

  1. 連線GSM

     [[email protected] ~]$ gdsctl
     # catadb主備模式配置 可以用主備模式建立catadb,因為catadb假如出現故障所有叢集無法使用
     # 建立系統管理的分片目錄
     create shardcatalog -database sit1:1521:catadb -repl DG -protectmode maxavailability -user damsadmin/damsadmin -sharding system -sdb damsshdb -chunks 12 -region region1, region2 -agent_port 9762 -agent_password oracle
     # 複合分片資料庫
     create shardcatalog -database sit1:1521:catadb -repl DG -protectmode maxavailability -user damsadmin/damsadmin -sharding composite -sdb damsshdb -chunks 12 -shardspace shardspace1, shardspace2 -agent_port 9762 -agent_password oracle
     #使用者定義的分片資料庫
     create shardcatalog -database sit1:1521:catadb -repl DG -protectmode maxavailability -user damsadmin/damsadmin -sharding user -sdb damsshdb -region region1, region2 -agent_port 9762 -agent_password oracle
     # 單機配置
     create shardcatalog -database sit1:1521:catadb -user damsadmin/damsadmin -sdb damsshdb -sharding system -region region1, region2 -agent_port 9762 -agent_password oracle
    
  2. 建立並啟動分片導向器

     GDSCTL> add gsm -gsm sharddirector1 -listener 1571 -pwd oracle -catalog sit1:1521:catadb -region region1
     GDSCTL> start gsm -gsm sharddirector1
     # 設定作業系統憑據(在gsm01上,假如單節點只使用這個即可),這個是作業系統的使用者和密碼
     GDSCTL> add credential -credential cre_reg1 -osaccount oracle -ospassword oracle
    

    假如有叢集,在另一個gsm節點上建立,假如沒有在當前gsm節點建立

     GDSCTL> add gsm -gsm sharddirector2 -listener 1572 -pwd oracle -catalog sit1:1521:catadb -region region2
     
     GDSCTL> start gsm -gsm sharddirector2
    

配置分片伺服器

在每個分片伺服器執行

[[email protected] ~] schagent -start
[[email protected] ~] schagent -status
# 密碼oracle和埠8080是在第7步建立shardcatalog時設定的(oracle 是指 agent_password):
# 密碼和埠是上面配置的-agent_port 9762 -agent_password oracle
[[email protected] ~] echo oracle | schagent -registerdatabase sit1 9762

[[email protected] ~] mkdir -p /app/oracle/oradata
[[email protected] ~] mkdir -p /app/oracle/fast_recovery_area

建立sdb

  1. 在gsm上配置

     [[email protected] ~] gdsctl
    
     GDSCTL> set gsm -gsm sharddirector1
     GDSCTL> connect damsadmin/damsadmin
     #為主分片新增一個分片組
     GDSCTL> add shardgroup -shardgroup primary_shgrp -deploy_as primary -region region1
     
     #為活動Data Guard備用分片新增一個分片組
     GDSCTL> add shardgroup -shardgroup standby_shgrp -deploy_as active_standby -region region2
    
     # 將每個分片的主機地址新增到有效節點,以檢查目錄中的註冊(VNCR)列表,然後在主或備用分片組中建立分片
    
     GDSCTL> add invitednode sit2
     GDSCTL> create shard -shardgroup primary_shgrp -destination sit2 -credential cre_reg1 -sys_password oracle
     
     GDSCTL> add invitednode sit3
     GDSCTL> create shard -shardgroup primary_shgrp -destination sit3 -credential cre_reg1 -sys_password oracle
     
     GDSCTL> add invitednode sit4
     GDSCTL> create shard -shardgroup primary_shgrp -destination sit4 -credential cre_reg1 -sys_password oracle
    
     # 由於我機器不富裕所以我沒有裝備庫,所以以下我沒有執行,並且刪除了副本shard
    
     GDSCTL> add invitednode ddd
     GDSCTL> create shard -shardgroup standby_shgrp -destination ddd -credential cre_reg1 -sys_password 123456
    
     GDSCTL> remove shardgroup -shardgroup standby_shgrp
     
     # 假如配置錯誤用以下命令刪除
    
     GDSCTL> remove credential -credential cre_reg1
    
  2. 檢查配置

     GDSCTL> config
     
     Regions
     ------------------------
     region1                       
     region2                       
     
     GSMs
     ------------------------
     sharddirector1                
     sharddirector2                
     
     Sharded Database
     ------------------------
     damsshdb                      
     
     Databases
     ------------------------
     sh1                           
     sh2                           
     sh3                           
     
     Shard Groups
     ------------------------
     primary_shgrp                 
     standby_shgrp                 
     
     Shard spaces
     ------------------------
     shardspaceora                 
     
     Services
     ------------------------
     
     GDSCTL pending requests
     ------------------------
     Command                       Object                        Status                        
     -------                       ------                        ------                        
     
     Global properties
     ------------------------
     Name: oradbcloud
     Master GSM: sharddirector1
     DDL sequence #: 0
    
    
     GDSCTL> config shardspace
     Shard space                   Chunks                        
     -----------                   ------                        
     shardspaceora         
    
     GDSCTL> config shardgroup
     Shard Group         Chunks Region              Shard space         
     -----------         ------ ------              -----------         
     primary_shgrp              region1             shardspaceora       
     standby_shgrp              region2             shardspaceora              
    
     GDSCTL> config vncr
     Name                          Group ID                      
     ----                          --------                      
     10.10.100.24                                                
     sit2                                                        
     sit3                                                        
     sit4                           
    
     GDSCTL> config shard
     Name                Shard Group         Status    State       Region    Availability 
     ----                -----------         ------    -----       ------    ------------ 
     sh1                 primary_shgrp       U         none        region1   -            
     sh2                 primary_shgrp       U         none        region1   -            
     sh3                 primary_shgrp       U         none        region1   -             
    
  3. 執行安裝

     #執行DEPLOY命令以建立分片和副本。
     #該DEPLOY命令需要一些時間才能執行,大約需要15到30分鐘 
     GDSCTL> deploy
    
  4. 建立服務

     GDSCTL> add service -service damsserver -role primary
     GDSCTL> start service -service damsserver
     GDSCTL> status service
    

二 叢集使用

建立使用者

連線到分片目錄資料庫(catadb),建立應用程式模式使用者,並向該使用者授予特權和角色

[[email protected] ~]$ sqlplus / as sysdba

SQL> alter session enable shard ddl;
SQL> create user dams identified by dams;
SQL> grant all privileges to dams;
SQL> grant gsmadmin_role to dams;
SQL> grant select_catalog_role to dams;
SQL> grant connect, resource to dams;
SQL> grant dba to dams;
SQL> grant execute on dbms_crypto to dams;

建立分片表空間集

SQL> CREATE TABLESPACE SET TSP_SET_1 in shardspace shardspaceora using template (datafile size 512m autoextend on next 512M maxsize unlimited extent management local segment space management auto );

建立重複表表空間

SQL> CREATE TABLESPACE dup_tsp datafile size 100m autoextend on next 512M maxsize unlimited extent management local segment space management auto;

為根表建立一個分割槽表

SQL> ALTER SESSION ENABLE SHARD DDL;

SQL> 
CREATE SHARDED TABLE Customers
  (
    CustId      VARCHAR2(60) NOT NULL,
    FirstName   VARCHAR2(60),
    LastName    VARCHAR2(60),
    Class       VARCHAR2(10),
    Geo         VARCHAR2(8),
    Passwd      RAW(60),
    CONSTRAINT pk_customers PRIMARY KEY (CustId)
  ) TABLESPACE SET TSP_SET_1
  PARTITION BY CONSISTENT HASH (CustId) PARTITIONS AUTO;

為表族中的其他表建立一個分片表

SQL> CREATE SHARDED TABLE Orders
  (
    OrderId     INTEGER NOT NULL,
    CustId      VARCHAR2(60) NOT NULL,
    OrderDate   TIMESTAMP NOT NULL,
    SumTotal    NUMBER(19,4),
    Status      CHAR(4),
    CONSTRAINT  pk_orders PRIMARY KEY (CustId, OrderId),
    CONSTRAINT  fk_orders_parent FOREIGN KEY (CustId) 
    REFERENCES Customers ON DELETE CASCADE
  ) PARTITION BY REFERENCE (fk_orders_parent);

#建立用於OrderId列的序列
SQL> CREATE SEQUENCE Orders_Seq;

#為LineItems建立分片表
SQL> CREATE SHARDED TABLE LineItems
  (
    OrderId     INTEGER NOT NULL,
    CustId      VARCHAR2(60) NOT NULL,
    ProductId   INTEGER NOT NULL,
    Price       NUMBER(19,4),
    Qty         NUMBER,
    CONSTRAINT  pk_items PRIMARY KEY (CustId, OrderId, ProductId),
    CONSTRAINT  fk_items_parent FOREIGN KEY (CustId, OrderId)
    REFERENCES Orders ON DELETE CASCADE
  ) PARTITION BY REFERENCE (fk_items_parent);

建立任何必需的重複表

SQL> CREATE DUPLICATED TABLE Products
  (
    ProductId  INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    Name       VARCHAR2(128),
    DescrUri   VARCHAR2(128),
    LastPrice  NUMBER(19,4)
  ) TABLESPACE products_tsp;

塊分片生成唯一ID

SQL> CREATE SEQUENCE SHARD_Seq SHARD EXTEND;

在分片主機中驗證

GDSCTL> show ddl
GDSCTL> config shard -shard sh1

SQL> select TABLESPACE_NAME, BYTES/1024/1024 MB from sys.dba_data_files order by tablespace_name;

三 新增分片

和建立類似,在每個分片伺服器執行,機器名自行修改

[[email protected] ~] schagent -start
[[email protected] ~] schagent -status
# 密碼oracle和埠8080是在第7步建立shardcatalog時設定的(oracle 是指 agent_password):
# 密碼和埠是上面配置的-agent_port 9762 -agent_password oracle
[[email protected] ~] echo oracle | schagent -registerdatabase sit1 9762

[[email protected] ~] mkdir -p /app/oracle/oradata
[[email protected] ~] mkdir -p /app/oracle/fast_recovery_area

[[email protected] ~] gdsctl

GDSCTL> set gsm -gsm sharddirector1
GDSCTL> connect damsadmin/damsadmin
#為主分片新增一個分片組
GDSCTL> add shardgroup -shardgroup primary_shgrp -deploy_as primary -region region1

#為活動Data Guard備用分片新增一個分片組
GDSCTL> add shardgroup -shardgroup standby_shgrp -deploy_as active_standby -region region2

# 將每個分片的主機地址新增到有效節點,以檢查目錄中的註冊(VNCR)列表,然後在主或備用分片組中建立分片

GDSCTL> add invitednode sit2
GDSCTL> create shard -shardgroup primary_shgrp -destination sit2 -credential cre_reg1 -sys_password oracle

GDSCTL> add invitednode sit3
GDSCTL> create shard -shardgroup primary_shgrp -destination sit3 -credential cre_reg1 -sys_password oracle

GDSCTL> add invitednode sit4
GDSCTL> create shard -shardgroup primary_shgrp -destination sit4 -credential cre_reg1 -sys_password oracle

GDSCTL> deploy

四 基本操作

# catalog資料庫端,關閉director

GDSCTL>stop gsm -gsm sharddirector1


# 關閉catalog監聽

[[email protected] ~]$ lsnrctl stop

# 關閉catalog資料庫

SQL> shutdown immediate

# shard節點1和節點2關閉agent

[[email protected] trace]$ schagent -stop

[[email protected] trace]$ schagent -stop

# shard節點1和節點2關閉監控

[[email protected] trace]$ lsnrctl stop

[[email protected] trace]$ lsnrctl stop

# shard節點1和節點2關閉資料庫

SQL> shutdown immediate


# catalog端啟動資料庫和監聽

SQL> startup

[[email protected] ~]$ lsnrctl start

# 所有shard節點啟動資料庫,監聽,代理

SQL> startup

[[email protected] ~]$ lsnrctl start

[[email protected] ~]$ lsnrctl start

# catalog端啟動director

GDSCTL>start gsm -gsm sharddirector1

GSM 已成功啟動