Oracle VM VirtualBox を用いて Oracle Database 12c Release 1 環境を構築する (3)
Oracle VM VirtualBox を用いて Oracle Database 12c Release 1 環境を構築する (1)はこちら。
Oracle VM VirtualBox を用いて Oracle Database 12c Release 1 環境を構築する (2)はこちら。
【目的】
1・Oracle VM VirtualBox を用いて Oracle Database 12c Release 1 環境を構築する
【参考資料】
■『SI on VirtualBox 構築ガイド /
Oracle VM VirtualBoxを用いたOracle Database 12c Release1 環境の構築』
http://www.oracle.com/technetwork/jp/database/enterprise-edition/documentation/sionvbox-db12101onol6u4-2080482-ja.pdf
■上記手順に加えてこちらのブログも参照。
taityo-diary.hatenablog.jptaityo-diary.hatenablog.jp
【現状】
目的1の「VirtualBox にOracle Database 12c Release1 環境の構築を構築する」を作業中。
構築ガイドの90Pまで進んでいる。
DBのインストールは完了したがリスナーの確認とPDB接続ができていない。
【今日やること】
1・リスナーにDBを正しく認識させる
2・PDBとCDBを正しく起動させる
---以下作業つづき---
前回の記事の終わりでDBの起動とリスナーの接続を完了できた。
今回は構築ガイド91PのCDB接続を行う。
1・準備
まず、前回の作業終了時にマシンをshutdownしており、一緒に
DBも停止してしまっているので、DBの起動を行う。
# これって自動化できそうだけど、環境変数に設定を追加すればよいのだろうか
$ sqlplus / as sysdba
SQL> STARTUP
続いてリスナーの起動と接続確認を行う。
# これも自動化できそうだけど、環境変数に設定を追加すればよいのだろうか
起動
$ lsnrctl start
接続確認
# リスナー起動から少し時間を置く必要あり。起動できていないとエラーが帰ってくる。
$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl status
以下レスポンスが返ってきたので無事準備は完了。
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 07-11月-2017 13:46:09 Copyright (c) 1991, 2014, Oracle. All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node3.oracle12c.jp)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別名 LISTENER バージョン TNSLSNR for Linux: Version 12.1.0.2.0 - Production 開始日 07-11月-2017 13:46:05 稼働時間 0 日 0 時間 0 分 4 秒 トレース・レベル off セキュリティ ON: Local OS Authentication SNMP OFF パラメータ・ファイル /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora ログ・ファイル /u01/app/oracle/diag/tnslsnr/node3/listener/alert/log.xml リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node3.oracle12c.jp)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) リスナーはサービスをサポートしていません。 コマンドは正常に終了しました。 [oracle@node3 ~]$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl status LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 07-11月-2017 13:47:03 Copyright (c) 1991, 2014, Oracle. All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node3.oracle12c.jp)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別名 LISTENER バージョン TNSLSNR for Linux: Version 12.1.0.2.0 - Production 開始日 07-11月-2017 13:46:05 稼働時間 0 日 0 時間 0 分 58 秒 トレース・レベル off セキュリティ ON: Local OS Authentication SNMP OFF パラメータ・ファイル /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora ログ・ファイル /u01/app/oracle/diag/tnslsnr/node3/listener/alert/log.xml リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node3.oracle12c.jp)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=node3.oracle12c.jp)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/cdb/xdb_wallet))(Presentation=HTTP)(Session=RAW)) サービスのサマリー... サービス"cdb"には、1件のインスタンスがあります。 インスタンス"cdb"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"cdbXDB"には、1件のインスタンスがあります。 インスタンス"cdb"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"pdb1"には、1件のインスタンスがあります。 インスタンス"cdb"、状態READYには、このサービスに対する1件のハンドラがあります... サービス"pdb2"には、1件のインスタンスがあります。 インスタンス"cdb"、状態READYには、このサービスに対する1件のハンドラがあります... コマンドは正常に終了しました。
2・cdb接続(ここから91Pの作業)
まずsystemユーザでcdbへの接続を行う。
$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus system/*************@node3.oracle12c.jp:1521/cdb
この時点で正しくDB起動とリスナー接続ができていないと以下エラーが出るので注意が必要。
以下のエラーが出た場合は上にある手順で解消できるはず。
SQL*Plus: Release 12.1.0.2.0 Production on 火 11月 7 13:45:25 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. ERROR: ORA-12541: TNS: リスナーがありません ユーザー名を入力してください: パスワードを入力してください: ERROR: ORA-01005: パスワードにNULLが入力されました。ログオンは拒否されました。 ユーザー名を入力してください: ERROR: ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。 SP2-0157: 3回試行しましたがOracleに接続できませんでした。SQL*Plusを終了します。
正しいレスポンスは以下。
SQLが起動される。
SQL*Plus: Release 12.1.0.2.0 Production on 火 11月 7 13:54:25 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options に接続されました。 SQL>
SQL> show pdbs
レスポンスは以下。
SP2-0382: SHOW PDBSコマンドは使用できません。
なんろう。エラーがでた。
…
…
調べるとSYSDBA権限がないと失敗するらしい。
以下を実行してみる。
SQL> connect system as sysdba
パスワードを入力すると正しく接続ができた。
レスポンスは以下。
パスワードを入力してください: 接続されました。 SQL>
もう一度show pdbsを実行すると以下のように期待したレスポンスが返ってきた。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED 4 PDB2 MOUNTED SQL>
これでCDB、PDBへの接続の確認は完了した。
ガイドではPDB1とPDB2のOPEN MODEがREAD WRITEとなっているが
私の環境ではOPEN MODEがMOUNTEDとなっている。
この違いはなんだろうか。。
参考にしたこちらのブログでは私と同様の状態の画面コピーが張ってあるので、
とりあえずこれで良しとして先に進んでみる。
3・Oracle Enterprise Manager Database Expressへの接続
ガイドに沿ってホストOSのIEから以下のEM ExpressのURLにアクセスする。
https://192.168.56.101:5500/em
すると以下のタイムアウトのエラー。
これは私のPC環境が遅いのか?
このサイトにアクセスできません 192.168.56.101 からの応答時間が長すぎます。 次をお試しください: 接続を確認する プロキシとファイアウォールを確認する Windows ネットワーク診断ツールを実行する ERR_CONNECTION_TIMED_OUT
EMは今は必要としていない(DBの構築とDG構築が目的)ので、次に進むことにする。
4・Appendix 1. CDBとPDBの基本操作(ここから93Pの作業)
DBとリスナーが起動した状態で以下のSQLを実行して、ステータスがOPENであることを確認する。
SQL> SELECT STATUS FROM V$INSTANCE; STATUS ------------------------------------ OPEN
続いて以下コマンドでPDBを新規作成する。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED 4 PDB2 MOUNTED SQL> CREATE PLUGGABLE DATABASE pdb3 ADMIN USER admin IDENTIFIED BY Shio2534 2 SQL> CREATE PLUGGABLE DATABASE pdb3 ADMIN USER admin IDENTIFIED BY Shio2534; プラガブル・データベースが作成されました。 SQL>
一度セミコロン(;)を付け忘れてへんなレスポンスがあったものの、
無事PDBの新規作成ができた。
「プラガブル・データベースが作成されました。」のレスポンスが帰ってくるまで
1分近く待った気がするので、待っている間は変にいじらないほうがいいかも。
次に作成したPDB3をOPENする。
まずは現状のOPEN MODEを確認する。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED 4 PDB2 MOUNTED 5 PDB3 MOUNTED SQL>
PDB3はMOUTEDになっている。
これを以下SQLでOPENする。
SQL> ALTER PLUGGABLE DATABASE pdb3 OPEN; プラガブル・データベースが変更されました。 SQL>
もう一度show pdbsを実行するとpdb3がopenされていることがわかる。
# pdb1,pdb2も同様のやり方でopenできる
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED 4 PDB2 MOUNTED 5 PDB3 READ WRITE NO SQL>
続いてルート(CDB$ROOT)からPDBへ接続を切り替える。
まず現状のCONTAINER NAMEを確認する
SQL> show con_name CON_NAME ------------------------------ CDB$ROOT
CDB$ROOTに接続していることが確認できたので、以下SQLを実行してpdb3に接続を切り替える。
SQL> ALTER SESSION SET CONTAINER = pdb3; セッションが変更されました。
再度show con_nameを実行して以下のように接続先がpdb3に変わっていればOK。
SQL> show con_name CON_NAME ------------------------------ PDB3
最後にPDB用のサービスを作成する。
以下を全て実行する。
# どういう命令なのか不明なコマンドもあるが、現時点では構築ガイドのとおりに進める
SQL> SELECT NAME, NETWORK_NAME, PDB, CON_ID FROM V$SERVICES; NAME -------------------------------------------------------------------------------- NETWORK_NAME -------------------------------------------------------------------------------- PDB -------------------------------------------------------------------------------- CON_ID ---------- pdb3 pdb3 PDB3 5
SQL> exec DBMS_SERVICE.CREATE_SERVICE('srvl','srvl'); PL/SQLプロシージャが正常に完了しました。
SQL> exec DBMS_SERVICE.START_SERVICE('srvl'); PL/SQLプロシージャが正常に完了しました。
SQL> SELECT NAME, NETWORK_NAME, PDB, CON_ID FROM V$SERVICES; NAME -------------------------------------------------------------------------------- NETWORK_NAME -------------------------------------------------------------------------------- PDB -------------------------------------------------------------------------------- CON_ID ---------- srvl srvl PDB3 5 NAME -------------------------------------------------------------------------------- NETWORK_NAME -------------------------------------------------------------------------------- PDB -------------------------------------------------------------------------------- CON_ID ---------- pdb3 pdb3 PDB3 5
以上で96PのPDB「用のサービスを作成」は完了した。
最後に接続を確認する。
SQL> connect system/************@node3.oracle12c.jp:1521/srvl
上記コマンドに対して
接続されました。
とレスポンスが返ってくればOK。
userとcon_nameも確認する。
SQL> show user ユーザーは"SYSTEM"です。 SQL> show con_name CON_NAME ------------------------------ PDB3
構築ガイドにあるとおりSYSTEM,PDB3と返ってきたのでOK。
これでVirtualBox にOracle Database 12c Release1 環境の構築ができた。
今後はData Guardの構築に入る。