برای نصب silent نرم افزار اوراکل، همانند نصب گرافیکی آن(مطالعه بفرمایید)، باید مقدماتی را در سطح os فراهم نمود که در ابتدای این متن و با طی چند مرحله، به جزییات انجام این مقدمات، خواهیم پرداخت.
مرحله اول: در اولین مرحله، نام سرور را از localhost به ol7 تغییر می دهیم:
[root@localhost ~]# nmtui-hostname
ol7 => ok
[root@localhost ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.20 ol7
با اجرای این دستورات، با اولین reboot نام هاست تغییر خواهد کرد. در ضمن برای تغییر این نام بدون انجام reboot، می توان از دستورات زیر استفاده کرد:
[root@localhost ~]# hostname ol7
[root@localhost ~]# su –
Last login: Fri Mar 30 01:09:15 +0430 2018 from 192.168.56.1 on pts/1
[root@ol7 ~]#
نکته: بدون انجام مرحله اول، نرم افزار اوراکل قابل نصب می باشد.
مرحله دوم: برای نصب بسته های اوراکل، می توان از rpm و یا yum استفاده کرد که به دلیل سهولت نصب بسته ها با کمک yum، از این package manager استفاده می کنیم.
برای این کار در ابتدا فایل iso مربوط به oracle linux را جهت راه اندازی repository به پوشه dvd/ مونت می کنیم:
[root@ol7 ~]# mkdir /dvd
[root@ol7 ~]# mount /dev/sr0 /dvd
mount: /dev/sr0 is write-protected, mounting read-only
[root@ol7 ~]# df -h /dvd
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.6G 4.6G 0 100% /dvd
در ادامه تنظیمات لازم را برای ایجاد repository انجام می دهیم:
[root@ol7 ~]# mv /etc/yum.repos.d/public-yum-ol7.repo /etc/yum.repos.d/public-yum-ol7-old
[root@ol7 ~]# vi /etc/yum.repos.d/repo_usef.repo
[repo_usef]
name=repo_usef
baseurl=file:///dvd/
gpgcheck=0
enabled=1
[root@ol7 ~]# yum repolist all
Loaded plugins: langpacks, ulninfo
repo id repo name status
repo_usef repo_usef enabled: 4,970
repolist: 4,970
قبل از نصب بسته های مورد نیاز اوراکل، با کمک دستور rpm بررسی می کنیم که چه بسته هایی نصب نشده اند:
rpm -q –qf ‘%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n’ binutils \
compat-libcap1 \
compat-libstdc++-33 \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
nfs-utils \
smartmontools \
net-tools \
sysstat
خروجی این دستور به صورت زیر می باشد:
binutils-2.25.1-31.base.el7(x86_64)
package compat-libcap1 is not installed
package compat-libstdc++-33 is not installed
glibc-2.17-196.el7(x86_64)
package glibc-devel is not installed
package ksh is not installed
libaio-0.3.109-13.el7(x86_64)
package libaio-devel is not installed
libX11-1.6.5-1.el7(x86_64)
libXau-1.0.8-2.1.el7(x86_64)
libXi-1.7.9-1.el7(x86_64)
libXtst-1.2.3-1.el7(x86_64)
libgcc-4.8.5-16.el7(x86_64)
libstdc++-4.8.5-16.el7(x86_64)
package libstdc++-devel is not installed
libxcb-1.12-1.el7(x86_64)
make-3.82-23.el7(x86_64)
nfs-utils-1.3.0-0.48.0.1.el7(x86_64)
smartmontools-6.2-8.el7(x86_64)
net-tools-2.0-0.22.20131004git.el7(x86_64)
sysstat-10.1.5-12.el7(x86_64)
همانطور که مشاهده می کنید، تعدادی از این بسته ها، هنوز در حالت not installed قرار دارند که در ادامه با کمک دستور yum، انها را نصب خواهیم کرد:
yum -y install compat-libcap1*
yum -y install compat-libstdc++-33*
yum -y install glibc-devel*
yum -y install ksh*
yum -y install libaio-devel*
yum -y install libstdc++-devel*
با اجرای این دستورات، تمامی بسته های مورد نیاز اوراکل نصب خواهند شد البته در صورتی که اشتباهی در نصب رخ داده باشد، می توان در حین نصب نرم افزار اوراکل، ان را برطرف کرد.
مرحله سوم: گروه ها و کاربران مورد نیاز را در این مرحله ایجاد می کنیم:
[root@ol7 ~]# groupadd -g 54321 oinstall
[root@ol7 ~]# groupadd -g 54322 dba
[root@ol7 ~]# groupadd -g 54323 oper
[root@ol7 ~]# groupadd -g 54324 backupdba
[root@ol7 ~]# groupadd -g 54325 dgdba
[root@ol7 ~]# groupadd -g 54326 kmdba
[root@ol7 ~]# groupadd -g 54327 asmdba
[root@ol7 ~]# groupadd -g 54328 asmoper
[root@ol7 ~]# groupadd -g 54329 asmadmin
[root@ol7 ~]# groupadd -g 54330 racdba
[root@ol7 ~]# useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
نکته 1: الزامی جهت تعیین نام کاربر به oracle وجود ندارد.
نکته 2: نرم افزار اوراکل صرفا با ایجاد یک گروه و یک کاربر هم قابل نصب می باشد.
مرحله چهارم:در این مرحله، تغییراتی را در چند فایل اعمال خواهیم کرد که البته باید توجه نمود بعضی از مقادیر، باید متناسب با بار سرور و میزان منابع سرور، بازنگری شوند.
—خطوط زیر را به فایل sysctl.conf اضافه می کنیم:
[root@ol7 ~]# vi /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.panic_on_oops=1
برای اعمال این تغییرات، ازدستور زیر استفاده می شود:
[root@ol7 ~]# sysctl -p
—مدیریت محدودیت منابع مصرفی کاربر oracle:
[root@ol7 ~]# vi /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 65536
oracle hard nproc 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728
—به فایل login خط زیر را اضافه می کنیم:
[root@ol7 ~]# vi /etc/pam.d/login
session required pam_limits.so
نکته: بدون انجام مرحله چهارم، نرم افزار اوراکل قابل نصب می باشد.
مرحله پنجم: در صورت عدم نیاز به دو سرویس فایروال و selinux، انها را غیرفعال می کنیم:
—غیرفعال کردن سرویس فایروال:
[root@ol7 ~]# systemctl stop firewalld
[root@ol7 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
—غیرفعال کردن selinux:
[root@ol7 ~]# vi /etc/sysconfig/selinux
SELINUX=disabled
[root@ol7 ~]# reboot
نکته: بدون انجام مرحله پنجم، نرم افزار اوراکل قابل نصب می باشد و صرفا برای اتصال از راه دور به بانک اطلاعاتی، باید فایروال را غیر فعال و یا تنظیم کرد.
مرحله ششم: مسیری که قرار است نرم افزار اوراکل در ان نصب شود را ایجاد می کنیم:
[root@ol7 ~]# mkdir -p /usef1/oracle/12c
بعد از ایجاد این مسیر، مالکیت ان را به کاربر اوراکل و گروه oinstall تغییر می دهیم:
[root@ol7 ~]# chown -R oracle.oinstall /usef1
مرحله هفتم: متغیرهای مربوط به نرم افزار اوراکل را در یکی از user login fileها (از قبیل .bash_profile – .bashrc) تنظیم می کنیم:
[root@ol7 ~]# su – oracle
[oracle@ol7 ~]$ vi .bash_profile
export ORACLE_BASE=/usef1/oracle
export ORACLE_HOME=/usef1/oracle/12c
export ORACLE_SID=usefdb
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_UNQNAME=usefdb
export ORACLE_HOSTNAME=ol7
export PATH=/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export TMP=/tmp
export TMPDIR=$TMP
متغیرهای مهم و ضروری را به صورت bold نمایش داده ایم.
نکته: بدون انجام مرحله هفتم(تنظیم bash_profile)، نرم افزار اوراکل قابل نصب می باشد.
نصب سایلنت نرم افزار اوراکل(اجرای runInstaller)
در هفت مرحله قبلی، مقدمات محیطی نصب اوراکل، فراهم شد. حال قصد داریم به صورت silent و بدون استفاده از محیط گرافیکی، به نصب این نرم افزار بپردازیم.
برای نصب silent نرم افزار اوراکل و همچنین ایجاد بانک و در نهایت اجرای netca، می توان از فایلهای موجود در سورس اوراکل کمک گرفت. این فایلها، در پوشه response قرار دارند:
[oracle@ol7 ~]$ cd /source/database/response/
[oracle@ol7 response]$ ll
-rwxrwxr-x. 1 root root 25502 Jan 5 2017 dbca.rsp
-rw-rw-r–. 1 root root 22924 Jan 26 2017 db_install.rsp
-rwxrwxr-x. 1 root root 6209 Jun 20 2016 netca.rsp
هر کدام از این فایلها، توضیحی مختصری از پارامترهای مرتبط را به همراه دارند به همین دلیل، قبل از ایجاد هرگونه تغییرات در این فایلها(البته الزامی در استفاده از این فایلها وجود ندارد)، بد نیست تا از این فایلها، کپی ای را داشته باشیم:
[oracle@ol7 response]$ cp db_install.rsp db_install.rsp_bkp
سرانجام برای نصب نرم افزار اوراکل، بعد از تعیین پارامترهای مورد نظر(با کمک فایل db_install.rsp)، محتویات قبلی فایل db_install.rsp را پاک کرده و پارامترهای زیر را به این فایل اضافه می کنیم:
[oracle@ol7 response]$ vi db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=ol7
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/usef1/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/usef1/oracle/12c
ORACLE_BASE=/usef1/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=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
با کمک این پارامترها، تعیین شد که نرم افزار بدون ایجاد بانک نصب شود(INSTALL_DB_SWONLY) آن هم به صورت (enterprise edition(InstallEdition=EE همچنین پارامترهای ORACLE_HOME و ORACLE_BASE به همراه اسامی گروها هم در بین این پارامترها قابل مشاهد هستند.
حال برای نصب نرم افزار با این مشخصات، نیاز است تا در زمان اجرای runInstaller، ادرس این فایل را با کمک پارامتر responsefile تعیین کرد:
[oracle@ol7 response]$ cd /source/database/
[oracle@ol7 database]$ ./runInstaller –silent –responsefile /source/database/response/db_install.rsp
با اجرای این دستور، نصب نرم افزار اوراکل شروع خواهد شد و پیامهای زیر، قابل مشاهده خواهند بود:
Starting Oracle Universal Installer…
Checking Temp space: must be greater than 500 MB. Actual 23629 MB Passed
Checking swap space: must be greater than 150 MB. Actual 4084 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-07-17_02-19-52AM. Please wait …[oracle@ol7 database]$ You can find the log of this install session at:
/usef1/oraInventory/logs/installActions2018-07-17_02-19-52AM.log
The installation of Oracle Database 12c was successful.
Please check ‘/usef1/oraInventory/logs/silentInstall2018-07-17_02-19-52AM.log’ for more details.
As a root user, execute the following script(s):
- /usef1/oraInventory/orainstRoot.sh
- /usef1/oracle/12c/root.sh
Successfully Setup Software.
همانند محیط گرافیکی، نیاز است تا دو اسکرپیت پایانی را به صورت دستی و با کمک کاربر root اجرا کنیم:
[root@ol7 ~]# /usef1/oraInventory/orainstRoot.sh
Changing permissions of /usef1/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /usef1/oraInventory to oinstall.
The execution of the script is complete.
[root@ol7 ~]# /usef1/oracle/12c/root.sh
Check /usef1/oracle/12c/install/root_ol7_2018-07-17_02-37-06-019988768.log for the output of root script
با اجرای این دستورات، نصب اوراکل به صورت موفقیت آمیز انجام شد:
[oracle@ol7 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 16 16:10:58 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
اجرای dbca به صورت silent
در ادامه قصد ایجاد بانک اطلاعاتی را به صورت Silent داریم برای این کار می توان در حین اجرای dbca، پارامترهای مورد نیاز را تعیین کرد. همچنین برای مشاهده لیست این پارامترها، می توان از فایل dbca.rsp استفاده کرد.
به طور مثال، در دستوری که در ادامه خواهد امد، بانک (usefdb(gdbName usefdb به صورت General Purpose ایجاد خواهد شد(templateName General_Purpose.dbc) و پسورد کاربران sys و system به abc تنظیم خواهد شد(SysPassword abc SystemPassword abc) همچنین مسیر دیتافایلها هم مشخص شده است(datafileDestination) و خبری از پیکربندی em نخواهد بود(emConfiguration NONE) علاوه بر این تنظیمات، کارکترست به AL32UTF8 ست شده(characterSet AL32UTF8) و اندازه memory target هم به یک گیگابات تنظیم شده است(totalMemory 1000) و در آخر، مسیر fra هم تعیین شده است(recoveryAreaDestination):
[oracle@ol7 ~]$ dbca -silent –createDatabase –templateName General_Purpose.dbc –gdbName usefdb –pdbadminPassword abc –SysPassword abc –SystemPassword abc –emConfiguration NONE –datafileDestination /usef1/oracle/oradata –characterSet AL32UTF8 –totalMemory 1000 –recoveryAreaDestination /usef1/oracle/flash_recovery_area
با اجرای این دستور، فرایند ساخت دیتابیس شروع خواهد شد و پیامهای زیر، قابل مشاهده خواهند بود:
[WARNING] [DBT-06208] The ‘SYS’ password entered does not conform to the Oracle recommended standards.
CAUSE: a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The ‘SYSTEM’ password entered does not conform to the Oracle recommended standards.
CAUSE: a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Copying database files
1% complete
2% complete
18% complete
33% complete
Creating and starting Oracle instance
35% complete
40% complete
44% complete
49% complete
50% complete
53% complete
55% complete
Completing Database Creation
56% complete
57% complete
58% complete
62% complete
65% complete
66% complete
Executing Post Configuration Actions
100% complete
Look at the log file “/usef1/oracle/cfgtoollogs/dbca/usefdb/usefdb.log” for further details.
ایجاد بانک اطلاعاتی، با موفقیت انجام شد، نام دیتابیس و همچنین وضیعت instance را در ادامه مشاهده خواهید کرد:
[oracle@ol7 ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jul 17 03:00:12 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 – 64bit Production
SQL> select name from v$database;
NAME
———
USEFDB
SQL> select status from v$instance;
STATUS
————
OPEN
اجرای netca به صورت silent
برای مشاهده لیست پارامترهای مورد نیاز، برای اجرای silent دستور netca، می توان از فایل netca.rsp استفاده کرد. در این متن، بدون تغییر خاصی در این فایل(netca.rsp)، دستور netca را اجرا می کنیم البته قبل از اجرای دستور netca، وضیعت جاری listener را چک می کنیم:
[oracle@ol7 ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 – Production on 17-JUL-2018 04:38:25
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
همانطور که می بینید، سرویس listener در وضیعت stop قرار دارد. با اجرای دستور netca، فایل مربوطه را ایجاد و همچنین، سرویس listener را استارت می کنیم:
[oracle@ol7 ~]$ netca -silent -responseFile /source/database/response/netca.rsp
Parsing command line arguments:
Parameter “silent” = true
Parameter “responsefile” = /source/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/usef1/oracle/12c/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
سرویس listener در وضیعت start قرار خواهد گرفت:
[oracle@ol7 ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 – Production on 17-JUL-2018 04:50:59
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7)(PORT=1521)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 – Production
Start Date 17-JUL-2018 04:47:44
Uptime 0 days 0 hr. 3 min. 14 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /usef1/oracle/12c/network/admin/listener.ora
Listener Log File /usef1/oracle/diag/tnslsnr/ol7/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol7)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary…
Service “usefdb” has 1 instance(s).
Instance “usefdb”, status READY, has 1 handler(s) for this service…
Service “usefdbXDB” has 1 instance(s).
Instance “usefdb”, status READY, has 1 handler(s) for this service…
The command completed successfully