ysk_son’s diary

勉強の記録

Oracle VM VirtualBox を用いて Oracle Database 12c Release 1 環境を構築する

【目的】

1・Oracle VM VirtualBox を用いて Oracle Database 12c Release 1 環境を構築する

【環境】

ホストOS:Windows 7 Professional
ゲストOS:Oracle Linux Release 6 Update 4 for x86_64 (64 bit)

【参考資料】

■『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.jp

【現状】

目的1の「VirtualBoxOracle Database 12c Release1 環境の構築を構築する」を作業中。
構築ガイドの90Pまで進んでいる。
DBのインストールは完了したがリスナーの確認とPDB接続ができていない。

【今日やること】

1・リスナーにDBを正しく認識させる
2・PDBとCDBを正しく起動させる


---以下作業---

1・リスナーにDBを正しく認識させる

現状はマシン停止とともにDBも起動停止しており、リスナーがDBを正しく認識していない。

$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl status

とコマンドを打つと以下のような反応。

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 02-11月-2017 17:36:18

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
開始日 02-11月-2017 17:25:48
稼働時間 0 日 0 時間 10 分 29 秒
トレース・レベル 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)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。

これはDBが読み込まれていないらしいので、まずはDBを起動する。

$ /u01/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus system/***********@node3.oracle12c.jp:1521/cdb

すると以下の反応

SQL*Plus: Release 12.1.0.2.0 Production on 土 11月 4 11:47:44 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.

ERROR:
ORA-12514: TNS:
リスナーは接続記述子でリクエストされたサービスを現在認識していません

ORA-12514はリスナーがクライアントからの接続要求を受け付けた時に、接続先となるサービスを認識していない時に発生するエラーらしい。
なのでリスナーに登録されているサービスを以下にて確認。

$ lsnrctl services

結果は以下。

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 04-11月-2017 11:54:01

Copyright (c) 1991, 2014, Oracle. All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node3.oracle12c.jp)(PORT=1521)))に接続中
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。

リスナーはサービスをサポートしていない?
インスタンスの起動をしたいので以下コマンドを実行

$ sqlplus /nolong

結果は以下。

SQL*Plus: Release 12.1.0.2.0 Production on 土 11月 4 12:00:34 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.


SQL*Plus: Release 12.1.0.2.0 Production

Copyright (c) 1982, 2014, Oracle. All rights reserved.

SQL*Plusを使用してSQL、PL/SQLおよびSQL*Plus文を実行します。

使用方法1: sqlplus -H | -V

-H SQL*Plusのバージョンおよび
使用方法のヘルプを表示します。
-V SQL*Plusのバージョンを表示します。

使用方法2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ]

<option> is: [-C <version>] [-L] [-M "<options>"] [-NOLOGINTIME] [-R <level>]
[-S]

-C <version> 影響されるコマンドの互換性を、
<version>で指定されたバージョンに設定します。バージョンのフォームは
"x.y[.z]"です。たとえば、-C 10.2.0となります
-L エラー時に再プロンプト表示するかわりに、
1回のみログオンを試行します。
-M "<options>" 出力の自動HTMLマークアップを設定します。オプション
のフォームは次のとおりです:
HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text]
[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
-NOLOGINTIME 最終正常ログイン時間を表示しないでください。
-R <level> 制限モードを設定し、ファイルシステムと対話する
SQL*Plusコマンドを無効にします。レベルは
1、2または3にできます。最も限定的なのは-R 3であり、
ファイルシステムと対話するすべてのユーザー・コマンドを
無効にします。
-S コマンドのSQL*Plusバナー、プロンプトおよび
エコーの表示を抑制するサイレント・モードを
設定します。

<logon>は: {<username>[/<password>][@<connect_identifier>] | / }
[AS {SYSDBA | SYSOPER | SYSASM | SYSBACKUP | SYSDG | SYSKM}] [EDITION=value]

データベース接続用のデータベース・アカウント・ユーザー名、
パスワードおよび接続識別子を指定します。接続識別子がないと、
SQL*Plusはデフォルトのデータベースに接続します。

AS SYSDBA、AS SYSOPER、AS SYSASM、AS SYSBACKUP、AS SYSDG、
およびAS SYSKMオプションはデータベース管理権限です。

<connect_identifier>は、ネット・サービス名または
簡易接続の形式で指定できます。

@[<net_service_name> | [//]Host[:Port]/<service_name>]

<net_service_name>は、接続記述子に解決されるサービスの
単純名です。

例: ネット・サービス名を使用してデータベースに接続します。
データベースのネット・サービス名はORCLです。

sqlplus myusername/mypassword@ORCL

Hostには、データベース・サーバー・コンピュータのホスト名または
IPアドレスを指定します。

Portには、データベース・サーバーのリスニング・ポートを指定します。

<service_name>には、アクセスするデータベースのサービス名を
指定します。

例: 簡易接続を使用してデータベースに接続します。
サービス名はORCLです。

sqlplus myusername/mypassword@Host/ORCL

/NOLOGオプションでは、データベースに接続せずに
SQL*Plusを起動します。

EDITIONによりセッション・エディションの値が指定されます。


<start>は次のとおりです: @<URL>|<filename>[.<ext>] [<parameter> ...]

スクリプト内の置換変数に割り当てられる指定パラメータを使用して、
Webサーバー(URL)またはローカル・ファイルシステム(filename.ext)から、
指定のSQL*Plusスクリプトを実行します。

SQL*Plusの起動時でCONNECTコマンドの後に、サイト・プロファイル
($ORACLE_HOME/sqlplus/admin/glogin.sqlなど)およびユーザー・プロファイル
(作業ディレクトリ内のlogin.sqlなど)が実行されます。ファイルには
SQL*Plusコマンドが含まれる場合があります。

詳細は、SQL*Plusユーザーズ・ガイドおよびリファレンスを参照してください。


うーん。コマンドが違う?
ためしに以下を実行。

$ sqlplus


するとユーザー名とパスワードを求められる。
資料の83Pで指定したsys, systemでトライするも ora12162 エラー。
パスワード間違いは考えられないから、ユーザー名が正しくない?
レスポンスは以下。

SQL*Plus: Release 12.1.0.2.0 Production on 月 11月 6 09:12:48 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

ユーザー名を入力してください: system
パスワードを入力してください: 
ERROR:
ORA-12162: TNS: 指定されたNetサービス名は正しくありません。


ユーザー名を入力してください: sys   
パスワードを入力してください: 
ERROR:
ORA-12162: TNS: 指定されたNetサービス名は正しくありません。


ユーザー名を入力してください: *******
パスワードを入力してください: 
ERROR:
ORA-12162: TNS: 指定されたNetサービス名は正しくありません。


SP2-0157: 3回試行しましたがOracleに接続できませんでした。SQL*Plusを終了します。


まずはSQL*Plus でDBを起動しないとリスナーの接続も正しく完了できないので
ここについて調べる必要がありそう。
なにか根本的ななにかを見落としている気がするのだが、なんだろうか。