ysk_son’s diary

勉強の記録

Oracle Database 12c Release 1 でData Guardを学ぶ - フィジカル・スタンバイ・データベースの作成(2)

【目的】

Oracle Database 12c Release 1 でData Guardを実装する。

【環境】

ホストOS:MacBook Air OS X EI Capitan / 1.6GHz Intel Core i5 / 4GB /
ゲストOS:Oracle Linux Release 6 Update 4 for x86_64 (64 bit)

# 今回の勉強用途でMacBook Air買ったのだかすでに容量パンパン。。

【参考資料】

Data Guardに関する社内ハンズオンの資料とかWeb上の資料とか。

【現状】

このエントリに書いたとおり、VirtualBox上にOracle DB 12cR2を構築した経験はある。
逆にそれ以外の経験はなし。

【今日やること】

フィジカル・スタンバイ・データベースの作成。

---以下作業---


前回のエントリでData Guard用初期化パラメータの設定まで完了しているので、
今回はアーカイブログ・モードの設定から作業を行う。

まずMOUNTモードで起動。

[oracle@node1 ~]$ srvctl stop database -db orcl -stopoption immediate
PRCC-1016 : orclはすでに停止しています

ん??

[oracle@node1 ~]$ srvctl start database -db orcl -startoption mount
PRCR-1079 : リソースora.orcl.dbの起動に失敗しました
CRS-5017: リソース・アクション"ora.orcl.db start"に次のエラーが発生しました: 
ORA-16024: parameter LOG_ARCHIVE_DEST_1 cannot be parsed
。詳細は"(:CLSN00107:)"("/u01/app/grid/diag/crs/node1/crs/trace/ohasd_oraagent_grid.trc")を参照してください。

CRS-2674: 'ora.orcl.db'('node1')の起動に失敗しました

エラー。
ORA-16024は以下が原因とのこと。

ORA-16024: パラメータstringを解析できません。
原因: 指定されたLOG_ARCHIVE_DEST_n(n = 1から31)パラメータの値を解析できませんでした。このエラーの一般的な原因は、等号の位置が誤っているか、属性が認識できないか、または属性に要求されている値がないことです。

前回のエントリの中でLOG_ARCHIVE_DEST_n やった記憶があるので見返してみたが、
特に問題なく見える。

試しにもう一度SQLでパラメータ設定をしてみる。

[oracle@node1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on 水 11月 29 22:30:41 2017

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

アイドル・インスタンスに接続しました。

SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcls)' scope=spfile;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcls)' scope=spfile
*
行1でエラーが発生しました。:
ORA-01034: ORACLE not available
プロセスID: 0
セッションID: 0、シリアル番号: 0

ORA-01034。
環境起因のエラーらしい。
原因は複数考えられるそう。困った。

・接続先インスタンスが起動していない状態で、ローカル接続を実行した
環境変数ORACLE_SIDに誤った値を設定して、ローカル接続を実行した
の2つがよくある原因らしいので、インスタンスが正しく起動されているか確認する。

