VirtualBox上にコンパクトにオラクルデータベース(19c)を構築
VirtualBoxに複数の仮想マシンを構築すると、自端末のパソコンのリソースを結構食います。
仮想マシンを作る目的が「動作確認」であり、データを沢山格納しない、重い処理を流さないのであれば、あまりリソース掛けたくないですよね。ということで手順に起こしてみました。
とはいえ、DBの物理設計ではなく、論理設計やSQLの動作確認を中心ということであれば、
以下を参考にVirtualBoxイメージから手軽にDBを作ることをお勧めします。
- OTN の VirtualBoxイメージ で Oracle DB 19c環境 を 楽々構築
※上記の方法は、物理設計を色々試したい場合には、勝手に名前が決まってたり、足りないライブラリがあったりと個人的には使いずらさを感じました。マルチテナント・アーキテクチャになっているのも、ローカル環境としてはちょっとリッチに感じました。ローカルはシンプルな構成が好き。
だけど、SQLの動作確認とかに使うのであれば、最高な気がします('ω')!!
構成
ホストOS | 仮想化ソフト | ゲストOS | DB | DB備考 |
---|---|---|---|---|
Windows10 Pro | VirtualBox6.1 | Oracle Linux 7.8 | Oracle Database 19c | 非CDB、Enterprise Edition |
Oracle Linuxをダウンロード
- ダウンロードページにアクセス、次のページでサイイン
- 「Oracle Linux」の文言で検索し、カートに追加、そしてチェックアウトを押下
- 64bitを選択し、コンティニューを押下、次のページでライセンスに同意
- 「V995537-01.iso」のみを選択し、ダウンロードボタンを押下、そうすると、ダウンロードマネージャー(exe)がダウンロードされるので実行する。その結果、「V995537-01.iso」がダウンロードされる。
Oracle Linuxを構築(仮想マシンの作成)
- VirtualBoxを立ち上げ後、新規ボタン押下、任意(例:dev)の名前を入力、タイプはLinux、バージョンはOracle(64bit)を選択
※マシンフォルダは任意でOK。環境設定でデフォルト設定できます。
- メモリ「2048MB」に設定。※構築後、節約の為、1024MBにする。※後で簡単に変えられるので、最近は4096MBを設定
- 「仮想ハードディスクを作成する」を選択
- 「VDI」を選択
- 「可変サイズ」を選択
- 「30G」を設定。※デフォルトの「12G」だと私の場合DB構築中にディスク不足になりました。※30Gだと割とかつかつなので、DBにデータを入れたい場合は、40Gぐらい合った方が良さげ。
- 作成した仮想マシンを選択しながら、設定ボタンを押下、その後、「高度」タブを選択し、「クリップボードの共有」と「ドラッグ&ドロップ」に「双方向」を設定
- プロセッサー数を「2」に。※構築後、節約の為、「1」にする。※後で簡単に変えられるので、最近は4を設定
- オラクルのページからダウンロードしたisoファイルを光学ドライバに追加
- アダプター2に「ホストオンリーアダプター」を選択。アダプター1はデフォルトの「NAT」でOK
- 「起動」ボタン押下、「起動ハードディスクの選択」ダイアログが出た場合(初回は出ないはず)は、キャンセルでOK。
- 赤い画面が出てきたら、矢印キーで「Install Oracle Linux 7.8」を選択後、「Enter」ボタンを押下
- 「日本語」を選択し、「続行」ボタン押下
-
ゲストOSとホストOSのマウスカーソルを切り替えるには、「Ctrl」(二つある方の右側)ボタンを押下
-
ボタンが見切れる場合は、ホストOSのディスプレイの設定を見直す。私の場合以下のように設定。
- 「ソフトウェアの選択」を押下し、以下の画像のように設定し、「完了」ボタンを押下
- 「インストール先」を押下し、デフォルトのまま、「完了」ボタンを押下
- 「KDUMP」を押下し、チェックを外し、KDUMPを無効にし、「完了」ボタンを押下
- 「ネットワークとホスト名」を押下し、二つのイーサネットを接続済みに、またホスト名を任意の名前にし、「完了」ボタンを押下
- インストール開始ボタンを押下、インストール中にrootのパスワードを設定
※パスワードが簡単すぎると、完了ボタンを2回押すことになります。
- 再起動
- ライセンス情報を押下し、同意にチェックし、「完了」ボタンを押下
- 「ネットワークとホスト名」を押下し、二つのイーサネットを接続済みし、「完了」ボタンを押下
- ユーザーの作成はいったん不要、設定完了を押下
- 日本語を選択し、次へ
- 「日本語」を選択し、次へ
- 位置情報はOFFにし、次へ
- タイムゾーンは、「東京、日本」で、次へ
- オンラインアカウントへの接続は行わず、スキップボタンを押下
- 任意のユーザー名を入力
- 任意のパスワードを設定
- ヘルプは、「×」ボタン押下で閉じる
- ログアウト
※パッケージをアップデートする為。
- 「アカウントが見つかりませんか?」をクリックし、rootでログイン
- 端末をクリック
- アップデート実行
yum -y update
- 完了したら、再起動(reboot)
- Guest Additionsをインストールする ※ctrlボタン押さなくても、マウスカーソルが自動的に切り替わる
- 完了したら、「enter」押下
- メディア取り出し ※ctrlボタン押さなくても、マウスカーソルが自動的に切り替わっているはず
-
これより先は、随時スナップショット(Vritual Boxの機能)を取っていくと、やり直しがきくので便利
-
ネットワークの再接続
- ネットワークの有線設定を自動接続へ
- ホストOSから、ポート22以外でも接続できるように、ファイヤーウォールを止める
# 停止
systemctl stop firewalld
# ステータス確認
systemctl status firewalld
# 自動起動停止
systemctl disable firewalld
# 設定確認
systemctl is-enabled firewalld
-
ホストOSからTeraTermでSSH接続 ※接続IPは、ifconfig等で確認すること
-
TeraTermは自動ログ設定しておくと証跡が残るので便利 ※設定後、「Save setup」するのを忘れないように
Oracle Databaseをダウンロード
- ダウンロードページにアクセスし、「Oracle Database 19c (19.3)」の「Linux x86-64」のzip(LINUX.X64_193000_db_home.zip)を取得 ※オラクルのIDが必要
事前作業
- oracle-database-preinstall-19cの実行 ※oracleユーザーとかを作ってくれたりする
# インストール
sudo yum -y install oracle-database-preinstall-19c
# 実行
export LANG=C
sudo oracle-database-preinstall-19c-verify
- oracleユーザーのパスワード設定
sudo passwd oracle
- ディレクトリ作成 ※「su root」後、実行
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
Oracle Databaseのインストール
- ダウンロードしたoracle databaseをtmp配下に配置
# 権限付けとく
chmod 777 LINUX.X64_193000_db_home.zip
- oracleユーザーに切替、zip解凍
su oracle
unzip -d /u01/app/oracle/product/19.3.0/dbhome_1/ LINUX.X64_193000_db_home.zip
-
ゲストOSにSSH接続ではなく、oracleユーザーで直接ログイン
-
インストーラー実行
cd /u01/app/oracle/product/19.3.0/dbhome_1/
./runInstaller
- 「ソフトウェアのみの設定」を選択し、次へ
- 「単一インスタンス・データベースのインストール」を選択し、次へ
- 「Enterprise Edition」を選択し、次へ
- そのまま、次へ
- そのまま、次へ
- そのまま、次へ
- 構成スクリプトの実行にチェックを入れ、認証情報を入力
- インストール
- 構成スクリプト実行
- インストール完了
データベース作成(dbca利用)※oracleユーザーで実行
- 環境変数を設定 ※データベース名は、「ora01」を設定
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:${PATH}
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG=JAPANESE_JAPAN.UTF8
export LANG=ja_JP.UTF-8
export ORACLE_SID=ora01
- 再起動しても環境変数が反映されるように「.bash_profile」に上記export文を書き込み
vi $HOME/.bash_profile
- hostsの設定 ※設定していないと、リスナーの設定でポートが空いているにも関わらず、以下のエラーが発生することになります。
vi /etc/hosts
# 一応reboot
reboot
# 設定例
# 192.168.XX.XXX dev01 dev01.XXX.XXX.XX
- dbca起動
$ORACLE_HOME/bin/dbca
- 「データベースの作成」を選択
- 「拡張性構成」を選択
- そのまま次へ
- グローバルデータベース名とSIDに「ora01」を指定。「コンテナデータベースとして作成」のチェック外して、次へ
- そのまま次へ
- そのまま次へ
- 「新規リスナーの作成」を選択し、任意のリスナー名&ポート名を指定し、次へ
- そのまま次へ
- そのまま次へ ※後でメモリの設定変更します
- そのまま次へ
- 「同じ管理パスワードを使用」を選択し、任意のパスワードを入力
- そのまま次へ
- 「終了」ボタン押下
- データベース作成完了!!閉じるボタン押下
- ゲストOSのsqlplusで接続
sqlplus / as sysdba
# linuxを再起動後であればDB起動する
# startup
# systemユーザーで接続
connect system/XXXX
# SQL実行
SELECT INSTANCE_NAME FROM V$INSTANCE;
- ホストOSのSQLクライアント(a5m2)から接続
# リスナーのステータス確認
# 動いてなければ、startさせる
lsnrctl status
- 節約の為、メモリの設定を変更
# 接続
sqlplus / as sysdba
# 現状確認
show parameter memory
show parameter sga
# メモリサイズ変更
alter system set memory_target = 0 scope = spfile;
alter system set memory_max_target = 0 scope = spfile;
alter system set sga_target = 512m scope = spfile;
alter system set pga_aggregate_target = 128m scope = spfile;
# DB再起動(設定反映)
shutdown immediate
startup
# 現状確認
show parameter memory
show parameter sga
# 今度はLinuxの設定を変更する為、DB停止
shutdown immediate
# sqlplusからexit後、リスナー停止
lsnrctl stop
# linux停止 ※su root後
shutdown now
- メモリを1024Mに変更
- プロセッサーを1に変更
-
Linux起動&DB起動&リスナー起動
-
DBに接続し、動作確認(SQL実行)し、問題なければデータベース構築完了。
EM Expressへの接続
- 以下のURLで接続 ※sysとかsystemユーザー使用で動作確認可能
https://[OracleサーバのIPアドレス]:5500/em/login
ユーザー作成 ※スキーマも同時に作成される
- 「ユーザーとスキーマ」は「人とカバン」という関係性
-- ユーザーが、デフォルトでどこの表領域を使用するか確認
select property_value from database_properties where property_name ='DEFAULT_PERMANENT_TABLESPACE';
-- ユーザー表領域に作られることを確認
-- ユーザー作成
create user test identified by test;
-- 作成されたか確認
-- 名前は大文字で管理される。
select username,default_tablespace,created from dba_users where username = 'TEST';
権限付与 ※ユーザー作成しただけじゃ、接続する権限さえない
-- DBA権限付与
grant DBA to test;
-- 権限確認
select * from dba_role_privs;
参考URL
VirtualBoxの仮想マシンにOracle Linuxをインストールする
https://dbalone.com/oracle-linux-install
Oracle Linux7.5にOracle 12cR2をインストールする
https://qiita.com/mkyz08/items/945cdf72597b0e044b14
Oracle DB 19cオンプレ版をインストールする
https://infrasenavi.com/gijutsuroku/2266
CentOS7 ファイアウォール停止方法
https://www.server-memo.net/centos-settings/centos7/firewalld-stop.html
Oracleのスキーマとユーザーの違いとは?
https://sql-oracle.com/?p=110