Jako że już przygotowaliśmy system operacyjny do wgrania silnika zarządzającego bazą danych Oracle – dziś opiszę jak sprawnie taki silnik zainstalować.
Na pewno myślisz – nuuuuda, weeeeź co może być eksytującego w klikaniu w next/next/next/skip/done – i masz rację – instalacja oprogramowania przy użyciu instalatora graficznego – praktykowana przez większość adminów – najbardziej popularna – istotnie nie poraża swoim wyrafinowaniem, ot – w odpowiednim momencie kliknąć next, czasem włączyć lub wyłączyć check-boksik, zmienić ścieżkę.
Lecz to tylko jeden sposób z 3 – no dwóch – bo ten pierwszy może wystąpić w dwóch odsłonach.
więc do rzeczy:
najpierw rozpoczniemy od … nuuudy: zainstalujemy sobie tradycyjną okienkową metodą silnik.
I sposób
- sprawdzamy czy mamy odpowiednie zasoby pod instalację – pre-checki instalatora robią robotę.
- robimy download wersji (download.oracle.com lub edelivery.oracle.com) która nas interesuje (w zasadzie od 12.2 wzwyż – 11.2 już chyba nie ma potrzeby instalowania – chcesz być adminem, nie kustoszem)
- instalujemy (tutaj poszedłem po łatwości – to wersja standalone)
- screeny/screeny/screeny
- UWAGA! zapisujemy plik response – przyda nam się w kolejnej odsłonie instalacji.
II sposób – kolejna odsłona runInstaller w silent mode
powstały w poprzednim kroku tzw response file ma postać mniej więcej:
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
DECLINE_SECURITY_UPDATES=true
oracle.installer.autoupdates.option=SKIP_UPDATES
uruchamiamy instalację silent:
oracle@oradb:~/database$ ./runInstaller -silent -showProgress -responseFile /export/home/oracle/database/db_install.rsp
To bardzo wygodne – możesz wykonać kilka instalacji na różnych – bliźniaczych serwerach. Przydatne zwłaszcza gdy chciałbyś zautomatyzować proces – i tutaj płynnie przechodzimy do trzeciego sposobu
III sposób – klon
Tego sposobu możesz użyć tylko gdy masz już gdzieś na swoim systemie zainstalowany silnik. Klon nie sprawdzi czy użytkownik posiada odpowiednie uprawnienia w systemie ani czy zainstalowane są konieczne pakiety – stąd polecam i tak przed klonowaniem wykonanie pre-checka dla systemu docelowego.
klonowanie ma swoją niezaprzeczalną wartość – gdy chciałbyś wgrać patche lub zrobić upgrade do wyższego PSU (będzie jeszcze o tym mowa – to zbiór łatek pojawiających się co kwartał – zarówno te dot. bezpieczeństwa jak i poprawki błędów silnika bazy) – to po prostu sklonujesz istniejący katalog z silnikiem, wgrasz poprawki na klona – i jedyna niedostępność to przełączenie bazy na nowe binaria.
tutaj przedstawiam krok po kroku klonowanie binariów wersji 12.1, lecz klon innych wersji wygląda w zasadzie prawie tak samo.
[oracle@srv1 12.1.0]$ cp -R db_1 db_clone
[oracle@srv1 12.1.0]$ ls
db_1 db_clone
[oracle@srv1 12.1.0]$ env
ORACLE_UNQNAME=ORADB
USER=oracle
LD_LIBRARY_PATH=/u01/app/oracle/product/12.1.0/db_1/lib:/u01/app/oracle/product/12.1.0/db_1/oracm/lib:/lib:/usr/lib:/usr/local/lib
ORACLE_SID=ORADB
ORACLE_BASE=/u01/app/oracle
TNS_ADMIN=/u01/app/oracle/product/12.1.0/db_1/network/admin
PATH=.:/usr/bin/java/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin:/u01/app/oracle/product/12.1.0/db_1/bin:/usr/bin:/bin:/usr/local/bin
CLASSPATH=/u01/app/oracle/product/12.1.0/db_1/JRE:/u01/app/oracle/product/12.1.0/db_1/jlib:/u01/app/oracle/product/12.1.0/db_1/rdbms/jlib:/u01/app/oracle/product/12.1.0/db_1/network/jlib
ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1
[oracle@srv1 12.1.0]$ cd db_clone/
[oracle@srv1 db_clone]$ export ORACLE_HOME=`pwd`
[oracle@srv1 db_clone]$ export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
[oracle@srv1 db_clone]$ export PATH=/usr/bin/java/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin:$ORACLE_HOME/bin:/usr/bin:/bin:/usr/local/bin
[oracle@srv1 db_clone]$ cd clone
[oracle@srv1 clone]$ ls
bin clone_oraparam.ini clone_oraparam.ini.sbs config
[oracle@srv1 clone]$ cd bin
[oracle@srv1 bin]$ ls
clone.pl clone.pl.sbs prepare_clone.pl
[oracle@srv1 bin]$ ls -l
total 52
-rwxr-xr-x. 1 oracle oinstall 21556 May 16 21:52 clone.pl
-rwxr-xr-x. 1 oracle oinstall 21582 May 16 21:52 clone.pl.sbs
-rwxr-xr-x. 1 oracle oinstall 838 May 16 21:52 prepare_clone.pl
[oracle@srv1 clone]$ cd $ORACLE_HOME
[oracle@srv1 db_clone]$ cd network/admin
[oracle@srv1 admin]$ ls -ltr
total 16
drwxr-xr-x. 2 oracle oinstall 4096 May 16 21:51 samples
-rw-r--r--. 1 oracle oinstall 408 May 16 21:51 tnsnames.ora
-rw-r--r--. 1 oracle oinstall 43 May 16 21:51 sqlnet.ora
-rw-r--r--. 1 oracle oinstall 373 May 16 21:51 shrept.lst
[oracle@srv1 admin]$ rm tnsnames.ora sqlnet.ora
[oracle@srv1 admin]$ cd -
/u01/app/oracle/product/12.1.0/db_clone
[oracle@srv1 db_clone]$ cd clone/bin
[oracle@srv1 bin]$ $ORACLE_HOME/perl/bin/perl clone.pl ORACLE_BASE="/u01/app/oracle/" ORACLE_HOME="/u01/app/oracle/product/12.1.0/db_clone" OSDBA_GROUP=dba OSOPER_GROUP=dba
./runInstaller -clone -waitForCompletion "ORACLE_BASE=/u01/app/oracle/" "ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_clone" "oracle_install_OSDBA=dba" "oracle_install_OSOPER=dba" -silent -paramFile /u01/app/oracle/product/12.1.0/db_clone/clone/clone_oraparam.ini
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 500 MB. Actual 62849 MB Passed
Checking swap space: must be greater than 500 MB. Actual 5965 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-05-16_10-26-07PM. Please wait ...You can find the log of this install session at:
/u01/app/oraInventory/logs/cloneActions2019-05-16_10-26-07PM.log
.................................................. 5% Done.
.................................................. 10% Done.
.................................................. 15% Done.
.................................................. 20% Done.
.................................................. 25% Done.
.................................................. 30% Done.
.................................................. 35% Done.
.................................................. 40% Done.
.................................................. 45% Done.
.................................................. 50% Done.
.................................................. 55% Done.
.................................................. 60% Done.
.................................................. 65% Done.
.................................................. 70% Done.
.................................................. 75% Done.
.................................................. 80% Done.
.................................................. 85% Done.
..........
Copy files in progress.
Copy files successful.
Link binaries in progress.
Link binaries successful.
Setup files in progress.
Setup files successful.
Setup Inventory in progress.
Setup Inventory successful.
Finish Setup successful.
The cloning of OraHome1 was successful.
Please check '/u01/app/oraInventory/logs/cloneActions2019-05-16_10-04-37PM.log' for more details.
Setup Oracle Base in progress.
Setup Oracle Base successful.
.................................................. 95% Done.
As a root user, execute the following script(s):
1. /u01/app/oracle/product/12.1.0/db_clone/root.sh
.................................................. 100% Done.
[oracle@srv1 bin]$
[oracle@srv1 bin]$ logout
[root@srv1 ~]# /u01/app/oracle/product/12.1.0/db_clone/root.sh
Check /u01/app/oracle/product/12.1.0/db_clone/install/root_srv1.localdomain_2019-05-16_22-13-50.log for the output of root script
[root@srv1 ~]# cat /u01/app/oracle/product/12.1.0/db_clone/install/root_srv1.localdomain_2019-05-16_22-13-50.log
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.1.0/db_clone
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
[root@srv1 ~]#
Uwaga: jeśli IP w /etc/hosts będzie różnić się od faktycznego IP hosta – wtedy otrzymasz brzydki komunikat:
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-05-16_10-04-37PM. Please wait …java.lang.NullPointerException
at oracle.sysman.oii.oiin.OiinNetOps.addNICInfo(OiinNetOps.java:144)
at oracle.sysman.oii.oiin.OiinNetOps.computeNICList(OiinNetOps.java:109)
at oracle.sysman.oii.oiin.OiinNetOps.(OiinNetOps.java:76)
at oracle.sysman.oii.oiin.OiinNetOps.getNetOps(OiinNetOps.java:90)
at oracle.sysman.oii.oiix.OiixNetOps.getFullHostName(OiixNetOps.java:49)
at oracle.install.library.util.MachineInfo.getFullHostName(MachineInfo.java:174)
at oracle.install.library.util.PlatformInfo.getFullHostName(PlatformInfo.java:136)
at oracle.install.ivw.common.util.OracleCloner.validateArguments(OracleCloner.java:116)
at oracle.install.ivw.common.util.OracleCloner.processArguments(OracleCloner.java:73)
at oracle.install.commons.util.Application.startup(Application.java:698)
at oracle.install.commons.util.Application.startup(Application.java:675)
at oracle.install.commons.base.driver.common.Cloner.startup(Cloner.java:101)
at oracle.install.ivw.common.util.OracleCloner.startup(OracleCloner.java:90)
at oracle.install.ivw.common.util.OracleCloner.main(OracleCloner.java:210)
You can find the log of this install session at: