技術ブログ
技術ブログ
目次
この記事は(全部俺)某Oracle書籍を25日後に脱稿するXX歳の Advent Calendar 2021の10日目の記事です。9日目の記事は19c新機能 リカバリカタログ使用時のPDB接続 - (全部俺)某Oracle書籍を25日後に脱稿するXX歳のAdvent Calendar 2021 9日目でした。
つい「カッと」なって(全部俺)某Oracle書籍を25日後に脱稿するXX歳の Advent Calendar 2021を作ってしまいました。
オラクルマスター教科書 Bronze DBA Oracle Database Fundamentals、 オラクルマスター教科書 Silver DBA Oracle Database Administration Iに続く「某Oracle書籍」を執筆中のOracle ACE 渡部が、12月25日のドラフト脱稿目指して1日1記事頑張って投稿してゆきたいと思います!
「某Oracle書籍」執筆中に実施した下調べの内容や、「某Oracle書籍」のターゲットを超える内容、内容的に関連するセミナー資料の抜粋などを記載する予定です。
2021年12月時点で「某Oracle書籍」の発売時期は未定です。もう少々お待ちを。
万が一、関係者から怒られたら途中でやめるかも(たぶん大丈夫だと思うのだけど)
執筆中の「某Oracle書籍」の記載内容と、一連の投稿の記載内容は異なります
「某Oracle書籍」の記載と、一連の投稿は品質が全く異なります 。
オラクルマスター教科書 Silver DBA Oracle Database Administration I https://www.amazon.co.jp/dp/4798166359/ (2021年5月28日 発売)
オラクルマスター教科書 Bronze DBA Oracle Database Fundamentals https://www.amazon.co.jp/dp/4798166367/ (2020年9月17日 発売)
2022/3/25 追記
12月中の脱稿には失敗してしまいましたが、その後鋭意執筆を進め、2022年5月27日に「オラクルマスター教科書 Gold DBA Oracle Database Administration II」を販売開始します。詳細は以下をご覧ください。
ORACLE MASTER Bronze DBA 2019試験対策本の発売日が決定しました
Oracle 18cから、一般的なLinuxツールと同様に、RPMファイルを使ってrpmコマンドやyumコマンドでOracle Databaseをインストールできるようになりました。
Oracle 19c用のRPMファイルを前提にしたときの、大枠の手順は以下のとおりです。
rootユーザーで実行する
2.6Gバイトとなかなか大きいファイルサイズのRPMファイルですが、ともあれ、通常のRPMファイルのように rpmコマンドでインストールできます。
[oracle@ol79n23 tmp]$ ls -hl /var/tmp/oracle-database-ee-19c-1.0-1.x86_64.rpm
-rw-r--r--. 1 oracle oinstall 2.6G Nov 13 2021 /var/tmp/oracle-database-ee-19c-1.0-1.x86_64.rpm
[oracle@ol79n23 tmp]$ sudo rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm
warning: oracle-database-ee-19c-1.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:oracle-database-ee-19c-1.0-1 ################################# [100%]
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-19c configure
[oracle@ol79n23 tmp]$
ORACLE_HOMEは決め打ちで、/opt/oracle/product/19c/dbhome_1 です。
従って、当然 /opt/oracle/product/19c/dbhome_1 以下に大量のファイルが導入される形になるわけですが、 /opt/oracle/product/19c/dbhome_1 以外にも以下のファイルが導入されます。
[oracle@ol79n23 tmp]$ rpm -ql $rpmpkg | grep -v /opt/oracle/product
/etc/init.d/oracledb_ORCLCDB-19c
/etc/sysconfig/oracledb_ORCLCDB-19c.conf
RPMインストール時の実行スクリプト(scriptlet)は、一般に rpm -q --scripts で確認できます。 Oracle RPMファイルも同様です。
[oracle@ol79n23 tmp]$ RPMNAME=oracle-database-ee-19c-1.0-1.x86_64.rpm
[oracle@ol79n23 tmp]$ rpm -qp --scripts ${RPMNAME}
warning: oracle-database-ee-19c-1.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
preinstall scriptlet (using /bin/sh):
#!/bin/sh
#execute pre install validations
#Create the corresponding log for the RPM installation
RPM_LOG_LOCATION=/var/log/oracle-database-ee-19c/results
RPM_LOG_FILE=$RPM_LOG_LOCATION/oraInstall.log
(略)
postinstall scriptlet (using /bin/sh):
RPM_LOG_FILE=/var/log/oracle-database-ee-19c/results/oraInstall.log;
INVENTORY_SETUP_ALREADY=false;
if [ -f '/etc/oraInst.loc' ]; then
INVENTORY_LOC=`cat /etc/oraInst.loc | grep -o ^inventory_loc=.* | sed -e 's/^inventory_loc=//'`;
/bin/echo [INFO] Inventory located at: ${INVENTORY_LOC} >> $RPM_LOG_FILE;
INVENTORY_SETUP_ALREADY=true;
(略)
preuninstall scriptlet (using /bin/sh):
RPM_LOG_FILE=/var/log/oracle-database-ee-19c/results/oraInstall.log;
/bin/echo [PRE-UNINSTALL] >> $RPM_LOG_FILE;
/bin/echo [INFO] Performing uninstall actions on Oracle home... >> $RPM_LOG_FILE;
/bin/echo $(date +%x-%r) >> $RPM_LOG_FILE;
TMP_FOLDER='/tmp';
FOLDER_NAME_FRM=deinstall_rsp_;
(略)
postuninstall scriptlet (using /bin/sh):
#!/bin/sh
if [ -f '/etc/oraInst.loc' ]; then
#Existing inventory found!!
INVENTORY_LOCATION=`cat /etc/oraInst.loc | grep -o ^inventory_loc=.* | sed -e 's/^inventory_loc=//'`;
INVENTORY_FILE=${INVENTORY_LOCATION}/ContentsXML/inventory.xml;
#First validate if the inventory is already empty
if `grep -q '<HOME *NAME=' $INVENTORY_FILE`; then
(略)
実行スクリプトとしては以下の4つがありました。
ファイル展開前に実行される処理ですが、主なものとしては以下がありました。
ファイル展開後に実行される処理ですが、主なものとしては以下がありました。
runInstaller.shを実行している該当部分を抜粋します。
su -c "/opt/oracle/product/19c/dbhome_1/oui/bin/runInstaller.sh -silent -ignoreSysPrereqs -detachHome ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 ORACLE_BASE=/opt/oracle ORACLE_HOME_NAME=${NEW_ORA_HOME_NAME} INVENTORY_LOCATION=${INVENTORY_LOC} " >> /dev/null -m oracle
su -c "/opt/oracle/product/19c/dbhome_1/oui/bin/runInstaller.sh -silent -ignoreSysPrereqs -attachHome ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 ORACLE_BASE=/opt/oracle ORACLE_HOME_NAME=${NEW_ORA_HOME_NAME} INVENTORY_LOCATION=${INVENTORY_LOC} " >> /dev/null -m oracle
oracleユーザーで、runInstaller.shをサイレントモード実行していることがわかります。
実行される処理から、以下の点を注意すべきであることがわかります。
RPMインストール時のメッセージからわかるとおり、
[oracle@ol79n23 tmp]$ sudo rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm
warning: oracle-database-ee-19c-1.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:oracle-database-ee-19c-1.0-1 ################################# [100%]
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-19c configure
[oracle@ol79n23 tmp]$
サンプルデータベースを作成するには /etc/init.d/oracledb_ORCLCDB-19c configure を実行する必要があります。
[root@ol79n23 ~]# /etc/init.d/oracledb_ORCLCDB-19c configure
Configuring Oracle Database ORCLCDB.
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
43% complete
46% complete
Completing Database Creation
51% complete
54% complete
Creating Pluggable Databases
58% complete
77% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.
Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user.
[root@ol79n23 ~]#
/etc/init.d/oracledb_ORCLCDB-19cから該当する箇所を抜粋します。
# Entry point to configure the DB
configure()
{
check_for_configuration
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo Oracle Database instance $ORACLE_SID is already configured.
exit 1
fi
read_config_file
check_port_availability
check_em_express_port_availability
configure_perform
}
# To call DBCA to configure the DB
configure_perform()
{
# Unset the proxy env vars before calling dbca
unset_proxy_vars
echo Configuring Oracle Database $ORACLE_SID.
$SU -s /bin/bash $ORACLE_OWNER -c $DBCA -silent -createDatabase -gdbName $ORACLE_SID -templateName $TEMPLATE_NAME -characterSet $CHARSET -createAsContainerDatabase $CREATE_AS_CDB -numberOfPDBs $NUMBER_OF_PDBS -pdbName $PDB_NAME -createListener $LISTENER_NAME:$LISTENER_PORT -datafileDestination $ORACLE_DATA_LOCATION -sid $ORACLE_SID -autoGeneratePasswords -emConfiguration DBEXPRESS -emExpressPort $EM_EXPRESS_PORT
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]
then
echo Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user.
return 0
else
echo Database configuration failed.
exit 1
fi
}
DBCAが呼び出されていることがわかります。DBCAコマンドの部分を改行で整理すると以下のようになります。
$DBCA
-silent
-createDatabase
-gdbName $ORACLE_SID
-templateName $TEMPLATE_NAME
-characterSet $CHARSET
-createAsContainerDatabase $CREATE_AS_CDB
-numberOfPDBs $NUMBER_OF_PDBS
-pdbName $PDB_NAME
-createListener $LISTENER_NAME:$LISTENER_PORT
-datafileDestination $ORACLE_DATA_LOCATION
-sid $ORACLE_SID
-autoGeneratePasswords
-emConfiguration DBEXPRESS
-emExpressPort $EM_EXPRESS_PORT
物理メモリが小さい場合ORA-04031の発生に注意が必要です。
[oracle@ol79n23 tmp]$ sudo /etc/init.d/oracledb_ORCLCDB-19c configure
Configuring Oracle Database ORCLCDB.
[FATAL] [DBT-06103] The port (1,521) is already in use.
ACTION: Specify a free port.
Database configuration failed.
2022/3/25 追記
12月中の脱稿には失敗してしまいましたが、その後鋭意執筆を進め、2022年5月27日に「オラクルマスター教科書 Gold DBA Oracle Database Administration II」を販売開始します。詳細は以下をご覧ください。
ORACLE MASTER Bronze DBA 2019試験対策本の発売日が決定しました