در قسمت قبل پکیجهای مورد نیازمون رو نصب کردیم.
در قدم اول به سراغ تنظیم فایروال. راه راحت اینه که سرویس فایروال رو غیرفعال کنیم و بعدش stop کنیم. اما یه راه قشنگتر و سخت تر هست که میشه پورتهایی که میخوایم رو باز کنیم:
[root@vahiddb1922 ~]# firewall-cmd --permanent --add-port=1521/tcp
success
[root@vahiddb1922 ~]# firewall-cmd --reload
success
یادمون باشه که اگر این روش رو انتخاب کردیم باید به ازای هر کاری که نیاز به پورت جدید داشت هم به سراغ فایروال بیایم. مثلاً اگر میخوایم این دیتابیس رو به cloudcontrol اضافه کنیم، باید پورت 3872 رو هم باز کنیم.
حالا به سراغ selinux میریم و از حالت enforcing به permissive تغییرش میدیم.
[root@vahiddb1922 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
[root@vahiddb1922 ~]# vi /etc/selinux/config
[root@vahiddb1922 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
حالا سیستم رو reboot می کنیم.
[root@vahiddb1922 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
حالا به سراغ فایلی میریم که با توجه به اینکه rpm مربوط به oracle database رو با dnf نصب کردیم، تنظیماتش انجام شده هست. فهم این فایل برای محیطهای عملیاتی اهمیت داره.
[root@vahiddb1922 ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# oracle-database-preinstall-21c setting for fs.file-max is 6815744
fs.file-max = 6815744
اوراکل در هر لحظه با تعداد زیادی فایل سر و کار دارد. به این مطلب اضافه کنیم که تمام اساس لینوکس فایل هست و همه چیز بصورت فایل دیده می شود. این پارامتر اجازه می دهد که file handler به اندازه کافی در اختیار دیتابیس قرار بگیرد. برای اینکه وضعیت فعلی این مقدار را ببینیم می توانیم از دستور زیر استفاده کنیم:
[root@vahiddb1922 ~]# cat /proc/sys/fs/file-nr
1184 0 6815744
همانطور که می بینیم، عددی که تنظیم شده است برابر ماکزیمم عدد ممکن هست. عدد اول هم تعداد فایلی هست که در حال حاضر در سیستم عامل باز است.
# oracle-database-preinstall-21c setting for kernel.sem is '250 32000 100 128'
kernel.sem = 250 32000 100 128
برای دیدن مقادیر تنظیم شده در سیستم عامل می توانیم از دستور زیر استفاده کنیم.
[root@vahiddb1922 ~]# ipcs -l
------ Messages Limits --------
max queues system wide = 32000
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4294967296
max total shared memory (kbytes) = 4294967296
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
semaphore max value = 32767
مفهوم semaphore در قالب IPC که مخفف Inter-Process Communication تعریف می شود. این تکنیک برای مدیریت دسترسی پروسس ها به منابع مشترک استفاده می شود.
# oracle-database-preinstall-21c setting for kernel.shmmni is 4096
kernel.shmmni = 4096
# oracle-database-preinstall-21c setting for kernel.shmall is 1073741824 on x86_64
kernel.shmall = 1073741824
# oracle-database-preinstall-21c setting for kernel.shmmax is 4398046511104 on x86_64
kernel.shmmax = 4398046511104
سه گزینه بعدی را با هم بررسی می کنیم که kernel.shmmni = 4096 و kernel.shmall = 1073741824 و kernel.shmmax = 4398046511104 هستند. shm که مخفف shared memory هست اجازه ارتباط بین پروسس ها با یکدیگر را در ناجیه هایی که به عنوان memory segment می دهد. در مورد اوراکل memory segment ها توسط sga استفاده می شود که دیتا و control information استفاده می شود. بصورت پیش فرض در لینوکس میزان shared memory pages به اندازه زیادی تنظیم شده است اما اندازه مناسب بستگی به سایز sga مجموع instanceهایی دارد که بر روی این سرور در حال اجراست.
shmmax ماکزیمم سایزی است که با واحد bytes به هر segment از shared memory اختصاص می یابد. در صورتی که این عدد از sga ما کوچک تر باشد، باید چند segment متفاوت در مموری به آن اختصاص یابد.
shmall ماکزیمم تعداد pgae هاست که تنظیم می شود. نکته مهم در مورد تنظیم shmall این است که همیشه باید کمتر از میزان کل رم و بیشتر یا مساوری مجموع sga ها باشد. در صورتی که این عدد درست تنظیم نشده باشد با خطای ora-27102 out of memory مواجه می شویم.
برای مشخص شدن این عدد فرض کنیم 6 گیگ رم داریم که میخواهیم 5 گیگ آن را به اوراکل بدهیم. اول این 5 گیگ را به byte تبدیل می کنیم و سپس تقسیم بر page_size می کنیم. برای اینکه بدانیم سایز page چقدر است از دستور زیر استفاده می کنیم:
[root@oracle12cr2 ~]# getconf PAGE_SIZE
4096
پارامتر بعدی shmmni است. این گزینه به معنی حداکثر تعداد memory segment است. برای اینکه این اعداد را ببینیم می توانیم باز از دستور ipcs -lm استفاده کنیم.
[root@oracle12cr2 ~]# ipcs -lm
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4294967296
max total shared memory (kbytes) = 4294967296
min seg size (bytes) = 1
# oracle-database-preinstall-21c setting for kernel.panic_on_oops is 1 per Orabug 19212317
kernel.panic_on_oops = 1
این پارامتر در این جهت است که در صورتی که باگ یا مشکلی برای کرنل مشاهده شد، رفتار سیستم عامل به چه صورت باشد. در صورتی که برابر صفر باشد، با وجود مشکل ادامه کار می دهد ولی در صورتی که برابر غیر از صفر باشد، سیستم reboot خواهد شد.
# oracle-database-preinstall-21c setting for net.core.rmem_default is 262144
net.core.rmem_default = 262144
# oracle-database-preinstall-21c setting for net.core.rmem_max is 4194304
net.core.rmem_max = 4194304
# oracle-database-preinstall-21c setting for net.core.wmem_default is 262144
net.core.wmem_default = 262144
# oracle-database-preinstall-21c setting for net.core.wmem_max is 1048576
net.core.wmem_max = 1048576
قدم بعدی، کانفیگ پارامترهای مربوط به بافر شبکه هست. در اینجا ما چهار پارامتر رو داریم که به ترتیب به سراغشون میریم. از این چهار پارامتر ، دو پارامتر مربوطه به خواندن که با rmem نشون داده میشن و دو پارامتر مربوط به نوشتن که با wmem نوشته می شوند. همچنین هر کدوم از این دو قسمت به دو قسمت default و max میان که اسمشون گویای مطلب هست.
بصورت پیش فرض سایز rmem و wmem و همچنین میزانی که می تواند رشد کند، برای اوراکل کافی نیست. اوراکل پیشنهاد می کنه اعداد بالا رو برای اینکار تنظیم کنیم. نکته ای که وجود داره اینه که میزان فضای مورد نیاز اینها از طریق رم اختصاص داده میشه و برای برنامه هایی مثل dns کفایت میکنه . پس اگر این سوال براتون پیش میاد که چرا بصورت پیش فرض این عدد بالا نیست، برای این هست که برای برنامه هایی که ترافیک زیادی روی شبکه ندارند، عدد پیش فرض کافی هست.
# oracle-database-preinstall-21c setting for net.ipv4.conf.all.rp_filter is 2
net.ipv4.conf.all.rp_filter = 2
# oracle-database-preinstall-21c setting for net.ipv4.conf.default.rp_filter is 2
net.ipv4.conf.default.rp_filter = 2
دو پارامتر بعدی مربوط به rp_filter است که اول باید با مفهوم reverse path آشنا شویم. زمانی که هکرها بخواهند ddos انجام دهند یا شیوه authentication شبکه ای را متوجه شوند، از یک آدرس fake برای ارسال پکتها استفاده می کنند به این کار ip address spoofing می گویند. در لینوکس سیستمی مانند دستگاه شبکه ای وجود دارد که در صورتی که آدرس وارد شده قابل route شدن باشد، آن packet را قبول می کند و در غیر اینصورت آنرا drop می کند. در صورتی که بخواهیم اصلا چنین چیزی چک نشود عدد 0، در صورتی که بخواهیم تنها از همان کارت شبکه قابل route باشد عدد 1 و در صورتی که بخواهیم از هر کارت شبکه ای قابل route باشد عدد 2 را وارد می کنیم.
# oracle-database-preinstall-21c setting for fs.aio-max-nr is 1048576
fs.aio-max-nr = 1048576
برای پارامتر aio-max-nr اوراکل داکیومنت شماره 2229798.1 را ارائه کرده است. در این داکیومنت نحوه محاسبه این پارامتر را بصورت زیر بیان کرده است:
aio-max-nr =no of process per DB * no of databases * 4096
حالا این پارامتر چه کاری برای ما انجام می دهد؟ این پارامتر به پروسس اجازه می دهد که تا چندین i/o را استفاده کند بدون اینکه منتظر اتمام هر کدام از آنها باشد. این پارامتر ماکزیمم این تعداد را مشخص می کند.
# oracle-database-preinstall-21c setting for net.ipv4.ip_local_port_range is 9000 65500
net.ipv4.ip_local_port_range = 9000 65500
اما آخرین گزینه در sysctl مربوطه به net.ipv4.ip_local_port_range است. این پارامتر محدوده آدرس پورتهای لوکال را برای انتخاب توسط پروسسها در پروتکلهای tcp و udp مشخص می کند.
میریم سراغ اتصال به ntp server. ما از سرویس chrony استفاده می کنیم. قدم اول فعال کردن این سرویس هست
systemctl enable chronyd
systemctl restart chronyd
vi /etc/chrony.conf
این تغییر رو ایجاد می کنیم و آدرس سرور ntp خودمون رو میزاریم.
systemctl restart chronyd
برای تست و صحت هم دستور زیر رو میزنیم:
chronyc sources
چون میخوایم گروه های مربوط به کاربر اوراکل رو بصورت کامل داشته باشیم، گروه های مربوط به grid infra رو هم اضافه میکنیم و در قدم بعد کاربر اوراکل رو جزو اون گروه ها هم قرار میدیم.
[root@vahiddb1922 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
[root@vahiddb1922 ~]# groupadd -g 54327 asmdba
[root@vahiddb1922 ~]# groupadd -g 54328 asmoper
[root@vahiddb1922 ~]# groupadd -g 54329 asmadmin
[root@vahiddb1922 ~]# usermod -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin,racdba oracle
[root@vahiddb1922 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba),54327(asmdba),54328(asmoper),54329(asmadmin)
لینک ویدئوی این قسمت:
تو قسمت بعد میریم برای کانفیگ afd و اضافه کردن دیسک به ماشین مجازی .