豚吐露@wiki

最初のdatabase作り

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

最初のdatabase作り

Windows Server 2008R2
Oracle Database 11gR2

Oracle Database 11gR2 install手順はこちら。
初期databaseは作らない。

  • Net Configuration Assistant
『リスナー』『ネーミング・メソッド』『ローカル・ネット・サービス名』『ディレクトリ使用』の構成をを変更できる。
今回は、初期dbを作ってないのでリスナーも手動で作る必要がある。
※初期DB作るとココら辺も一緒に作られる。作ってたら飛ばしてok。




名前は無難にdefaultのLISTENER。




完了押して終了。

  • Database Configuration Assistant (DBCA)
databaseの新規作成、構成変更、削除ができる。
ちゃんと動けばスタートメニューにEnterpriseManagerのlinkも作成される。




リスナーが複数あると、ココら辺でどのリスナー使う?って選択肢が出てくる。
分からんかったら、とりあえず全部使うでもえぇんですけどね。そんな人は、複数リスナーなんか作らんと思うが...

full nameは、こんな風にドメインみたく書くと、頭の『.』までがSIDになるみたい。
このfull nameがリスナーのサービス名になるから、サービス名もSIDと同じにしてる人は、ココの設定も注意ね。



パスワード強度が足りないとこんなダイアログが出るけど、そのパスワードで良いなら仕方無いのでそのまま進みましょ。











ウィザードの処理中のlogは以下のpathにある。
C:\app\Oracle\cfgtoollogs\dbca\【SID】\emConfig.log

成功すると、このダイアログが表示される。

失敗すると、こっちのダイアログ。

とりあえず、経験した失敗となるパターンをφ(..*)メモメモ...
・リスナーにつながらない
  謎。PC名変更してリスナー作りなおしただけで、繋がるようになった...謎...
  hostsに名前解決書いてあげると、通るようになるって話もあるが、今回はやってない。
  あと、listener.oraに『localhost』や『127.0.0.1』とか書いても繋がらんとか言う話もあった。もちろん今回は対象外...(´・ω・`)


  • 表領域
もし表領域を作る必要があるなら、このタイミング。
ユーザ作る前に作成する。


  • Enterprise Manager (EM)
web baseのdatabase管理ツール。
今回必要なのは...ユーザかな?
ってことで、EM使ってユーザ作ろうと思う。(`・ω・´)

DBCAで正常に処理が終了してたら、メニューにEMの項目が増えてるはず。default値ならこんな感じが接続先。
https://172.0.0.1:1158/em/
https://172.0.0.1:1158/em/console/logon/logon


EMがちゃんと動いてるかは、以下のように確認できる。HOGEは、自分が設定したSIDに置き換えて試して貰えると良い。
> set ORACLE_SID=HOGE
> emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
https://172.17.10.39:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.

Logs are generated in directory C:\app\Oracle\product\11.2.0\dbhome_1/172.17.10.39_HOGE/sysman/log

外部から使いたい場合、portを開ければ繋がる。
一番最初のアクセスから表示までは、少し時間かかるのでまったりと待ちましょう。

EMは、TLS使ってんだけど、オレオレ証明書なので、ブラウザから危険だから止めときなって怒られる。


IEの場合だとセキュリティの設定を追加してやらんとダメ。
[ツール]-[インターネット オプション]を開く。

『セキュリティ』タブの『信頼済みサイト』をclickしてから『サイト』ボタンを押下。

『このWebサイトをゾーンに追加する』に『https://【IP Address】』が入ってる事を確認して『追加』ボタンを押下。

追加された。

EMを開いて、『このサイトの閲覧を続行する(推奨されません)。』を選べばちゃんと使えるハズ。
証明書は、ドコに登録しても警告消えんかった...(´・ω・`)


で、待ってると、こんな画面が表示されるハズ。

SYSDBAの権限持っとるユーザでlogin。
とりあえず、ユーザ名に『sys』、パスワードにDBCAで設定したpasswordを入力し、接続モードを『SYSDBA』にして『ログイン』押下。
『サーバ』タブの『セキュリティ』項目にある『ユーザー』を押下。

作成ボタンを押下。

『一般』タブへ、必要な情報を記載。

で、大事なのが『ロール』『システム権限』『オブジェクト権限』。
項目の事一個一個書いてったら終わらんので、ココでは割愛。作ろうとしてるユーザに必要な情報を取捨選択する。
セキュリティの事を考慮すれば、必要最低限の権限が望ましい。

とりあえず、作ってみようレベルやlocalの開発環境用とかなら...SYSTEMユーザ選んで『類似作成』してしまうと言う荒業も...w

ここまでできたら、コマンドプロンプトとか使って接続できるかを確認。
> sqlplus hoge/hoge9999@HOGE
.....できませんでした。(´・ω・`)


  • 接続失敗例①
