Oracle Database 11g Release 1 for Linuxでデータベースを作成してみました。
最初にデータベースを作成するときは、netca(Oracle Net Configuration Assistant)にてリスナーを作成したあとに、dbca(Database Configuration Assistant)でデータベースを作成します。
netcaによるリスナーの作成
[oracle@ora11g ~]$ netca
Oracle Net Servicesの構成:
次のリスナーを構成中:LISTENER
リスナーの構成が完了しました。
Oracle Net Listenerの起動:
リスナーの制御の実行:
/u01/app/oracle/product/11.1.0/db_1/bin/lsnrctl start LISTENER
リスナーの制御が完了しました。
リスナーの起動に成功しました。
Oracle Net Servicesの構成に成功しました。終了コードは次のとおりです。0
リスナーの追加を選択
リスナー名の指定
リスナー名にはデフォルト値の「LISTENER」を指定します。
プロトコルの選択
通信プロトコルの設定は、わからないまま下手に増やすとセキュリティホールとなりかねないので、通常はデフォルト値のままで良いでしょう。セキュリティが絡んでくるとリスナーの設定だけではなくOSの設定なども含めて「とりあえず全部選択しておけばいいだろう。」という考え方は通用しませんからその傾向がある人は注意が必要です。
設定の完了
netcaは必ず[完了]ボタンのクリックで終了するようにしてください。
dbcaによるデータベースの作成
データベースの作成を選択
データベーステンプレートの作成
業務システムの構築に使うならば[カスタム・データベース]オプションを選択します。今回は簡単にすませるために[汎用またはトランザクション処理]オプションを選択しています。
データベース識別情報
データベースを作成する機器のhostnameが「ora11g.hoge.co.jp」、SIDを「orcl」としたい場合は、グローバル・データベース名に「orcl.ora11g.hoge.co.jp」を指定します。
管理オプション
別マシンのGrid Contorlで一括管理するか、それともEnterprise Managerのローカルサービス(dbconseole)をインストールして利用するかを指定します。業務システム構築時のお勧めは別ハード上にGrid Controlをインストールして一括管理する方法です。この方法であればハード費用が余計にかかりますが、データベースに異常が発生したときに管理ツール側まで不調になりエラー通知メールの送信などが阻害される可能性が低くなり運用する上で安心感が増します。
データベース資格証明
記憶域
リカバリ構成
[フラッシュ・バックリカバリ領域の指定]オプション、[アーカイブ有効化]オプション共にチェックする事をお勧めします。なお、[アーカイブ有効化]を行った場合は、Enterprise Managerでデータバックアップを定期的に行ってバックアップ済のアーカイブログファイルを自動削除する設定を忘れないようにしてください。今回は、ディスク領域の使用量削減のために[アーカイブ有効化]オプションはオフにしています。
データベース・コンテンツ
[サンプル・スキーマ]オプションは勉強用のデータベース以外ではチェックにしないでください。
初期化パラメータ
Oracle Database 10gからはSGAサイズとPGAサイズの2つを指定すればあとは自動的に最適な状態を保つように自動管理が働きましたが、Oracle Database 11gからは全体のメモリー量だけを指定すれば良くなりました。
データベースキャラクタセットをデフォルト値(Linuxの場合、JA16EUC)から変更したいときは[キャラクタ・セット]タブを選択してキャラクタセットを設定します。
セキュリティ設定
Oracle Database 11g Release 1ではDEFAULTプロファイルでも次のような制限がかかるようになっています。これにより適切なプロファイルを「面倒だから設定しない」ような場合でも最低限のセキュリティ設定が可能になっています。
CREATE PROFILE "DEFAULT" LIMIT CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
CONNECT_TIME UNLIMITED
IDLE_TIME UNLIMITED
SESSIONS_PER_USER UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
PRIVATE_SGA UNLIMITED
COMPOSITE_LIMIT UNLIMITED
PASSWORD_LIFE_TIME 180
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_LOCK_TIME 1
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_VERIFY_FUNCTION NULL
| PASSWORD_LIFE_TIME |
パスワードの有効期間は180日に設定 |
| PASSWORD_GRACE_TIME |
PASSWORD_LIFE_TIME経過後でも7日間猶予期間として現パスワードでログイン可能。その後はロックされて使用不可になります。 |
| FAILED_LOGIN_ATTEMPTS |
連続して10回ログインに失敗すると該当ユーザIDはロックされて使用不可になります。 |
| PASSWORD_LOCK_TIME |
FAILED_LOGIN_ATTEMPTSの指定回数連続ログイン失敗で該当ユーザIDは1日間ロックされて使用不可になります。 |
自動メンテナンス・タスク
Oracle Database 10g以降ではコストベースオプティマイザのみになっていますので定期的なアナライズが必要不可欠です。10gでも自動メンテナンスが行われていましたが、11gではデータベース作成時に自動メンテナンスを無効化できます(デフォルトは有効です)。
データベース記憶域
データベースの作成
自動起動の設定
Linux版やUNIX版のOracle Databaseは、RAC構成であればデータベースインスタンスの自動起動設定が行われるのですが非RAC構成では相変わらずインストール直後は自動起動設定になっていません。
なお、自動起動に関する詳細は「Oracle Database管理者リファレンス 11gリリース1(11.1) for Linux and UNIX-Based Operating Systems」に記述がありますので、時間をみつけて一読しておくと良いでしょう。
環境変数ORACLE_SIDの設定
.bash_profileファイルに次の行を追加します。
/etc/oratabの編集
/etc/oratabファイルにSIDごとの起動設定が記述されていますのでデフォルト値のNをYに変更します。
orcl:/u01/app/oracle/product/11.1.0/db_1:Y
dboraファイルの作成
rootユーザでログインしてから、/etc/init.d/dboraファイルを新規に作成して次の内容を記述します。
#! /bin/sh -x
#
# Change the value of ORACLE_HOME to specify the correct Oracle home
# directory for your installation.
ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
#
# Change the value of ORACLE to the login name of the
# oracle owner at your site.
#
ORACLE=oracle
PATH=${PATH}:$ORACLE_HOME/bin
HOST=`hostname`
PLATFORM=`uname`
export ORACLE_HOME PATH
#
case $1 in
'start')
su - $ORACLE -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE -c "$ORACLE_HOME/bin/emctl start dbconsole"
;;
'stop')
su - $ORACLE -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE -c "$ORACLE_HOME/bin/dbshut"
su - $ORACLE -c "$ORACLE_HOME/bin/emctl stop dbconsole"
;;
*)
echo "usage: $0 {start|stop}"
exit
;;
esac
#
exit
dboraファイルへの権限設定
[root@ora11g ~]# chgrp dba /etc/init.d/dbora
[root@ora11g ~]# chmod 750 /etc/init.d/dbora
起動スクリプトディレクトリへシンボリックリンクを作成
[root@ora11g ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
[root@ora11g ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
[root@ora11g ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora
すべての設定が正しく行われていれば、OS起動時に作成したデータベースインスタンスを自動起動します。
あとからscott/tigerを作成するには
ここまでの手順は、セキュリティ面を考慮してサンプルテーブルを作成しない手順で説明してきました。
しかし、今回作成したデータベースはVisual Basic 2008 (VB2008) からの利用方法の説明にも使いたいので、おなじみのscott/tigerのサンプルテーブルを作成しておきたいと思います。
scott/tigerのサンプルテーブルを作成するスクリプトはutlsampl.sqlですので、SQL*Plusを使って投入してみます。
[oracle@ora11g ~]# sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 - Production on 日 1月 13 23:38:27 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Oracle Database 11g Release 11.1.0.6.0 - Production
に接続されました。
SQL> @$ORACLE_HOME/rdbms/admin/utlsampl.sql