[oracle@node1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on 水 11月 29 22:44:01 2017

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

アイドル・インスタンスに接続しました。

SQL> startup open
ORA-16024: parameter LOG_ARCHIVE_DEST_1 cannot be parsed


またORA-16024きた。
パラメータ設定が正しくない→インスタンス起動したい→パラメータ設定が正しくない…
んん。。

おそらくORA-01034を解決する必要があるのだろう。

調査せねば。。

Oracle Database 12c Release 1 でData Guardを学ぶ - フィジカル・スタンバイ・データベースの作成(1)

【目的】

Oracle Database 12c Release 1 でData Guardを実装する。

【環境】

ホストOS:MacBook Air OS X EI Capitan / 1.6GHz Intel Core i5 / 4GB /
ゲストOS:Oracle Linux Release 6 Update 4 for x86_64 (64 bit)

# 今回の勉強用途でMacBook Air買ったのだかすでに容量パンパン。。

【参考資料】

Data Guardに関する社内ハンズオンの資料とかWeb上の資料とか。

【現状】

このエントリに書いたとおり、VirtualBox上にOracle DB 12cR2を構築した経験はある。
逆にそれ以外の経験はなし。

【今日やること】

フィジカル・スタンバイ・データベースの作成。

---以下作業---
そもそもフィジカル・スタンバイ・データベースとは?
フィジカル・スタンバイ・データベースはプライマリ・データベースを正確に、ブロックごとにコピーしたものです。フィジカル・スタンバイはREDO Applyと呼ばれるプロセスによって正確なコピーとして維持されます。このプロセスではデータベース・リカバリ・メカニズムを使用して、プライマリ・データベースから受信したREDOデータを継続的にフィジカル・スタンバイ・データベースに適用します。

フィジカル・スタンバイ・データベースは、読取り専用アクセス用にオープンし、問合せをプライマリ・データベースからオフロードするために使用できます。 Oracle Active Data Guardオプションのライセンスを購入している場合は、フィジカル・スタンバイ・データベースを開いている間はRedo Applyをアクティブにすることができます。それにより、問合せによって、プライマリ・データベースからのものと同じ結果が得られます。この機能は、リアルタイム問合せ機能と呼ばれます。

出典:[https://docs.oracle.com/cd/E16338_01/server.112/b56302/standby.htm:title=Oracle® Data Guard概要および管理]


日常でのセールストークはこんな具合と想像。
・本番DBのREDOデータを継続的にDRサイトのDBに適用することで高可用性を確保できます。
・ストレージバックアップとは違いデータの破損およびユーザーエラーからも保護されます。
 # 本番DBでのストレージレベルの物理的な破損がDRサイトのDBに伝播することはありません(これ大事)

ということでフィジカル・スタンバイ・データベースの作成を始める。
まずはプライマリ・データベース設定の確認から。

[oracle@node1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on 水 11月 29 17:35:27 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> show parameters db_name

NAME				     TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_name 			     string
orcl

SQL> show parameter db_unique_name

NAME				     TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_unique_name			     string
orcl

SQL> show parameters db_block size

NAME				     TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_block_buffers		     integer
0
db_block_checking		     string
FALSE
db_block_checksum		     string
TYPICAL
db_block_size			     integer
8192

SQL> show parameters audit_file_dest         

NAME				     TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
audit_file_dest 		     string
/u01/app/oracle/admin/orcl/adu
mp

SQL> show parameters remote_login_passwordfile        

NAME				     TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
remote_login_passwordfile	     string
EXCLUSIVE

SQL> show parameters listener

NAME				     TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
listener_networks		     string

local_listener			     string
LISTENER_ORCL
remote_listener 		     string

SQL> show parameters DB_RECOVERY_FILE_DEST

NAME				     TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_recovery_file_dest		     string
+FRA
db_recovery_file_dest_size	     big integer
4800M

ここまでが設定の確認。
赤字で記載した部分が特にチェックすべき項目。


次にData Guard用初期化パラメータの設定を行う。

# DG_CONFIGにはData Guard構成に含まれるすべてのデータベースのDB_UNIQUE_NAMEを設定
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcls)'scope=spfile;

システムが変更されました。

# ローカル・ノードへのアーカイブREDOログ格納
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
  2  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=orcl'Scope=spfile;

システムが変更されました。

# リモート・ノードへのREDOログ転送
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=node2 ASYNC
  2  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=orcls'scope=spfile;

システムが変更されました。


上記アーカイブログの保存先の指定とREDOログの有効化を行った。
ASYNC属性を指定することでプライマリでのREDOの生成とスタンバイへの転送が非同期に行われる。
その他の細かい説明は省略してData Guard用初期化パラメータの設定を続ける。

SQL> alter system set LOG_ARCHIVE_DEST_STATE_1='ENABLE' scope=spfile;

システムが変更されました。


SQL> alter system set LOG_ARCHIVE_DEST_STATE_2='ENABLE' scope=spfile;

システムが変更されました。

上記手順ではLOG_ARCHIVE_DEST_1及びLOG_ARCHIVE_DEST_2を
アーカイブ操作の宛先として使用するか否かを設定した。
今回は両方使用するため「ENABLE」に設定。

次。

SQL> alter system set FAL_SERVER='node2' scope=spfile;

システムが変更されました。

SQL> alter system set STANDBY_FILE_MANAGEMENT='AUTO' scope=spfile;

システムが変更されました。


FAL_SERVER='node2' について手元の資料は以下のように記載がある。

「FAL_SERVERには、スタンバイ・データベースのFAL(Fetch Archive Log)サーバーを指定する」

FALとは何か?については後で復習するとしてとりあえず作業を進める。

また、STANDBY_FILE_MANAGEMENT='AUTO' ではデータファイルがプライマリ・データベースに
追加または削除された場合に、
それに対応してスタンバイ・データベースも自動的に変更されるよう、

AUTOに設定をした。
※このパラメータは、フィジカル・スタンバイ・データベースに対してのみ適用される


ここまででData Guard用初期化パラメータの設定は完了。
だいぶ長くなったので本エントリはここまで。

Oracle Database 12c Release 1 でData Guardを学ぶ - 環境の構築(2)

【目的】

Oracle Database 12c Release 1 でData Guardを実装する。

【環境】

ホストOS:MacBook Air OS X EI Capitan / 1.6GHz Intel Core i5 / 4GB /
ゲストOS:Oracle Linux Release 6 Update 4 for x86_64 (64 bit)

# 今回の勉強用途でMacBook Air買ったのだかすでに容量パンパン。。

【参考資料】

Data Guardに関する社内ハンズオンの資料とかWeb上の資料とか。

【現状】

このエントリに書いたとおり、VirtualBox上にOracle DB 12cR2を構築した経験はある。
逆にそれ以外の経験はなし。

【今日やること】

まずは環境設定を行う。
(新規マシンを立ち上げてLinuxを入れたり)

---以下作業---
■環境の準備
# 前回のエントリ仮想マシンの立ち上げまでは完了しているので、今回は環境の確認


以下について確認。

■各仮想マシンごとの時刻が離れすぎていないか

■node1(プライマリDB)
192.168.56.101
Oracle Enterprise Linux 6.4
Oracle Database 12c Release 1
12.1.0.2
Oracle Restart構成済み
データベース作成済み
ORACLE_SID=orcl

■node2(スタンバイDB)
192.168.56.102
Oracle Enterprise Linux 6.4
Oracle Database 12c Release 1
12.1.0.2
Oracle Restart構成済み
データベース未作成

ORACLE_SID=orcls で作成

■各仮想マシンには以下ユーザーを作成済み
root
grid
oracle

Oracle Restart構成(gridユーザー)はともに以下
ORACLE_BASE : /u01/app/grid
ORACLE_HOME : /u01/app/grid/product/12.1.0/grid
ASMインスタンスORACLE_SID : +ASM

■node1のOracle Database構成(oracleユーザー)は以下
ORACLE_BASE : /u01/app/oracle
ORACLE_HOME : /u01/app/oracle/product/12.1.0/dbhome_1
高速リカバリ領域 : +FRA
アーカイブログファイル : 高速リカバリ領域に出力
データベースファイル群 : +DATA
DBユーザーのパスワード : *********

■node2のOracle Database構成(oracleユーザー)は以下
ORACLE_BASE : /u01/app/oracle
ORACLE_HOME : /u01/app/oracle/product/12.1.0/dbhome_1

■node1のデータベース構成は以下
IP Address : 192.168.56.101
Software : Oracle Database 12c Release 1
 12.1.0.2
Oracle Restart : 構成済み
DB_NAME=orcl
データベース作成済み(CDB構成、1つのPDB)

DB_UNIQUE_NAME=orcl
ORACLE_SID=orcl
ノーアーカイブログ・モード

フラッシュバック・データベース未設定

■node2のデータベース構成は以下
IP Address : 192.168.56.102
Software : Oracle Database 12c Release 1
 12.1.0.2
Oracle Restart : 構成済み
DB_NAME=orcl
データベース未作成

DB_UNIQUE_NAME=orcls
ORACLE_SID=orcls で作成

Oracle Database 12c Release 1 でData Guardを学ぶ - 環境の構築(1)

【目的】

Oracle Database 12c Release 1 でData Guardを実装する。

【環境】

ホストOS:MacBook Air OS X EI Capitan / 1.6GHz Intel Core i5 / 4GB /
ゲストOS:Oracle Linux Release 6 Update 4 for x86_64 (64 bit)

# 今回の勉強用途でMacBook Air買ったのだかすでに容量パンパン。。

【参考資料】

Data Guardに関する社内ハンズオンの資料とかWeb上の資料とか。

【現状】

このエントリに書いたとおり、VirtualBox上にOracle DB 12cR2を構築した経験はある。
逆にそれ以外の経験はなし。

【今日やること】

まずは環境設定を行う。
(新規マシンを立ち上げてLinuxを入れたり)

---以下作業---
■環境の準備
# 仮想マシンの構築については社内ハンズオンの際に配布されたイメージファイルを使う

まずWindows上にVirtualBoxイメージの配置ディレクトリの作成する。

次の2つのフォルダを作成する。

C:\VBox\handson
C:\VBox\image

C:\VBox\handsonに本ハンズオン・キットのdgディレクトリを配置する。

C:\VBox\handson\dg

そして社内ハンズオンで使用したVirtualBoxイメージをC:\VBoxに配置、展開。
これらファイルをVirtualBoxマネージャからファイル選択して立ち上げる。

マシンが立ち上がったらIPアドレスとOSユーザー名を定義するのだが。

マシンが立ち上がらない。
f:id:ysk_son:20171129010422p:plain

ホストオンリーアダプターの設定が不正と言っている?
しかしVirtualBoxの設定はホストオンリーアダプターとなっている。
なんだろか。。

どうやらホストOSとゲストOSの間の通信の設定ができていなかったようだ。
↓がVirtualBoxの画面。ホストオンリーアダプターとなっている。
f:id:ysk_son:20171129115856p:plain

しかしVirtualBoxの環境設定(仮想マシンの環境設定ではなく)からネットワークを
確認すると↓のようになっており、ネットワークの定義がされていないことがわかる。
f:id:ysk_son:20171129115859p:plain

なのでまずはホストオンリーアダプターのネットワークを定義する。

まずプライマリDBとなるマシンの設定を以下の通り行った。
f:id:ysk_son:20171129121919p:plain
f:id:ysk_son:20171129121929p:plain

次にスタンバイDBとなるマシンの設定が以下。
# IPv4アドレス以外は全て同じ値を入力したのだが、正しいのだろうか。。
f:id:ysk_son:20171129122156p:plain
f:id:ysk_son:20171129122228p:plain

これでホストオンリーアダプターの設定が完了したつもりなので、
再度仮想マシンを起動してみる。

無事マシンの起動ができた。
これで環境の構築(イメージファイルの読み込み)はできたと思われるので、
次回以降は環境を理解した上でDG構築に進む。

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 環境を構築する

【環境】

ホスト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.jptaityo-diary.hatenablog.jp

【現状】

目的1の「VirtualBoxOracle 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> 


続いてSQLpdbの状態を確認。

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。


これでVirtualBoxOracle Database 12c Release1 環境の構築ができた。
今後はData Guardの構築に入る。

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

前回作業はこちら

【目的】

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.jptaityo-diary.hatenablog.jp

【現状】

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

【今日やること】

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

---以下作業つづき---


前回の記事の終わりに

SQL*Plusの起動をしてDBを立ち上げる必要がある

ORACLE_SIDという環境変数を設定が正しく行われていない可能性がある

という2点の課題が見つかったので、今回はこの点について対応を行う。


まず、コマンドを実行して、export ORACLE_SID=cdb を追記。
# この作業が正しいかどうかは不明

$ vi /home/oracle/.bash_profile


続いてリスナーを立ち上げる

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

現時点では以下のようにサービスをサポートしていないアナウンス。
# おそらくDBの起動が必要

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 06-11月-2017 10:08:53

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

TNS-01106: リスナー名LISTENERを使用するリスナーは、すでに起動されています。
[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 06-11月-2017 10:09:00

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
開始日                    06-11月-2017 10:08:40
稼働時間                  0 日 0 時間 0 分 19 秒
トレース・レベル          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の起動を行うために以下コマンドでSQLモードへ切り替える。

$ sqlplus / as sysdba


SQLにてインスタンスの起動(DBの起動)を行う。

SQL> STARTUP

以下のようなレスポンスが返ってきた。
これでDBが立ち上がったはず。

SQL*Plus: Release 12.1.0.2.0 Production on 月 11月 6 10:16:25 2017

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

アイドル・インスタンスに接続しました。

SQL> ^C^Ca       

SQL> STARTUP
ORACLEインスタンスが起動しました。

Total System Global Area 1644167168 bytes
Fixed Size		    2925024 bytes
Variable Size		 1056968224 bytes
Database Buffers	  570425344 bytes
Redo Buffers		   13848576 bytes
データベースがマウントされました。
データベースがオープンされました。

exit してもう一度リスナーの確認を行う。

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


すると以下のようなレスポンスが返ってきた。

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 06-11月-2017 11:11:24

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
開始日                    06-11月-2017 10:08:40
稼働時間                  0 日 1 時間 2 分 43 秒
トレース・レベル          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件のハンドラがあります...
コマンドは正常に終了しました。


これで無事DBの起動とリスナーとの接続が確認取れた。

ここまでで90Pまでの作業が完了した。
続いては91P以降の作業(ODB,CDB)に移る。

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を起動しないとリスナーの接続も正しく完了できないので
ここについて調べる必要がありそう。
なにか根本的ななにかを見落としている気がするのだが、なんだろうか。