ORACLE 19C 安装 RAC+SingleDB
操作系统Oracle Linux 8(19c 官方认证,零编译问题)
环境准备
1. 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
2. 关闭selinux
关闭selinux:
sed -i 's|^SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config
cat /etc/selinux/config
重启生效(稍等下一步一起重启)
3. ADD swap :
fallocate -l 12G /swap02
chmod 600 /swap02
mkswap /swap02
swapon /swap02
echo '/swap02 none swap defaults 0 0' >> /etc/fstab
4. 配置HOSTS
cat <<EOF>>/etc/hosts
#Public IP
10.34.230.11 mesdb1
10.34.230.12 mesdb2
#Private IP
172.16.11.11 mesdb1-priv
172.16.11.12 mesdb2-priv
#Vip IP
10.34.230.21 mesdb1-vip
10.34.230.22 mesdb2-vip
#Scan IP
10.34.230.1 mesdb-scan
10.34.230.2 mesdb-scan
10.34.230.3 mesdb-scan
EOF
5. 时间同步,时区调整
cat /etc/chrony.conf
#放开这两项,其余可不动
server 172.27.246.211 iburst
allow 10.96.0.0/16
# systemctl status chronyd
# 1.先确认时间源可达
chronyc sources -v
# 2.强制立即步进校准(跳过渐进同步,直接对齐)
chronyc makestep
3. 调整时区
timedatectl set-timezone Asia/Shanghai && date
6. 关闭透明大页和numa
vi /etc/default/grub
找到GRUB_CMDLINE_LINUX行,在quiet后增加2个参数 numa=off transparent_hugepage=never
整行修改后如下:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet numa=off transparent_hugepage=never"
重建 grub 引导
# ls /sys/firmware/efi && echo “uefi” || echo “bios”
-- BIOS 启动:
grub2-mkconfig -o /boot/grub2/grub.cfg
-- UEFI 启动
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
重启后生效
重启后检查关闭透明大叶是否生效
cat /sys/kernel/mm/transparent_hugepage/enabled
关闭透明大页(无需重启的方法)
echo ''' [Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
[Install]
WantedBy=multi-user.target ''' > /etc/systemd/system/disable-thp.service
启动服务
systemctl daemon-reload
systemctl start disable-thp
systemctl enable disable-thp
7. 内核参数
shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。
[root@ncmesdb1 ~]# sysctl -p
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 90439680
kernel.shmmax = 370440929280
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
fs.aio-max-nr = 3145728
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.nr_hugepages = 163840 # 比sga稍大
vm.vfs_cache_pressure = 120
vm.dirty_background_bytes = 4294967296
vm.dirty_ratio = 20
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.min_free_kbytes = 1073742
vm.swappiness = 10
net.ipv4.ipfrag_time = 120
net.ipv4.ipfrag_secret_interval = 600
net.ipv4.ipfrag_max_dist = 1024
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
8. Limits.conf
cat <<EOF>>/etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 65536
oracle hard stack 65536
oracle soft nproc 65536
oracle hard nproc 65536
oracle hard memlock unlimited # >=PGA,单位kb
oracle soft memlock unlimited
grid soft nofile 65536
grid hard nofile 65536
grid soft stack 32768
grid hard stack 32768
grid soft nproc 16384
grid hard nproc 16384
grid hard memlock unlimited
grid soft memlock unlimited
EOF
9. 配置 /etc/pam.d/login:
cat <<EOF>>/etc/pam.d/login
session required pam_limits.so
session required /lib64/security/pam_limits.so
EOF
10. 配置yum
cat > /etc/yum.repos.d/linux8.10.repo <<END
[OL8-Local-BaseOS]
name=Oracle Linux 8.10 BaseOS Local
baseurl=file:///run/media/root/OL-8-10-0-BaseOS-x86_64/BaseOS
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
enabled=1
[OL8-Local-AppStream]
name=Oracle Linux 8.10 AppStream Local
baseurl=file:///run/media/root/OL-8-10-0-BaseOS-x86_64/AppStream
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
enabled=1
END
# dnf clean all
# dnf makecache
工具安装
dnf install vim tree net-tools unzip xterm
11. 安装Oracle依赖包
-- 使用yum会安装32位libnsl
dnf install make glibc-devel glibc ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel
dnf install bc binutils gcc gcc-c++ elfutils-libelf elfutils-libelf-devel libxcb libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline* tigervnc* psmisc compat-openssl10 libnsl
--for oracle linux 9.8
dnf install -y libnsl,compat-openssl11.x86_64
## 检查包:
rpm -qa | grep -E "libaio|libstdc|gcc|glibc-devel"
12. 磁盘
mkdir /u01
mkdir /oradata
mount /dev/mapper/vgdata-lv01 /u01
mount /dev/mapper/vgdata-lvdata /oradata
echo '/dev/mapper/vgdata-lv01 /u01 xfs defaults 0 0'>> /etc/fstab
echo '/dev/mapper/vgdata-lvdata /oradata xfs defaults 0 0'>> /etc/fstab
cat /etc/fstab
13. 配置multipath
yum install -y device-mapper*
加载dm_multipath 内核模块
modprobe dm_multipath
# 验证模块是否加载
lsmod | grep dm_multipath
扫描新存储卷
find /sys/class/scsi_host/host*/scan | while read line; do echo - - - > $line; done
启用服务:
systemctl start multipathd
systemctl enable multipathd
# 查看状态
systemctl status multipathd
扫描多路径,查看磁盘、
multipath -ll
# 重新扫描(新增存储时用)
multipath -r
systemctl restart multipathd
配置multipath.conf
cat <<EOF>/etc/multipath.conf
defaults {
user_friendly_names yes
}
blacklist {
devnode "^sda"
}
multipaths {
multipath {
wwid "27e2b3ddbb7fbeb41"
alias asm_ocr
}
multipath {
wwid "2852b96c12f460ade"
alias asm_data
}
}
EOF
14. 用户、目录及环境变量
For single:
groupadd -g 1001 oinstall
groupadd -g 1002 dba
useradd -u 1001 -g oinstall oracle
echo "oracle" |passwd --stdin oracle
mkdir -p /u01/oraInventory
mkdir -p /u01/oracle/19c/dbhome_1
chown -R oracle:oinstall /u01/oracle
chown -R oracle:oinstall /u01/oraInventory
For rac:
groupadd -g 1001 oinstall
groupadd -g 1002 dba
groupadd -g 1003 asmdba
groupadd -g 1004 asmoper
groupadd -g 1005 asmadmin
useradd -u 1001 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 1002 -g oinstall -G dba,asmadmin,asmdba oracle
echo "oracle" |passwd --stdin grid
echo "oracle" |passwd --stdin oracle
目录:
mkdir -p /u01/grid
mkdir -p /u01/grid_home
chown -R grid:oinstall /u01
mkdir -p /u01/oraInventory
mkdir -p /u01/oracle
mkdir -p /u01/oracle/19c/dbhome_1
chown -R oracle:oinstall /u01/oracle
chown -R grid:oinstall /u01/oraInventory
grid
umask 022
export CV_ASSUME_DISTID=RHEL8.10; export CV_ASSUME_DISTID
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"; export NLS_DATE_FORMAT
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/grid
export ORACLE_HOME=/u01/grid_home
export TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
oracle
umask 022
export CV_ASSUME_DISTID=RHEL8.10;export CV_ASSUME_DISTID
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"; export NLS_DATE_FORMAT
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/19c/dbhome_1
export ORACLE_UNQNAME=mes_test
export ORACLE_SID=mes_test
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
15. UDEV-for RAC
# cd /etc/udev/rules.d
# cat 99-oracle-asm.rules
# use multipath wwid
ENV{DM_UUID}=="mpath-360060e80311247005061124700000000", OWNER="grid", GROUP="asmadmin", MODE="0660"
ENV{DM_UUID}=="mpath-360060e80311247005061124700000001", OWNER="grid", GROUP="asmadmin", MODE="0660"
ENV{DM_UUID}=="mpath-360060e80311247005061124700000002", OWNER="grid", GROUP="asmadmin", MODE="0660"
ENV{DM_UUID}=="mpath-360060e80311247005061124700000003", OWNER="grid", GROUP="asmadmin", MODE="0660"
ENV{DM_UUID}=="mpath-360060e80311247005061124700000004", OWNER="grid", GROUP="asmadmin", MODE="0660"
# 配置生效
udevadm control --reload-rules
udevadm trigger
12、图形界面(可选)
先完整安装图形界面
dnf groupinstall -y "Server with GUI"
安装vnc:
dnf install-y tigervnc-server tigervnc-server-module
-- for linux 7 : yum groupinstall -y "GNOME Desktop"
startx
然后用root测试 xclock
# xauth list $DISPLAY
nj_mes2/unix:10 MIT-MAGIC-COOKIE-1 76bf687a679ee1fcd6ef662479215adf
切换到oracle, 复制上面的权限
--for linux 8.10: dnf install xterm
# echo $DISPLAY 输出作为oracle用户DISPLAY的输入
# xauth list $DISPLAY
njtest1/unix:10 MIT-MAGIC-COOKIE-1 dd33e6ccf966e67870ed349df8b36fbe
su – oracle
export DISPLAY=localhost:10.0
$ xauth add njtest1/unix:10 MIT-MAGIC-COOKIE-1 1a5a35a40aaa381431d1db0cf91452ca
$ xdpyinfo
13. 安装grid
图形界面安装
--直接安装到19.30
su - grid
unzip LINUX.X64_193000_grid_home.zip -d $ORACLE_HOME/
unzip p6880880_190000_12.2.0.1.51_Linux-x86-64.zip -d $ORACLE_HOME/
unzip p38629535_190000_Linux-x86-64.zip
--安装cvuqdisk
rpm -ivh /u01/app/19.3.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm
##传输到节点二安装
scp cvuqdisk-1.0.10-1.rpm p19c02:/soft
rpm -ivh /soft/cvuqdisk-1.0.10-1.rpm
开始安装grid
$ export CV_ASSUME_DISTID=OEL8.10
##执行安装程序开始安装,通过-applyRU参数指向补丁解压位置,提前安装grid补丁
$ cd $ORACLE_HOME
./gridSetup.sh -applyRU /home/orasoft/38629535
选择 standlone 模式:
修改 scan 名称,与 hosts 文件配置 scan 名称保持一致:
添加节点二信息,进行互信:
输入 grid 用户密码,创建用户时两节点必须保持一致。先执行 setup,再执行 test,开始互信:
确保对应网卡和IP网段对应即可,19C 心跳网段需要选 ASM & Private,用于 ASM 实例的托管:
选择存储类型,19C 只有两个选项,ASM 只能选 Flex:
GIMR,这里不选择安装:
安装时填创建 OCR 盘,目录选择udev绑的路径:
设置口令
不使用IPMI
不安装EM
默认组即可
指定oracle_base(会根据环境变量带出来)
需要自动执行root.sh脚本,就给口令
安装预检查,所以关于 DNS 相关的都无视,继续:
开始安装:
前面给了root口令,这里执行root.sh,直接确认
两个节点的 root.sh 都执行完之后,继续安装
查看grid状态
# su – grid
crsctl stat res -t
开始安装ORACLE
$ cd $ORACLE_HOME
$ ./runInstaller -applyRU /home/orasoft/38629535
Preparing the home to patch...
静默安装
$ unzip LINUX.X64_193000_db_home.zip -d /u01/oracle/product/19.3.0/db/
$ echo '''
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/oraInventory
ORACLE_HOME=/u01/oracle/product/19.3.0/db
ORACLE_BASE=/u01/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=oinstall
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=oinstall
oracle.install.db.OSDGDBA_GROUP=oinstall
oracle.install.db.OSKMDBA_GROUP=oinstall
oracle.install.db.OSRACDBA_GROUP=oinstall
oracle.install.db.rootconfig.executeRootScript=true
oracle.install.db.rootconfig.suProp.rootUserPassword=
''' > db_install_swonly.rsp
$ /u01/oracle/product/19.3.0/db/runInstaller -silent -responseFile db_install_swonly.rsp -ignorePrereqFailure -waitforcompletion
如果上面使用的executeRootScript=false, 切换root, 手动执行2个脚本:
/u01/oraInventory/orainstRoot.sh
/u01/oracle/product/19.3.0/db/root.sh
打升级包
Opatch用最新的就好
rm -rf $ORACLE_HOME/OPatch
unzip p6880880_200000_Linux-x86-64.zip -d /u01/oracle/product/19.3.0/db/
unzip p34765931_190000_Linux-x86-64.zip
$ cd 34765931/
$ /u01/oracle/product/19.3.0/db/OPatch/opatch apply
建库
$ cat dbca.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=dzarch
sid=dzarch
databaseConfigType=SI
createAsContainerDatabase=false
sysPassword=EDCwsx#123
systemPassword=EDCwsx#123
templateName=New_Database.dbt
datafileDestination=/oradata
characterSet=AL32UTF8
nationalCharacterSet=AL16UTF16
sampleSchema=TRUE
memoryPercentage=50
automaticMemoryManagement=false
totalMemory=65536
$ dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp
图形界面
用oracle用户运行dbca创建数据库:
$ export LANG=C
export DISPLAY=ncmesdb1:1
$ dbca
设置归档目录:
设置6组redo,每个1g,每个实例3组。
16. 参数调优
登录数据库,修改优化数据库参数,并重启数据库:
ALTER SYSTEM SET open_cursors =2000 ;
alter system set undo_retention=3600 ;
alter system set session_cached_cursors=300 scope=spfile;
alter system set JAVA_JIT_ENABLED= FALSE ;
alter profile DEFAULT limit failed_login_attempts unlimited password_life_time unlimited password_lock_time unlimited password_grace_time unlimited;
alter system set "_optimizer_cartesian_enabled"=FALSE sid='*';
alter system set "_use_single_log_writer"=FALSE sid='*' scope=spfile;
alter system set "_use_adaptive_log_file_sync"=FALSE sid='*' scope=spfile;
alter system set "_gc_policy_time"=0 sid='*' scope=spfile;
alter system set "_gc_undo_affinity"=FALSE sid='*' scope=spfile;
alter system set result_cache_max_size= 0 sid='*';
ALTER SYSTEM SET event='10949 trace name context forever:28401 trace name context forever,level 1:10849 trace name context forever, level 1:19823 trace name context forever, level 90' scope=spfile;
alter system set "_datafile_open_errors_crash_instance"=false sid='*';
alter system set "_datafile_write_errors_crash_instance"=false sid='*' scope=spfile;
alter system set "_cursor_obsolete_threshold" =1024 sid='*' scope=spfile;
alter system set "_optimizer_extended_cursor_sharing"='NONE' sid='*';
alter system set "_optimizer_extended_cursor_sharing_rel"='NONE' sid='*';
alter system set "_optimizer_adaptive_cursor_sharing"=FALSE sid='*';
alter system set "_optimizer_use_feedback"=false sid='*';
alter system set "_partition_large_extents"=FALSE sid='*';
alter system set "_rollback_segment_count"=2000 sid='*';
alter system set "_undo_autotune"=FALSE sid='*';
alter system set control_file_record_keep_time=31 ;
alter system set deferred_segment_creation=false sid='*' ;
alter system set enable_ddl_logging=true sid='*';
alter system set parallel_force_local=true sid='*' scope=spfile;
alter system set resource_manager_plan='force:' sid='*' scope=spfile;
alter system set result_cache_max_size= 0 sid='*';
alter system set sec_max_failed_login_attempts=100 scope=spfile;
alter system set "_b_tree_bitmap_plans"=false sid='*';
alter system set "_bloom_filter_enabled"=FALSE sid='*';
alter system set "_cleanup_rollback_entries"=5000 sid='*' scope=spfile;
ALTER SYSTEM SET "_drop_stat_segment" =1 sid='*' ;
alter system set "_keep_remote_column_size"=TRUE sid='*' scope=spfile;
alter system set "_optimizer_ads_use_result_cache" = FALSE sid='*';
alter system set "_optimizer_unnest_scalar_sq"=false sid='*';
alter system set "_PX_use_large_pool"=TRUE sid='*' scope=spfile ;
ALTER SYSTEM SET "_sql_plan_directive_mgmt_control"=0;
alter system set "_shared_pool_reserved_pct"=20 sid='*' scope=spfile;
alter system set "_clusterwide_global_transactions"=FALSE scope=spfile;
alter system set db_cache_advice=off sid='*' ;
alter system set db_files=5000 sid='*' scope=spfile;
alter system set max_shared_servers=0 sid='*' scope=spfile;
alter system set shared_servers=0 sid='*';
alter system set memory_target=0 sid='*' scope=spfile;
ALTER SYSTEM SET optimizer_adaptive_plans=FALSE SCOPE=spfile;
alter system set parallel_execution_message_size=32768 sid='*' scope=spfile;
alter system set archive_lag_target=1800 sid='*' ;
alter system set "_securefiles_concurrency_estimate"=50 scope=spfile;
alter system set "_smu_debug_mode"=134217728;
alter system set "_optimizer_enhanced_join_elimination"=false sid='*';
alter system set "_and_pruning_enabled"=false sid='*';
alter system set "_optimizer_partial_join_eval"=false sid='*' ;
alter system set "_drop_stat_segment"=1 sid='*' ;
-------------optional--------------------
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/arch' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_format ='ARC_%A_%T_%S_%R.log' SCOPE=SPFILE;
shutdown immediate
startup
create pfile from spfile
17. 调整onlinelog\undo\temp
alter system switch logfile;
alter system checkpoint;
alter database drop logfile group 2;
alter database add logfile thread 1 group 10 size 4g ;
alter tablespace TEMP add tempfile '+DATA' size 2g autoextend on next 1g;
alter tablespace UNDOTBS1 add datafile '+DATA' size 1g autoextend on next 2g;
alter tablespace UNDOTBS2 add datafile '+DATA' size 1g autoextend on next 2g;
18. listener & tns
listener.ora
LISTENER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.243.205)(PORT = 6521)))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC = (ORACLE_HOME = /u01/app/oracle/product/19c)
(SID_NAME = NCMESDG))
)
RAC:
ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.96.13.53)(PORT=6521))' SCOPE=BOTH SID='njmes2db1';
ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.96.13.54)(PORT=6521))' SCOPE=BOTH SID='njmes2db2';
tnsnames.ora
NCMESDG= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=10.112.243.205)(PORT=6521)) (CONNECT_DATA= (SERVICE_NAME=NCMESDG)) )
sqlnet.ora
sqlnet.expire_time = 10 # 10分钟探测一次无效连接
inbound_connect_timeout=30 # 客户端连接超时,防止恶意连接挂住监听器
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 #连接兼容性
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
19. 自动重启(单实例)
找到你的 SID 行,末尾改成Y
vi /etc/oratab
MES:/u01/app/oracle/product/19.0.0/dbhome_1:Y
验证db_start脚本
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
创建systemd服务
echo '''
[Unit]
Description=Oracle Database Service
After=network.target
[Service]
Type=forking
User=oracle
Group=oinstall
LimitMEMLOCK=infinity
# set ORACLE_HOME ORACLE_SID
Environment="ORACLE_HOME= /u01/oracle/19c/dbhome_1"
Environment="ORACLE_SID=mes_dev"
ExecStart= /u01/oracle/19c/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop= /u01/oracle/19c/dbhome_1/bin/dbshut $ORACLE_HOME
Restart=no
[Install]
WantedBy=multi-user.target
''' >> /etc/systemd/system/oracle.service
# 重载systemd
systemctl daemon-reload
systemctl enable oracle.service
systemctl start oracle.service
# 查看状态
systemctl status oracle.service
20. TAF
# 服务
MES2:
srvctl add service -db njmes2db -service njmes2_evc \
-preferred njmes2db1 -available njmes2db2 \
-failback YES -failovertype auto
srvctl start service -db njmes2db -service njmes2_evc
# 使用scan_name:port 避免多个scan_ip不能同时使用
Alter system set remote_listener=’mes2db-scan:1523’ scope=both ;
浙公网安备 33010602011771号