sqlplusで接続しようとしたら、こんなんが出る。
ERROR: ORA-12154: TNS: 指定された接続識別子を解決できませんでした
で、調べ始めた。
> tnsping HOGE
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 15-10月-2015 16:00:48

Copyright (c) 1997, 2010, Oracle. All rights reserved.

パラメータ・ファイルを使用しました:
C:\app\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

TNS-03505: 名前の解決に失敗しました。
!!?Σ(゜Д゜)
C:\app\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
を見てみたら...接続設定無い...orz
DBCA使うと勝手に作ってくれたような記憶があるんじゃが...とりあえず、自力で作るしか無い。
のでこんな感じで追記してやった。(`・ω・´)
HOGE =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = HOGE_PC)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = HOGE)
   )
 )

  • 接続失敗例②
sqlplusで接続しようとしたら、こんなんが出る。
ERROR: ORA-12154: TNS: 指定された接続識別子を解決できませんでした
エラーメッセージ変わらんし...(´Д`)

> tnsping HOGE
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 15-10月-2015 16:08:17

Copyright (c) 1997, 2010, Oracle. All rights reserved.

パラメータ・ファイルを使用しました:
C:\app\Oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora


エイリアスを解決するためにTNSNAMESアダプタを使用しました。
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HOGE-PC)(PORT = 1521)) (CONNECT_DATA = >(SERVER = DEDICATED) (SERVICE_NAME = HOGE)))に接続の試行中
OK (0ミリ秒)
tnsping通るじゃん。(´Д`)

で、延々悩んだ結果...

> lsnrctl [[service]] LISTENER
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 15-10月-2015 16:12:44

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

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=HOGE-PC)(PORT=1521)))に接続中
サービスのサマリー...
サービス"CLRExtProc"には、1件のインスタンスがあります。
 インスタンス"CLRExtProc"、状態UNKNOWNには、このサービスに対する2件のハンドラがあります...
   ハンドラ:
     "DEDICATED" 確立:0 拒否:0
        LOCAL SERVER
     "DEDICATED" 確立:0 拒否:0
        LOCAL SERVER
サービス"HOGE.net"には、1件のインスタンスがあります。
 インスタンス"hoge"、状態READYには、このサービスに対する1件のハンドラがあります...
   ハンドラ:
     "DEDICATED" 確立:69 拒否:0 状態:ready
        LOCAL SERVER
サービス"HOGEXDB.net"には、1件のインスタンスがあります。
 インスタンス"hoge"、状態READYには、このサービスに対する1件のハンドラがあります...
   ハンドラ:
     "D000" 確立:0 拒否:0 現行:0 最大:1022 状態:ready
        DISPATCHER <machine: HOGE-PC, pid: 440>
        (ADDRESS=(PROTOCOL=tcp)(HOST=HOGE-PC)(PORT=49186))
コマンドは正常に終了しました。

原因分かった...↑のように、LISTENERに登録されてるサービス名が『HOGE.net』であるにも関わらず、
tnsnames.oraの『HOGE/DESCRIPTION/CONNECT_DATA/SERVICE_NAME』に書かれてるサービス名が『HOGE』。
Listenerに登録されてるサービス名と異なってたせいで怒られてたみたい。(´・ω・`)
やっぱ手動で作ると失敗するわ~。(´Д`;)

後、ついでに『C:\app\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora』の『LISTENER/DESCRIPTION_LIST/DESCRIPTION/ADDRESS/HOST』がIP addressで記載されてた。DHCPで取ってるので、PC名に変更しておいて、リスナーの再起動もしといた。
リスナーは、サービスの中にある『OracleOraDb11g_home1TNSListener』がそれ。
リスナー名を『LISTENER』以外にしてると、『OracleOraDb11g_home1TNSListener.【リスナー名】』みたいになるんじゃなかったかな?


と、言うわけで、改めてsqlplusで接続!
> sqlplus hoge/hoge9999@HOGE
SQL*Plus: Release 11.2.0.1.0 Production on 木 10月 15 16:25:56 2015

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

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
SQL>

やっと繋がった。(´Д`)


あとdefaultではOracle databaseの使うportはfirewallで塞がれてるので、databaseの入ったマシン以外からdatabaseの参照が必要な場合、設定の変更が必要。
外部からの接続を許可したい


ここまでやって、ようやく空のdatabaseが完成したって話です。
お疲れ様でした。(´Д`)



更新日: 2015年10月23日 (金) 19時02分57秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー