FC2ブログ
091234567891011121314151617181920212223242526272829303111

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【 --/--/-- (--) 】 スポンサー広告 | TB(-) | CM(-)

外部クライアントからOracle Expressへの接続設定

Oracleが起動できるのを確認した後は、外部クライアントからの接続設定。

Oracleは独自のネットワーク設定ファイル群があって、凝った事をやろうとしたら難儀した記憶が。
10年くらい前に仕事で10gをちょっとだけ触る機会があったんだけど、相当時間かけて設定したような記憶が。

まぁ自宅の実験環境でそんなに凝った設定は必要ないから、まぁそこまでは難儀しなかったが...


Oracle Express用のファイアーウォール設定



まず、iptables設定を変更して、外部ホストからOracleの入ったLinuxへの接続を許可する。
PostgreSQLのときに行った設定を参考にして、Oracle環境にも同様の対応を行う。Oracleとその管理ツールOracle Application Expressで使用するポートは、それぞれ1521と8080らしいので、それらを開放するよう設定する。


[root@localhost sysconfig]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[root@localhost sysconfig]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]


ここは難儀しなかった。(初めてやったPostgreSQLの時は難儀したけど。w)


Oracle Expressクライアント側のネットワーク設定



クライアントはtnsnames.oraファイルを参照し、接続時に指定されたシステムIDから接続先のIPアドレスを決定する。
tnsnames.oraファイルは環境変数TNS_ADMINでパスで指定したディレクトリに置いておくことで、Oracleのクライアントがファイルを見つけられるようになる。

ファイルの中身としては、DBMSをインストールしたLinux環境から、tnsnames.oraをそのままコピーし、接続先がlocalhostと書いてあるところをDBMSのIPアドレスへ変更。


C:\Users\HOGE>echo %TNS_ADMIN%
C:\Program Files (x86)\Oracle\product\network\admin

C:\Users\HOGE>type "c:\Program Files (x86)\Oracle\product\network\admin\tnsn
ames.ora"
[root@localhost admin]# cat tnsnames.ora
# tnsnames.ora Network Configuration File:

XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = laboracle)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)


Tnsnames.oraファイルを、あえてProgram Files (x86)下にディレクトリを作って置いたけど、たぶん普通はC:\Oracleの下にするんじゃないかな。

私はCドライブ直下にいろいろディレクトリを作りたくないので、こうしてるけど...


Oracle用クライアントのインストール



Oracle用のクライアントツール、接続用ドライバーのインストールもしてみる。

接続用ドライバーとしてODBC, JDBCを、接続用アプリとしてOracle SQL Developerを選択する。
いずれもOracle公式サイトからダウンロード可能。

ODBCドライバーが、Oracle 10用とOracle 9用しかない?11に全く問題なく接続できるだろうか。
JDBCドライバーが、JDK1.5用とJDK1.6用しかない。インストールされてるJDKはJDK1.7だったんだけど、大丈夫だろうか。

Oracle SQL DeveloperはJAVAで書かれてるので、JDKを入れてないマシンで使う場合にはそれもインストールしないといけない。
JAVAアプリという事もあり、インストールは簡単。インストールというより解凍してどこかに置けばOK。
実際簡単に起動させられた。

sqldev_start.png


Oracle Express と SQL Developer の間の接続確認



DBMSの動いてるマシンのファイアーウォール設定を終え、クライアントマシンのネットワーク設定ファイルを作成したところで、ネットワーク設定が完了。
実際にクライアントツールを起動し、接続確認してみる。

Oracle SQL Developerを起動し、Connectionsウィンドウにある緑色のプラス記号をクリックし、接続設定を行う。
Username, PasswordをOracleデータベースユーザーとパスワードに設定し、HostnameにDBMSを入れたマシンのIPアドレスか名前を指定。SIDはxe、Portは1521となっているので、最初からDBMSマシン上のlistener.oraに書いてある内容と同じなので変更する必要なし。

Connection Nameは後でわかれば何でもいいや。


接続確認のためTestボタンを押すと、接続が通った時は左下のStatus: のところにわかりにくくSuccessと書かれる。失敗するともっとわかりやすく赤字で表示されるけど。
Connectボタンを押すことで、接続が作成され、Connectionsウィンドウにデータベース上のオブジェクト一覧がツリー表示されるようになる。

sqldev_setupconn.png

sqldev_connected.png


 
スポンサーサイト
【 2014/02/13 (Thu) 】 データベース Oracle | TB(0) | CM(0)

Oracle Express 11gの接続確認

PostgreSQLのセットアップがひと段落ついたので、次はOracleに行ってみよう。
Teradataはセットアップ済みをダウンロードしたので、細かい所は気にせずに済みそうだ。

前回(かなり昔だ...)は、Oracle Express 11gのパッケージをインストールして、その後configureコマンドを実行したところまでだった。


