Oracle9i Database Release2(9.2.0) for Linuxインストール手順
OS: RedHat7.3(FTP版)
今回、Oranaviを使用せず手動でインストールしました。
インストール前の確認事項と設定
OTNドキュメント(Oracle9i Database Release2(9.2.0) for Linux スタートガイド参照)<ユーザー:rootでログインし、Xwindow起動し、ktermを起動>※インストール時にはXwindowが必要です。 ターミナルでの操作です。
- HDDディスクの空き容量、メモリ容量、スワップ、カーネルパラメータの確認
最小要件として、HDD3.5GB以上の空き容量(初期DB含まず)、 メモリ512MB以上が必要です。
[root@unit02 root]# df -k //ディスク空き容量確認
[root@unit02 root]# grep MemTotal /proc/meminfo //メモリ容量確認
[root@unit02 root]# /sbin/swapon -s //スワップ領域確認
[root@unit02 root]# ulimit -f //ファイルサイズ上限確認
[root@unit02 root]# sysctl -a | grep sem //カーネルパラメータのSemaphore
[root@unit02 root]# sysctl -a | grep shmmax //カーネルパラメータのShmmax確認(共有メモリ)確認
※1:Semaphoreは、複数のプログラムを実行する時に、それらの同期をとるための
OSの機能。
確認時に表示される内容は以下のとおり。=の右側の数字は今回の場合。
SEMMSL、SEMMNS、SEMOPM、SEMMNI =250 32000 32 128
- 実メモリの確認
[root@unit02 root]# cat /proc/meminfo
total: used: free: shared: ・・・・
Mem: 518455296 506449920 ・・・・・・
^^^^^^^^^
//実メモリは518,455,296バイトと表示されている。
//後で/etc/sysctl.confファイルのshmmax値に、この半分の値を設定するので控える。
- /etc/sysctl.confファイルへ値を書き込むエディタで /etc/sysctl.confを開き、最終行に「kernel.sem」、「kernel.shmmax」の設定について以下の書式で新規追加する。
[root@unit02 root]# vi /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) for
# more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
kernel.sem = 250 32000 100 128 //この行を新規追加する。
kernel.shmmax = 259227648 //この行を新規追加する。
//「kernel.sem」部分は、A-1で調べた「sem」の3番目のパラメータ
//(SEMOPM)を100に変更することになる。
//この数字はOracle9i DB R2 for Linuxに必要な最低限の値とのこと。
//A-1で調べた時に、これ以上の値になっている場合は変更の必要無し。
//「kernel.shmmax」部分はA-2で確認した実メモリの1/2の値を設定する。
//:wqで保存してエディタ終了
- カーネルパラメータの設定
sysctlコマンドでA-3で書き込んだ内容を設定する。
[root@unit02 root]# sync;sync //念のため
[root@unit02 root]# sysctl -p //-pで設定更新
kernel.sem = 250 32000 100 128
kernel.shmmax = 259227648
[root@unit02 root]# sysctl -a | grep sem //設定されたか確認
kernel.sem = 250 32000 100 128
[root@unit02 root]# sysctl -a | grep sem
kernel.shmmax = 259227648
- 必要なパッケージの確認
Linuxカーネル、Glibc、その他インストール時に必要なパッケージを
rpmコマンドで確認。
[root@unit02 root]# rpm -q kernel glibc binutils make gcc
kernel-*******
glibc-******
binutils-******
make-******
gcc-******
//******部分はバージョン情報.バージョンが新しすぎると
Oracleが動かないことも考えれるが、
//今回、RedHat7.3ではOKでした。
//これらのパッケージがインストールされていない場合は、
//OTNドキュメント(Oracle9i Database Release2(9.2.0)
for Linux スタートガイド)のV-?を参照してインストールしてください。
- コマンド配置の確認
make, ar, ld, nmコマンドが/usr/binに含まれていることを確認する。
[root@unit02 root]# which make ar ld nm
/usr/bin/make
/usr/bin/ar
/usr/bin/ld
/usr/bin/nm
手動でのインストールターミナルでの操作です。
- グループ、ユーザーの作成
groupaddコマンドでインストール用グループ「oinstall],
管理者用グループ「dba」を作成する。
useraddコマンドでインストール用ユーザー「oracle」を作成する。
ユーザーoracleのデフォルトグループはoinstall、サブグループはdbaとする
[root@unit02 root]# groupadd -g 500 oinstall //グループ「oinstall」作成
[root@unit02 root]# groupadd -g 501 dba //グループ「dba」作成
[root@unit02 root]# useradd -g oinstall -G dba oracle
//ユーザー「oracle」作成
[root@unit02 root]# passwd oracle //ユーザー「oracle」のパスワード設定
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
//パスワード設定完了
- 環境変数の設定
ユーザーoracleの環境変数の設定を行う。
以下のようにエディタで/home/oracle/.bash_profileファイルを開く
[root@unit02 root]# vi /home/oracle/.bash_profile
//「export ORACLE_BASE=/usr/oracle」以下の部分を追加する。
# .bash_profile
# Get the aliases and functions
if [ -f~/.bashrc ]; then
.~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
export ORACLE_BASE=/usr/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export NLS_LANG=Japanese_Japan.JA16EUC
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_DOC=$ORACLE_HOME/doc
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/classes12.zip
CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/nls_charaset12.zip
export CLASSPATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/jdbc/lib
export LD_LIBRARY_PATH
//:wqで保存してエディタ終了
- インストール先ディレクトリの作成(今回は/usr/oracleにインストールする)
[root@unit02 root]# mkdir /usr/oracle //インストール先ディレクトリ作成
[root@unit02 root]# chown oracle.oinstall /usr/oracle //所有者設定
[root@unit02 root]# chmod 755 /usr/oracle //権限設定
Oracle Universal Installer(OUI)を起動してインストールの続きを行う
ここからはインストール画面を利用し、インストールのセカンドステージに入ります。
途中ターミナルでの操作もあります。
ターミナルでの操作部分は「kterm」マークがついています。
- 1枚目のCDをCD-ROMドライブにセットする。
OUI起動前に、LANGを以下のように設定する。 これは、RedHat7.3ではOUI画面の日本語表示が文字化けするため、 英語表示に変更する必要があるから。
--「kterm」--
[root@unit02 root]# export LANG= //LANGの値を空にする
[root@unit02 root]# su - oracle //ユーザー「oracle」にログインしなおす
[oracle@unit02 oracle]# kterm //ターミナル起動
[oracle@unit02 oracle]# /mnt/cdrom/runInstaller //OUI起動
- WELCOME画面
「NEXT」クリック
- Inventory Location画面「What would you like as the base directory?」欄の文字列を
/usr/oracle/product/9.2.0/oraInventory
に変更し、「OK」クリック。
- UNIX Group Name画面「UNIX Goup NAME:」欄
oinstall
と入力し、「Next」クリック。
- orainstRoot.shの実行ダイアログで/tmp/orainstRoor.shを実行するように指示があるので、
ktermを起動して、ユーザー:rootで実行する。
--「kterm」--
[root@unit02 root]# cd /tmp //ディレクトリチェンジ
[root@unit02 root]# ls //該当ファイルがあるか確認
[root@unit02 root]# /tmp/orainstRoot.sh //ファイルの実行
Creating Oracle Inventory pointer file (/etc/oraInst.loc)
Chenging groupname of /usr/oracle/product/9.2.0/oraInventory to oinstall.
//正常に実行された。
[root@unit02 root]#
ダイアログに戻り、「Continue」クリック。
- File Locations画面
Source
「Parh」欄:/mnt/cdrom/stage/products.jar
Destination
「Name」欄:OUIHome
「Path」欄:/usr/oracle/product/9.2.0
(上記の値はデフォルトで表示されていると思います。)ファイルの位置の確認をしたら、「Next」クリック。
- Available Products画面
どのプログラムをインストールするか選択。
一番上の「Oracle9i Database 9.2.0.1.0」を選択。.
右下にある「Product Languages」をクリック。(言語の選択を行う) 「Language Selection」ダイアログが出る。 デフォルトで「English」のみが選択されているので、
「Japanese」
を追加し、「OK」クリック。 Available Products画面に戻るので、「Next」クリック。
- Installation Types画面一番上の「Enterprise Edition (1.76GB)」を選択し、「Next」クリック。
- Database Configuration画面一番下の「Software Only」を選択し、「Next」クリック。
通常は「General Purpose」を選択することが多いかもしれないがこれにするとサンプルDBが作成されるので、HDD容量やメモリが 少ない時などは「Software Only」にして、後で自分でDBを作成したほうがよい。
- Summary画面今まで選択した内容を確認後「Install」クリック。
DBも作成するタイプを選択するとこの画面に行く前に、 データベースの設定画面に移ると思います。
- インストール開始ファイルのコピー等が開始される。
途中2枚目のCD-ROMに交換するよう指示が出る。 ディスクトップにCD-ROMアイコンが表示されている場合は、 アイコン右ボタンクリックし、アンマウントボリュームを選択すると、CD-ROMが排出されるので、CD-ROMを交換する。 CD-ROM交換後「OK」クリック
- 同様に3枚目のCD-ROMに交換するよう指示が出る。
3枚目のCD-ROMを入れる前にktermで、以下を編集する。 これを行わないとインストール終盤でのコンパイル時にエラーとなり、 インストールが中断する。
--「kterm」--
[oracle@unit02 oracle]# cd /home/oracle/OraHome1/ctx/lib/
[oracle@unit02 lib]# vi env_ctx.mk
INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca $(LDLIBFLAG)sc_fa ・・
^^^^^^^^^^^^^^^^ 「$(LDLIBFLAG)dl」の文字列をここに追加する。
上記のように編集し、CD-ROM交換後「OK」クリック 追加しないまま続行していくと、エラーが出る。 エラーが出てしまったら、上記のようにenv_ctx.mkを編集して、 「Retry」をクリックする。
- Setup Privileges画面構成スクリプト実行を指示してくるので、ktermからユーザー:rootで実行する。
構成スクリプト実行をするまでは、「OK」をクリックしない。
--「kterm」--
[root@unit02 root]# cd /usr/oracle/product/9.2.0
[root@unit02 root]# /usr/oracle/product/9.2.0/root.sh //root.shの実行
Running Oracle9 root.sh script...
\nThe following enviroment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /usr/oracle/product/9.2.0
Enter the full pathname of the local bin directory:[/usr/local/bun]:
^^^^^^^^^^^^^^^^
//行の終わりの[ ]内を確認する。
//今回は/usr/local/binで設定した。
//Enterキークリックすると、実行が進む。
//実行が完了したら、Setup Privileges画面に戻り、「OK」クリック。
- End of Installation画面インストールが正常に終了したら、「Exit」クリック。
データベースの作成
今回は「schedule」プロジェクト用にDBを作成する。
途中ターミナルでの操作もあります。
ターミナルでの操作部分は「kterm」マークがついています。
- Database Configuration Assistant(DBCA)を起動する。
--「kterm」--
[oracle@unit02 bin]# ./dbca
(DBCAが起動される)
- データベース・テンプレート画面
2番目の「General Purpose」を選択し、「次へ」クリック。
- データベース識別情報画面
グローバル・データベース名:「schedule」
SID:「schedule」
通常、グローバル・データベース名とSIDは同じ名前を設定する。
「次へ」をクリック
- データベース接続オプション画面
一番上の「専用サーバ・モード」を選択し、「次へ」クリック。
- 初期化パラメータ画面変更等は特にないので、全タグの内容を確認後「次へ」クリック。
メモリータグ
キャラクタ・セットタグ
DBのサイズ指定タグ
ファイルの位置タグ
アーカイブタグ(通常UTL社内ではアーカイブログは特に作成しない)
- データベース記憶域画面特に変更ないので内容確認後「次へ」クリック。
- 作成オプション画面
「データベースの作成」選択
「データベース・テンプレートとして保存」選択
「名前」:schedule
「終了」クリック。
- サマリー画面設定内容確認後「OK」クリック
- テンプレート作成完了のメッセージ「OK」クリック。
- データベース作成完了のメッセージセキュリティのため、パスワードを変更するので「パスワード管理」をクリック。
この時、この画面にある「SYSパスワード」等の4つの欄は空白のままにしておきます。 (入力するとハングアップします)
- パスワード管理画面SYS,SYSTEM,DBSNMP,SCOTTの「新パスワード」、「パスワードの確認」欄を入力する。
パスワード入力後、「OK」をクリック。 「OK」クリックすると、何故か、画面がいきなり消える。(DBCAのエラー?)何回やってみてもここで落ちるのでそのまま次の作業に移る。
ネットワークの設定を行う。
途中ターミナルでの操作もあります。
ターミナルでの操作部分は「kterm」マークがついています。
- Net Configuration Assistantを起動する。
--「kterm」--
[oracle@unit02 bin]# ./netca
(Net Configuration Assistantが起動される)
- ようこそ画面一番上の「リスナー構成」を選択し、「次へ」クリック。
- リスナー構成−リスナー画面一番上の「追加」選択し、「次へ」クリック。
- リスナー構成−リスナー名画面
リスナー名:「LISTNER」
通常UTLでは、Oracleにはリスナーは1個しか作成しないので
この名前で作成する。
「次へ」クリック。
- リスナー構成−プロトコルの選択
「TCP」を選択し、「次へ」クリック。
デフォルトで「TCP」になっている
- リスナー構成−TCP/IPプロトコル画面
「標準ポート(1521)」選択し、「次へ」クリック。
- リスナー構成−リスナー追加画面
「いいえ」を選択し、「次へ」クリック。
- リスナー構成のプログラムが正常に終了できないので、ktermで手動で終了(lsnrプロセス以外のRunInstallerを"kill -9")する。
--「kterm」--
[oracle@unit02 bin]# ./lsnrctl
LSNRCTL> stop
^^^^^^
//stopと入力する
「コマンドは正常に終了しました」と表示されればOK。
- 再度、リスナーを起動する。
--「kterm」--
LSNRCTL> start
//startと入力する。
「コマンドは正常に終了しました」と表示されればOK。
--「kterm」--
LSNRCTL> quit
//正常に起動できたら、quitと入力し、ファイルから抜ける。
- 再度、Net Configuration Assistantを起動する。
--「kterm」--
[oracle@unit02 bin]# ./netca
(Net Configuration Assistantが起動される)
- ようこそ画面
上から2番目の「ネーミング・メソッド構成」選択し、「次へ」クリック。
- ネーミング・メソッド構成−メソッドの選択画面
「ホスト名」「ローカル」を選択し、「次へ」クリック。
- ネーミング・メソッド構成−ホスト名画面
「次へ」クリック。
- ネーミング・メソッド構成終了メッセージ
「次へ」クリック。
- (再び)ようこそ画面ここからは、クライアントとしてDBに接続するための設定を行う。
上から3番目の「ローカル・ネット・サービス名構成」を選択し、「次へ」クリック。
- ネット・サービス名の構成画面
「追加」選択し、「次へ」クリック。
- ネット・サービス名構成−データベース・バージョン画面
一番上の「Oracle8i以上」を選択し、「次へ」クリック。
- ネット・サービス名構成−サービス名画面
「サービス名」:schedule
「次へ」クリック。
- ネット・サービス名構成−プロトコル選択画面
「TCP」選択し、「次へ」クリック。
- ネット・サービス名構成−TCP/IPプロトコル画面
「ホスト名」:unit02.local.utl.co.jp
「標準ポート」選択
E-6で設定したポートに合わせる
「次へ」クリック。
- ネット・サービス名構成-テスト画面
テストを実行するほうを選択し、「次へ」クリック。
- ネット・サービス名構成-接続画面
デフォルトのユーザ、パスワードでの接続が失敗するので、
「ログインの変更」クリック。
- ログイン変更画面
正しいユーザ、パスワードを入力し、「OK」クリック。
- ネット・サービス名構成-接続画面
正常にログインできたら、「次へ」クリック。
- ネット・サービス名構成-ネット・サービス名画面
「ネット・サービス名」:schedule
「次へ」クリック。
- ネット・サービス名構成-別のネット・サービス名画面
「いいえ」選択し、「次へ」クリック。
- ネット・サービス名構成終了メッセージ
「次へ」クリック。
- ようこそ画面
「終了」クリック。
Oracleの自動起動・停止を設定する。
Linux起動時にOacleも自動で起動、Linux終了時にOracleも自動で停止するための設定。
ターミナルでの操作です。
- ktermでユーザー:rootでログインする。
- /etc/rc.d/init.d/dboraファイルを作成する。
//エディタで以下のように作成
--「kterm」--
[root@unit02 root]# vi /etc/rc.d/init.d/dbora
//ここから
#!/bin/sh
#
#chkconfig: - 99 10
#description: Oracle Database Server
#processname: ora_
#
#dbora This shell script takes care of starting and stopping
# Oracle Database Server.
SUBSYS=/var/lock/subsys/dbora
dbora_init() {
#get ORACLE_HOME from the first entry,
#whose 3rd field is Y, in /etc/oratab.
if [! -f /etc/oratab ]
then
echo "auto startup/shutdown of Oracle: /etc/oratab does not exist."
exit 1
fi
ORA_HOME=`awk -F: '/^[^#:]+:.+:[Y]$/ {print $2; exit}' /etc/oratab`
if [ x$ORA_HOME = "x" ]; then
echo "There is not Y entry in /etc/oratab."
exit 1
fi
#get oracle's owner from owner of dbstart.
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "auto startup/shutdown of Oracle: Oracle may not be installed correctly."
exit 1
fi
ORA_OWNER=`ls -l $ORA_HOME/bin/dbstart | awk '{print $3}'`
}
case "$1" in
'start')
if [ -f $SUBSYS ]; then
echo $0 aledy started.
exit 1
fi
dbora_init
#Start the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
#Start Intelligent Agent and Oracle Managerment Server
#---for Oracle9i---
#su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl start"
#su - $ORA_OWNER -c "$ORA_HOME/bin/oemctl start oms"
#---for Oracle8i---
#su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl dbsnmp_start"
#su - $ORA_OWNER -c "$ORA_HOME/bin/oemctrl start oms"
#------------------------------
#Start the Oracle HTTP Server
#This is a BUG workaround. $ORACLE_HOME/Apache/Jserv/etc
#/jserv.properties needs DISPLAY.
#test -z "$DISPLAY" && export DISPLAY=":60000.0"
#su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl start"
#--------------------------------
touch $SUBSYS
;;
'stop')
if [ ! -f $SUBSYS ]; then
echo $0 alredy stopped.
exit 1
fi
dbora_init
#Stop Intelligent Agent
#---for Oracle9i---
#su - $ORA_OWNER -c "$ORA_HOME/bin/agentctl stop"
#---for Oracle8i---
#su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl dbsnmp_stop"
#------------------------------
#Stop the Oracle HTTP Server
#su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl stop"
#--------------------------------
#Stop the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
rm -f $SUBSYS
;;
'restart')
$0 stop
$0 start
;;
'status')
if [ -f $SUBSYS ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
//ここまで
- dboraファイルの所有者、権限の設定
[root@unit02 root]# chmod a+x /etc/rc.d/init.d/dbora
- chkconfigコマンドで起動スクリプトに追加する。
[root@unit02 root]# chkconfig --add dbora
- dboraスクリプトの実行を設定する。
[root@unit02 root]# chkconfig --level 345 dbora on
- $ORACLE_HOME/bin/dbstartの編集をする。
エディタで$ORACLE_HOME/bin/dbstartを開き55行目の文字列「init」を
「spfile」に変更する。
[root@unit02 root]# vi /usr/oracle/product/9.2.0/bin/dbstart
55行目
(変更前)
PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
^^^^^
↓
(変更後)
PFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
^^^^^^^
- $ORACLE_HOME/bin/dbshutの編集をする。
エディタで$ORACLE_HOME/bin/dbstartを開き80行目、85行目の文字列
「shutdown」を「shutdown immediate」に変更する。
[root@unit02 root]# vi /usr/oracle/product/9.2.0/bin/dbshut
80行目、85行目
(変更前)
shutdown
↓
(変更後)
shutdown immediate
- /etc/oratabの変更
エディタで/etc/oratabを開き、自動起動の設定を行う。
[root@unit02 root]# vi /etc/oratab
N:自動起動しない Y:自動起動する
(変更前)
schedule:/usr/oracle/product/9.2.0:N
^^^
↓
(変更後)
schedule:/usr/oracle/product/9.2.0:Y
^^^
- 自動起動・停止のスクリプトが設定できたか確認
現時点では、Oracleは起動しているので、スクリプトの動作確認のため、
まずは停止する。
[oracle@unit02 oracle]# dbshut
「Database "schedule" shut down」と表示されたら正常に停止できたので
再度起動をかける。(自動起動スクリプトの確認)
[oracle@unit02 oracle]# dbstart
「Database "schedule"warm started.」と表示されたら正常に起動できたので
再度停止する。(自動停止スクリプトの確認)
[oracle@unit02 oracle]# dbshut
「Database "schedule" shut down」と表示されたら正常に停止できたので
リスナーも停止する。
[oracle@unit02 oracle]# lsnrctl stop
「コマンドは正常に終了しました。」と表示されたら正常に停止できたので
OSを再起動し、自動起動がかかるか確認する。
開発Tips
|
|