他のセットアップした人の記事を参考にすると、もうこれでほぼ出来上がっているようなもので、あとはLinuxユーザープロファイルにOracle用環境変数定義スクリプトを組み込むだけでいいようだ。


気の利いたことに、あらかじめoracle_env.shという1ファイルにまとめてくれてる。内容的にどのユーザーにだけ公開するとか、限定する必要もなさそうだから、/etc/profileに入れることにしよう。



[root@localhost ~]# find / -name oracle_env.sh 2>/dev/null
/u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

[root@localhost ~]# cat /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export PATH=$ORACLE_HOME/bin:$PATH

[root@localhost ~]# . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

[root@localhost ~]# sqlplus


SQL*Plus: Release 11.2.0.2.0 Production on Sat Feb 8 10:56:12 2014

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

Enter user-name: system
Enter password:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> help

HELP
----

Accesses this command line help system. Enter HELP INDEX or ? INDEX
for a list of topics.

You can view SQL*Plus resources at
http://www.oracle.com/technology/tech/sql_plus/
and the Oracle Database Library at
http://www.oracle.com/technology/documentation/

HELP|? [topic]


SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production



できあがり。PostgreSQLの大変さに比べたら、Oracleはラクだ。
最初からシステム起動時に自動開始されてるようになってるし。


次は外部クライアントからの接続か。大昔に10gをちょろっと触ったときは面倒だったように思うが、変わったのかな?


 
【 2014/02/12 (Wed) 】 データベース Oracle | TB(0) | CM(0)

CentOS 6へ、Oracle Express 11gのインストール

PostgreSQL, Teradataとインストールした後に、ようやくOracle Express 11gのインストール。
ようやくトリに本命登場といったところか。


おおまかに言って、このような流れで作業した。VMwareの小さな環境でなければ不要な、他の人は必要のないステップも含まれてるけど。
  1. Oracle Expressインストーラーのダウンロード・解凍
  2. 仮想OSのスワップ拡張
  3. Oracle Express 11gのインストール
  4. 拡張したスワップを元に戻す



Oracle Expressインストーラーのダウンロード・解凍


Oracle社のダウンロードページから、Oracle Expressのダウンロードを選ぶ。
ダウンロードするにはアカウント登録が必要だけど、大昔(10gの時代)に作った事があるのでそのままそれを使用した。

ダウンロードしたファイルは、oracle-xe-11.2.0-1.0.x86_64.rpm.zip。
最近のrpmって、もとから圧縮済みのはず。ZIP形式で再度圧縮してる意味は何だろう?再圧縮しても効果はほとんどないはずだが。
実際確認したら、315MBのZIPファイルの中身は、317MBだった。


root@localhost tmp]# cd Disk1
[root@localhost Disk1]# ls -l
total 309892
-rw-rw-r--. 1 root root 317320273 Aug 28 2011 oracle-xe-11.2.0-1.0.x86_64.rpm
drwxr-xr-x. 2 root root 4096 Aug 28 2011 response
drwxrwxr-x. 2 root root 4096 Aug 28 2011 upgrade
[root@localhost Disk1]# ls -l ../*.zip
-rwx------. 1 root root 315891481 Jan 12 10:33 ../oracle-xe-11.2.0-1.0.x86_64.rpm.zip
[root@localhost Disk1]# ls -l ../*.zip
-rwx------. 1 root root 315891481 Jan 12 10:33 ../oracle-xe-11.2.0-1.0.x86_64.rpm.zip

2つほど追加で入ってるファイルを同梱する目的かな?


仮想OSのスワップ拡張


これは本来、きちんと事前にOracle社の用意してたセットアップマニュアルを読んでたら不要な作業なんだけどね。最初から仮想OSのスワップ領域を大きめに作ってたら、このステップは不要。w

この記事やOracleの公式インストールガイドを最初から参考にしてれば、事前に十分なスワップ領域を確保して仮想マシンを作ってたかもしれないが...
たかがインストール用になぜそこまで巨大なスプール領域が必要かというのも謎なので、インストールが済んだらスワップをもとに戻せてよかったのかもしれない。


ちなみに、容量が足りなくても、インストール途中でコケて困る状態になるのではなく、事前に必要なスワップ容量が用意されているか確認されて事前にエラー終了するので、まぁその辺は親切か。


[root@localhost Disk1]# rpm -ivh oracle-xe*.rpm
Preparing... ########################################### [100%]

This system does not meet the minimum requirements for swap space. Based on
the amount of physical memory available on the system, Oracle Database 11g
Express Edition requires 1976 MB of swap space. This system has 511 MB
of swap space. Configure more swap space on the system and retry the
installation.

error: %pre(oracle-xe-11.2.0-1.0.x86_64) scriptlet failed, exit status 1
error: install: %pre scriptlet failed (2), skipping oracle-xe-11.2.0-1.0



まず、ホストOSの側で、VMware Playerを起動し、Oracle実験用の仮想マシンに仮想ディスクを追加。
画面上で、対象仮想マシンを選び、「仮想マシン設定の編集(D)」を選ぶ。
vmware_disk_add_1.png


接続されている仮想ハードウェア一覧が表示されるので、「追加(A)」。
vmware_disk_add_3.png


「ハードディスク」の「SCSI(S)(推奨)」を選択。そして、「仮想ディスクの新規作成(V)」を選択。
vmware_disk_add_4.png vmware_disk_add_5.png

どうせデータベースのインストールが終わったらすぐ削除するので、以降は適当に。
容量は既存のものと合わせ2GB以上あればいいので、2GBを指定。複数ファイルにまたがった形で作成する設定のままにしておく。
vmware_disk_add_6.png


で、仮想ディスクのファイル名も、後でわかるような名前をつけておく。間違って大事なファイルを消したりしないように。
vmware_disk_add_7.png


デバイス名は、デフォルトの「SCSI 0:1」のままでOK。これは、Linuxからは/dev/sdb1として認識される。
vmware_disk_add_8.png



次に、仮想マシンを起動し、fdiskで追加したディスクにLinux Swapパーティションを作成し、mkswapでスワップ領域を作成し、swaponでマウントして使用可能にする。


[root@localhost tmp]# df -Ha
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 4.3G 1.6G 2.5G 40% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
tmpfs 519M 0 519M 0% /dev/shm
/dev/sda1 508M 36M 447M 8% /boot
none 0 0 0 - /proc/sys/fs/binfmt_misc
[root@localhost tmp]# fdisk -l /dev/sdb

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

[root@localhost tmp]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xe482f0cd.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261

Command (m for help): l

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe482f0cd

Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 83 Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe482f0cd

Device Boot Start End Blocks Id System
/dev/sdb1 1 261 2096451 82 Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost tmp]# vi /etc/fstab
[root@localhost tmp]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Jan 12 10:22:39 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=8252107d-37ba-498e-aeff-68b9cf1260a6 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sdb1 swap swap defaults 0 0
[root@localhost tmp]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524280 0 -1
[root@localhost tmp]# mkswap -c /dev/sdb1
Setting up swapspace version 1, size = 2096444 KiB
no label, UUID=6cf66863-9d53-40a0-a55d-130a39d4e2d6
[root@localhost tmp]# echo $?
0
[root@localhost tmp]# swapon -a
[root@localhost tmp]# echo $?
0
[root@localhost tmp]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524280 0 -1
/dev/sdb1 partition 2096440 0 -2


ログの引用がかなり長くなってしまった。


Oracle Express 11gのインストール


単純に解凍してできたrpmをインストールし、設定コマンドを実行するだけ。
rpmのインストール後、/etc/init.d/oracle-xe configure コマンドを実行しろと指示されるので、その通り実行。

かなりすんなり通って安心した。


[root@localhost Disk1]# rpm -ivh oracle-xe-11*.rpm
Preparing... ########################################### [100%]
1:oracle-xe ########################################### [100%]
Executing post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.

[root@localhost Disk1]# /etc/init.d/oracle-xe configure

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:y

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.



拡張したスワップを元に戻す


仮想OS上でswapoffコマンドを使用し、スワップパーティションを削除。
あと、/etc/fstabからも追加スワップパーティションの行を削除。


[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524280 0 -1
/dev/sdb1 partition 2096440 0 -2
[root@localhost ~]# swapoff -v /dev/sdb1
swapoff on /dev/sdb1
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524280 0 -1


最後に、ゲストOSのシャットダウン後、ホストOS上でVMWare Playerを使用し、追加した仮想ディスクを削除。


インストールされたファイルの容量を見ると、1.8GB増えてる。
さすが多機能データベース。大きな容量を使うな。
ちなみにスワップパーティションはExplorerで仮想ディスクの大きさを見る限り、実際には450MBくらいしか使ってないように見える。もとからあったスワップと合わせても最大1GBくらいか。
必要量が2GBっていうのは、「念のため」だった可能性も高いか?


それにしても、アプリケーションのインストールされたディレクトリが、/opt/oracleとかでなく、ルート直下なのは気になる。
何様のつもりだ。行儀悪いな。w
Win98以前の、みんなアプリが好き勝手ルートディレクトリ直下にディレクトリ作ってた時代を思い出した。


【 2014/01/24 (Fri) 】 データベース Oracle | TB(0) | CM(0)
プロフィール

Ed U Song

Author:Ed U Song
社内ノマドなエンジニア。
仕事で触れる機会のないものを自宅環境作って実験。

スポンサーリンク
最新コメント
最新トラックバック
検索フォーム


                                         
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。