2026年3月10日 (火)

x86/64 VMs on VirtualBox for macOS - Apple Silicon / Oracle Database , PostgreSQL, MySQL rebooted! :)

さてさて、半年振りぐらいの、VirtualBox for macOS / Apple Silicon ネタです。
前々回のVirtualBoxエントリーで、VirtualBox 7.2でもフラグを立てれば x86/64 VMsを起動できるところまでは確認できました。ただし、Oracle Databaseは起動できませんでしたよね。

20260310-192000

しばらく、忙しくて忘れてたので、久々に試してみたら、なんと!!!!!!! 起動するじゃあーーーーーーーーーりませんか。;)
これで、x86/64版の古いOracle Databaseとの比較ネタなんてのみできちゃうので、遅くても嬉しい。VirtualBox Teamのみなさん、ありがとう!


では、その記録です。

ホスト環境

oracle@Mac-Studio ~ % ./print_env.sh 

*** mac info. ***
ProductName: macOS
ProductVersion: 26.3.1
BuildVersion: 25D2128

*** maxOS ver. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 Performance and 4 Efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.2.7r173034

oracle@Mac-Studio ~ % VBoxManage getextradata global "VBoxInternal2/EnableX86OnArm"
Value: 1


起動していいるVirtualBox VMsとArchitectureの確認

oracle@Mac-Studio ~ % VBoxManage list --long runningvms | grep -E 'Platform Architecture|Name'
Name: Oracle Linux 8 21c and postgresql13
Platform Architecture: x86
Name: Oracle Linux 8 mysql8 postgrsql13
Platform Architecture: x86

PostgreSQL 16.3

X86_64です!、起動してます!!!

[master@localhost ~]$ uname -rm
5.4.17-2136.304.4.1.el8uek.x86_64 x86_64

...略...

[master@localhost ~]$ sudo service postgresql-16 status
[sudo] master のパスワード:
Redirecting to /bin/systemctl status postgresql-16.service
● postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2026-03-09 20:32:25 EDT; 2min 47s ago

...略...

Main PID: 1363 (postgres)
Tasks: 7 (limit: 22947)
Memory: 35.8M

...略...

[postgres@localhost ~]$ psql -d perftestdb -U discus -p 5432 -W -h localhost

...略...

perftestdb=> select version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 16.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-22), 64-bit
(1 行)

[master@localhost ~]$ sudo service postgresql-16 stop
Redirecting to /bin/systemctl stop postgresql-16.service
[master@localhost ~]$ sudo service postgresql-16 status
Redirecting to /bin/systemctl status postgresql-16.service
● postgresql-16.service - PostgreSQL 16 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Mon 2026-03-09 20:35:51 EDT; 3s ago

...略...

Main PID: 1363 (code=exited, status=0/SUCCESS)

3月 09 20:32:21 localhost.localdomain systemd[1]: Starting PostgreSQL 16 database server...
3月 09 20:32:24 localhost.localdomain postgres[1363]: 2026-03-09 20:32:24.655 EDT [1363] LOG: redirecting log output to logging

...略...

3月 09 20:35:50 localhost.localdomain systemd[1]: Stopping PostgreSQL 16 database server...
3月 09 20:35:51 localhost.localdomain systemd[1]: postgresql-16.service: Killing process 1390 (postgres) with signal SIGKILL.
3月 09 20:35:51 localhost.localdomain systemd[1]: postgresql-16.service: Succeeded.
3月 09 20:35:51 localhost.localdomain systemd[1]: Stopped PostgreSQL 16 database server.


MySQL 8.0.36

X86_64です!、起動してます!

[master@localhost ~]$ uname -rm
5.4.17-2136.304.4.1.el8uek.x86_64 x86_64

...略...

[master@localhost ~]$ sudo service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2026-03-09 20:32:28 EDT; 3min 38s ago

...略...

Memory: 444.0M
CGroup: /system.slice/mysqld.service
└─1102 /usr/libexec/mysqld --basedir=/usr

3月 09 20:32:04 localhost.localdomain systemd[1]: Starting MySQL 8.0 database server...
3月 09 20:32:28 localhost.localdomain systemd[1]: Started MySQL 8.0 database server.
[master@localhost ~]$ mysql -u scott -D perftestdb -p
Enter password:

...略...

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.36 |
+-----------+
1 row in set (0.00 sec)

mysql> exit
Bye
[master@localhost ~]$ sudo service mysqld stop
Redirecting to /bin/systemctl stop mysqld.service
[master@localhost ~]$ sudo service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Mon 2026-03-09 20:36:32 EDT; 3s ago

...略...

Main PID: 1102 (code=exited, status=0/SUCCESS)
Status: "Server shutdown complete"

3月 09 20:32:04 localhost.localdomain systemd[1]: Starting MySQL 8.0 database server...
3月 09 20:32:28 localhost.localdomain systemd[1]: Started MySQL 8.0 database server.
3月 09 20:36:30 localhost.localdomain systemd[1]: Stopping MySQL 8.0 database server...
3月 09 20:36:32 localhost.localdomain systemd[1]: mysqld.service: Succeeded.
3月 09 20:36:32 localhost.localdomain systemd[1]: Stopped MySQL 8.0 database server.

Oracle Database 21c

X86_64です!、起動してまーーーーーーーーーす!

[oracle@localhost ~]$ uname -rm
5.4.17-2102.201.3.el8uek.x86_64 x86_64

...略...

[oracle@localhost ~]$ lsnrctl start

...略...

/opt/oracle/product/21c/dbhome_1/bin/tnslsnrを起動しています。お待ちください...

TNSLSNR for Linux: Version 21.0.0.0.0 - Production
システム・パラメータ・ファイルは/opt/oracle/homes/OraDBHome21cEE/network/admin/listener.oraです。
ログ・メッセージを/opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

...略...

[oracle@localhost ~]$ sqlplus / as sysdba

...略...

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

SYS@ORCLCDB> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1073740720 bytes
Fixed Size 9694128 bytes
Variable Size 897581056 bytes
Database Buffers 54525952 bytes
Redo Buffers 7081984 bytes
In-Memory Area 104857600 bytes
データベースがマウントされました。
データベースがオープンされました。

SYS@ORCLCDB> select banner_full from v$version;

BANNER_FULL
----------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SYS@ORCLCDB> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

SYS@ORCLCDB>


ということで、ARM64 VMsとx86_64 VMs が、 macOS / Apple Silicon に同居させて遊べる環境のできあがりーーーーー!

ひとまず、一件落着


Enjoy RDBMSs on VirtualBox!


では、また。



関連エントリー

MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702
ySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)
VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163425 (2024-06-05T13:13:46Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163606 (2024-06-21T11:55:16Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163779 (2024-07-04T18:53:02Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox-7.1.0_BETA2-164697 (2024-09-06T20:27:41Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 (VM起動せず)
Oracle Database 23ai 23.8 (aarch64) on Oracle Linux 8u10 (aarch64) on VirtualBox 7.1 for Apple Silicon 始動 w
x86 GuestOS on VirtualBox for Apple Silicon / ARM. Rebooted. :)
Oracle VirtualBox 7.2 introduces support Microsoft Windows for Arm

| | | コメント (0)

2025年11月 2日 (日)

2025年10月にリリースした曲 / DTM / GarageBand

さて、
10月のGarageBandのDTMは以下のダブバージョンを含む3つ。

Mind Game Loops ver. 1.2 / N + 1 Loops
Siriの日本語音声2の女性の声を利用して、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」っぽい音声Loopを作るテストで試した音声をGarageBandのトラックに組み込んでみたのが10月最初にリリースしたループ!


Autumn Night Rain Loops / N + 1 Loops
昨年も作った秋っぽい何かシリーズでw 1つ。


Crisp Autumn Day Loops ver. 1.6 / N + 1 Loops
- Dub version of Autumn Night Rain Loops -

そして、Autumn Night Rain Loops / N + 1 Loopsのダブバージョン。テンポを落としてドラムトラックなど合わせて変更してみたり。


では、また。

Enjoy DTM and GarageBand!

| | | コメント (0)

2025年10月 2日 (木)

2025年9月にリリースした曲 / DTM / GarageBand

ということで、前月のDTM

Dub version含め勢い余ってw、4曲


Glass Kabuki Loops / N + 1 Loops - Dub version of Kabuki Loops -
Glass Heart on Netflix ( • 佐藤健 × 宮﨑優 - 伝説のどしゃ降りセッション🎹🥁 | グラスハート | Net... )観てたら面白かったので、inspired by Glass Heartとうい感じのDTM を。


Even so, loops! : N + 1 Loops - Dub version of Kabuki Loops -

それでもみんな大好きぐるぐる系みたいな)。ネタから思いついただけのタイトルというか、
別の曲にしようと思いドラムトラック作ってベーストラック載せた勢いだけで作ったこれも、Dub Version.


A dream one day Loops / N + 1 Loops

なんか落ちる夢って見たことないですかね。そんな感じの。
Beat Saberのゲーム動画のサウンドトラックだけ置き換えるためにチョっチョッと作ってみたやつ。


Sequel to a dream one day Loops ver. 1.1 / N + 1 Loops

全曲の勢いで、夢の続きみたいな感じで。


週一で作ってないか。。。w

Enjoy DTM and GarageBand!

ではまた。

| | | コメント (0)

2025年10月 1日 (水)

Siriの日本語音声2の女性の声を利用して、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」っぽい音声Loopを作るテスト

Siriの日本語音声2の女性の声を利用して、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」っぽい音声Loopを作るテスト

ということで、

Siriの日本語音声2の女性の声を聞いてたら、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」とかそれ風にText to SpeechとGarageBandつかえば出来そうということで試してみた。

事前に環境設定で、Siriの音声から日本語、声2 の女性の声をロードしておく必要があります。

システム設定→アクセシビリティ→読み上げコンテンツ→読み上げ言語→ポップアップメニュー→日本語、→システムの声→ポップアップメニュー→声の管理→サイドペイン→日本語→日本語声2→OKボタン

20251001-175237

20251001-175249

メモ帳でもなんでも良いので、テキストエディタを開いて、以下のように入力して、「スピーチ」を選ぶだけ。

20251001-174448

上記を再生して録音。mp4ファイルをGarageBandに取り込み
GarageBandに組み込まれているPlug-inのSpace Desingerを使って屋内のホール空間のようなリバーブをかけて、イコライザで音の調整をしたのが以下の動画


| | | コメント (0)

2025年9月 3日 (水)

2025年8月にリリースした曲 / DTM / GarageBand

Natsu No Kabuki Loops ver.1.3 - Dub version of Kabuki Loops - / N + 1 Loops
8月は、他のことで忙しくて、時間取れなかったこともありますがwNatsu No Kabuki Loops ver.1.2 -> Natsu No Kabuki Loops ver.1.3へのマイナーバージョンアップのみでした。


そろそろガレバン、メジャーアップデートとかしないのだろうかw

ではまた。

Enjoy DTM, GarageBand and Apple Loops!

| | | コメント (0)

2025年7月 2日 (水)

2025年6月にリリースした曲 / DTM / GarageBand

今月のDTMもリズムセクションの再利用を多用したループが多くなってしまった気がしないでもないw

Skip Scan Loops / N + 1 Loops
先月のと同じでドラムトラックを再利用して適当に載せてみたやつ。タイトルはOracle Databaseっぽい実行計画のOperationからw

 

LWlock LockManager waits Loops / N + 1 Loops
これも同じくw タイトルだけは先に決めちゃってた。PostgreSQLっぽい待機イベントで何かメジャーなやつということでw

 

では、また。

Enjoy DTM and GarageBand!

 

 

| | | コメント (0)

2025年6月 2日 (月)

2025年5月にリリースした曲 / DTM / GarageBand

今月のDTMもリズムセクションの再利用を多用したループが多くなってしまった。もう一つ作りかけのがあるしがw


Infinite Loop / N + 1 Loops
なんとなくループを置いただけのやつ



Cherry Blossom Blizzard Loops v1.2 / N + 1 Loops
4月に公開したLoopのマイナーアップデート!


Funky Clouds Loops / N + 1 Loops - Dub version of Cherry Blossom Blizzard Loops
Cherry Blossom Blizzard Loops v1.2 のリズムセクション再利用。。。:)



Another Loops in Clouds v1.1 / N + 1 Loops
Cherry Blossom Blizzard Loops v1.2 のリズムセクション再利用。。。その2



ではまた。Enjoy DTM / GarageBand!

| | | コメント (0)

2025年5月 3日 (土)

2025年4月にリリースした曲 / DTM / GarageBand

2月からドタバタしていて、ようやく一段落しはじめた4月。いつものペースを取り戻しつつ。公開したLoopはw これら

 

Railroad Loops / N + 1 Loops

なんとなーく、なにかに似たフリー映像版にしてしまったがw

 

Nested Loops III / N + 1 Loops

たまに作る、おまとめ版。

 

Space Cowboy Loops / N + 1 Loops

どこかの国には、関税カウボーイがいるらしいけどw

ではまた。Enjoy DTM / GarageBand!

| | | コメント (0)

2025年4月 8日 (火)

2025年3月にリリースした曲

DTM / GarageBandネタの月初のルーティーンw

3月にリリースしたループはこれ。(諸々プライベートが落ち着いたので、もうすこし遊べそうなきがする)
ver. 2.1から一年ぶりのマイナーアップデートw

Snow Loops ver. 2.2 / N + 1 Loops

| | | コメント (0)

2025年3月 2日 (日)

2025年2月にリリースした曲

DTM / GarageBandネタの月初のルーティーンですw

2月にリリースしたループはこれ。

実は1月にリリースしまくったループをベースにしたDub Versionのひとつ。勢いで作ったw
ちょうど、イカ天にでいた面白かったバンド THE家元 を思い出してSpotifyで聴いていた影響で、歌舞伎のいよ〜〜〜〜〜っ、ポン! って音のフリー音源さがしてたらいいのを見つけてイントロとエンディングと中間で使ってみたw

Another Ride the Groove Loops Dance Version v1.1 / N + 1 Loops -Dub version of Ride the Groove Loops

2月は色々多忙すぎてこれだけでしたが、3月もほぼ同じなので1曲(実はα版は作ってるw)が限界かなと。

Enjoy DTM / GarageBand!

ではまた

| | | コメント (0)

2025年1月 2日 (木)

2024年12月に公開した曲

先月は、Apple Loopとチョップだけで頑張るGarageBand DTMアドベントカレンダー全部俺で作ったこのループ

Neko Mimi Loops 2024 / N + 1 Loops
これは2023年に思いつきで作ったVer.1をメジャーアップデートしたやつ。


Nested Loops II / N + 1 Loops
アドベントカレンダー全部俺で疲れたのでもう一つは、2024年公開分のまとめたもの

ということで今年のDTMもガレバンとApple Loopとチョップだけ?で頑張る予定でございます m(_ _)m

| | | コメント (0)

2024年12月25日 (水)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #25 - フリー動画と合わせて完成

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
25日目の窓を開けました!

BarageBandではなくて、iMovieネタになっちゃいますが。
細かい動画作業ログは動画にて。(いつもの pixabayAdobe Stock の素材を組み合わせて使う。。完成版はどうなりますか....)



完成版!
Neko Mimi Loops 2024 / N + 1 Loops



Enjoy DTM, GarageBand and iMovie

I wish you a Merry Christmas! and a Happy New Year!
C-YA! Next Articles.



Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #19 - イントロにもう少し追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #20 - イントロにもう少し追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #21 - 完成間近、各トラックのバランスとか音色調整とか その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #22 - 完成間近、各トラックのバランスとか音色調整とか その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #23 - 完成間近、各トラックのバランスとか音色調整とか その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #24 - Version.1とVersion.2の比較!


| | | コメント (0)

2024年12月24日 (火)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #24 - Version.1とVersion.2の比較!

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
24日目の窓を開けました!

完成したので、Version.1 と Version.2 の比較!〜

Before ( Ver.1 - 2023年 ) : Neco Mimi Loops / N + 1 Loops


After ( Ver.2 ) : Neko Mimi Loops 2024 / N + 1 Loops



結構変わったのでヨシとするw Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024最終日の明日は、フリー動画( pixabay )で見つけた動画やAdobe Stock(有料)の商用でも利用可能な動画と合わせて完成予定:)

Enjoy DTM, GarageBand and iMovie

では、また明日




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #19 - イントロにもう少し追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #20 - イントロにもう少し追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #21 - 完成間近、各トラックのバランスとか音色調整とか その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #22 - 完成間近、各トラックのバランスとか音色調整とか その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #23 - 完成間近、各トラックのバランスとか音色調整とか その3


| | | コメント (0)

2024年12月23日 (月)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #23 - 完成間近、各トラックのバランスとか音色調整とか その3

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
23日目の窓を開けました!

最後にスクラッチ、ネコの鳴き声トラックの音色等を調整して完成!!!! やった〜〜
今日調整したトラックは以下。トラックにLoop名称を利用し "トラック番号.Loop名称"にしてあるので参考にしていただければ。

07.Sunday Haze Scratch Synth Pad
08.Crate Digging Scratch FX
09.Vinyl Scratch 01
10.Scratchy Wobble Bass
14.Communication Static
15.Cat Meow 05
16.Catch Me Chop Vox
17.True Heart Chop Vox
18.Choppy Vox Lead 04
19.Around Midnight Vox Melody 01.61
20.Around Midnight Vox Melody 02


細かい作業の様子は以下の動画にて。明日は、Ver.1と今回色々変えまくったVer.2の聴き比べでも。
BGM : City Lights Loops / N + 1 Loops, Heatbeats Loops / N + 1 Loops


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #19 - イントロにもう少し追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #20 - イントロにもう少し追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #21 - 完成間近、各トラックのバランスとか音色調整とか その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #22 - 完成間近、各トラックのバランスとか音色調整とか その2


| | | コメント (0)

2024年12月22日 (日)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #22 - 完成間近、各トラックのバランスとか音色調整とか その2

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 22日目の窓を開けました!

レイヤー部分とかイントロの一部のシンセサイザーの音色やエコーなどを調整中
今日調整したトラックは以下。トラックにLoop名称を利用し "トラック番号.Loop名称"にしてあるので参考にしていただければ。

05.Swelling Sub Bass
06.Transport Stop Synth
11.Glow Scratchy Pad
21.Break Free Choir Pad
22.Break Free Choir Pad.1
23.Ride With Me Synth Pluck
24.Hidden Origins 01
25.Night Walk Echo Plucks
26.Night Walk Echo Plucks +12
27.Night Shift Layers
28.Night Vision Synth Layers
29.Nocturnal Phase Synth 01
30.Shine Bright Arpeggio

ちなみに、よく使っているPlug-inは、Space Desinger, Stereo Spread, Compressor, EQあたりですね。たまに、Distortion も使ったりして音のザラつき感をSaxやブラス系のLoop持たせたりすることもあります。

 

細かい作業はいつもの動画にて。(今回も音の確認はありません。作業の様子のみです)

BGM : Rain Loops / N + 1 Loops , Moire Loops Dub version Ver. 1.1 / N + 1 Loops

 

Enjoy DTM, GarageBand and iMovie

では、また明日。


Related articles
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #19 - イントロにもう少し追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #20 - イントロにもう少し追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #21 - 完成間近、各トラックのバランスとか音色調整とか その1

| | | コメント (0)

2024年12月21日 (土)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #21 - 完成間近、各トラックのバランスとか音色調整とか その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 21日目の窓を開けました!

ほぼ完成なのですが、残る作業は各トラックの音色、バランスと音量の調整ですね。
それに、Plug-inで奥行きをつけたり。。地味だけど大切なやつ。
ということで、その1回目は、リズムセクション周りの部分からやっつけちゃおうかと。

使っている機器を書いておきます。音色や音の確認って結局のところ使用機材で違ったりするので。

Apple Studio Display 27inch、基本的にこれで。

次に、イヤフォンとヘッドフォン
Bose QuietComfort Earbuds
Bose QuietComfort Ultra Headphones

おまけ(ちょい古い)
Bose SoundLink Mini II

これらで音確認してます。

今日調整したトラックは以下。トラックにLoop名称を利用し "トラック番号.Loop名称"にしてあるので参考にしていただければ。

01.Synthetic Bass House
02.Almost Electro Beat
03.Les Inferno Snare
04.Neon Dreams Snare 02
12.Aggressive Stance Bass
13.Aggressive Step Synth Bass

細かい作業はいつもの動画で、音の確認は全トラックの調整終了後に予定しているため、今回は、各トラックの音調整完了後のセッティングのまとめのみです。


BGM : Memory Loops - ver. 1.1 / N + 1 Loops

 

Enjoy DTM, GarageBand and iMovie

では、また明日。

 


Related articles
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #19 - イントロにもう少し追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #20 - イントロにもう少し追加したい その3

| | | コメント (0)

2024年12月20日 (金)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #20 - イントロにもう少し追加したい その3

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
20日目の窓を開けました!

ほぼもういいかなぁ。と思い、音のバランス調整を始めたら、イントロにもう少し足したくなりましたw。こればかりは仕方ない、そういう気持ちになったのでw
要らなそうなら削除しちゃえば問題ないわけですし

Before
Before_20241219051301

After
After_20241219051301

細かい作業はいつものように動画にて。(追加した部分の雰囲気の違い。気づかないような程度ですが変わってますw)。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #19 - イントロにもう少し追加したい その2


| | | コメント (0)

2024年12月19日 (木)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #19 - イントロにもう少し追加したい その2

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
19日目の窓を開けました!

効果音をイントロの一部に追加したというのが前回まででした。
これでいいかなぁ。と思って何度か聞いていると、んーw また追加したい気持ちに。w (マジで気づかない程度にイントロにレイヤーを追加してみたい。。。と。
余計だったら後から削除すればいいですしw


Before
Before_20241218063901


After
After_20241218063901


細かい作業ログはいつもの動画で。後半でイントロ含め通しで音確認しています。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1


| | | コメント (0)

2024年12月18日 (水)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #18 - イントロにもう少し追加したい その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 18日目の窓を開けました!

 

前回イントロのループにオートメーションを追加していたときに感じたイントロの物足りなさ。
ということで、イントロをもうすこににぎやかにしてみようかとw ( そんな感じ〜。というだけの感じ〜、が大切だと思うのでやってみましょうw )

Before

Before_20241217051601

 

VOX的な効果音を追加してみたけど、悪くない感じw
After

After_20241217051601

 

いつものようにこまけー作業ログは動画にて。後半で本日の音確認しています。

 

Enjoy DTM, GarageBand and iMovie

では、また明日。

 


Related articles
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る

| | | コメント (0)

2024年12月17日 (火)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #17 - オートメーションを追加してパンを左右に自動的に振る

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
17日目の窓を開けました!

イントロの低音のボワ〜んというところ(表現がむずいがw)xトラック目の部分にオートメーションを追加してパンを左右に自動的に振るようにしてみた。

Before
Before_20241216073001

After
After0
After_20241216073001

細かい作業は動画にて。後半で今日の作業の音確認してます。 やっぱ左右に振ったほうが面白いよなぁ。



Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除


| | | コメント (0)

2024年12月16日 (月)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #16 - BASSラインをチョップして音を削除

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
16日目の窓を開けました!

BASSライン、一部無い方が良いかなぁ。という音とチョップして削除してみる。(その方が良さげな気がするw

Before
Before_20241216052101


After
After_20241216052201

確認中に、最後のスクラッチのタイミングが気に入らず、ついでに調整しちゃいましたw
細かい作業ログはいつもの動画で。後半で本日の音確認もしています。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4


| | | コメント (0)

2024年12月15日 (日)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #15 - ネコだけにScratch追加したい その4

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
15日目の窓を開けました!

できた曲をしばらく聴いていたら、ん〜。もう一つScratchのトラックを追加したくなってきたので追加してみる。

Before
Before_20241214073401

Scratch音のLoopに含まれていたシンセの音がいい感じのアクセントになりそうだったので、そこだけチョップして切り出して使ってみた。
After
After_20241214073401


いつものように作業ログはYoutubeの動画にて。後半で本日の音確認やってます。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正


| | | コメント (0)

2024年12月14日 (土)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #14 - ネコだけにScratch追加したい その3の修正

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
14日目の窓を開けました!

ネコだけにScratch追加したいということで、その3 で追加したスクラッチですが、短いかなぁ(という感じ)、なので少し長くしてみましょう。

Before
Before_20241213065301


分かり難いですがw、少し長くしました。
After
After_20241213065301

細かい作業のログと、音の確認は以下にて。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3


| | | コメント (0)

2024年12月13日 (金)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #13 - ネコだけにScratch追加したい その3

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
13日目の窓を開けました!

まだまだ引っ掻いてる音がほしーーーい気がしませんか?w 。(まだ、追加するんかーーーーーーーいw)

Before
Before_20241212070001


After
After_20241212070001


いつものように細かい作業はVlogにて。後半で、本日の作業確認として全体を通して音を確認しています。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2


| | | コメント (0)

2024年12月12日 (木)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #12 - ネコだけにScratch追加したい その2

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
12日目の窓を開けました!

さぁ。アドベントカレンダーも折り返し地点:)

もっとスクラッチ追加したいですよねw まだまだ寂しい気がするので。 ということで、さらに追加してみる
Before
Before_20241211064901


After
After_20241211064901


こまけー作業は以下の動画にて。後半で、ここまでの音を確認しています。

Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1


| | | コメント (0)

2024年12月11日 (水)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #11 - ネコだけにScratch追加したい その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
11日目の窓を開けました!


ネコ成分、というかネコだけに、スクラッチも追加したいですよねw 爪研ぎというかw ということで何か追加してみる。。
Before
Before_20241210074501


After
After_20241210074501


細かい作業の様子は動画にて。最後に本日の作業の音確認してます。完成に近づいてきた:)


そういえば、これも書いておかないと思い忘れていたのですが、その昔、GarageBand登場前と言った方が良いのかなw PlayerProというDAWとしても老舗に近いシェアウェアがありました。私も使っていたのですが、当時は画期的でしたねぇ。と思い出に浸るw



Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2


| | | コメント (0)

2024年12月10日 (火)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #10 - ネコっぽい効果音をリズムに絡める その2

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
10日目の窓を開けました!

ネコ成分、もう少し欲しいいなぁw。
ということで、もう1トラック追加してみようと思いますw

Before
Before_20241209105501

After
After_20241209105501

細かい作業の様子は以下の動画で。最後に本日の作業の結果確認として音を確認しています。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1


| | | コメント (0)

2024年12月 9日 (月)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #9 - ネコっぽい効果音をリズムに絡める その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
9日目の窓を開けました!

Layerを重ねてお腹いっぱいになったのでw、リズムにネコっぽい効果音を絡めて行こうと思います。(パーカッション的に使うイメージ)
猫の鳴き声ループをチョップしていい感じにできるかなぁ。
Apple Loopには、効果音として動物や生活音などいろいろな環境音もあるので、DTMにも使えるネタは結構あります。(以前作った曲で、どうしても真言宗のお経とか木魚の音を使おうとした時、適当なLoopがなくてフリーの音源を使わせてもらいましたが、オリジナルのサンプリング音をLoopライブラリへ追加して利用することもできます:)

Before
Before_20241208071001

After
After_20241208071001


細かい作業風景は以下の動画で。最後に音を確認しています。
Apple Loopをそのまま利用するか、チョップして音単位で捨てたり、入れ替えたりするのは基本テクニックなので覚えちゃえば楽です。
ただ音毎に一括チョップする機能はないので、音毎にチョップするという地味な作業になってしまうわけですがw。(そのあたりはおまけでつけてくれているソフトウェアと有料版との差別化という感はありますねw)



Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4


| | | コメント (0)

2024年12月 8日 (日)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #8 - Layer どうしましょう その4

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
8日目の窓を開けました!

欲張りすぎだろうか、気づかない程度にもう一つLayerを足したいw
(まだ追加するのかよ!〜w という感じですがw 追加しまっす!)


Before
Before_20241207074201

After
After_20241207074301


こまけー作業は、これまで通りですが、一応、早送りの作業シーンと、最後に本日の音確認は以下。



Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3


| | | コメント (0)

2024年12月 7日 (土)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #7 - Layer どうしましょう その3

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
7日目の窓を開けました!

まだ、重ねても良いかなぁ。wwww 気分というかそんな感じー、なので :)

Before
Before_20241206063801

After
もう一つLayerを追加した状態。雰囲気というかなんというか、めっちゃ変わったかというと。そうでもないですけども、このままでいきましょう。
After_20241206063901


細かい作業動画は以下にて。


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2


| | | コメント (0)

2024年12月 6日 (金)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #6 - Layer どうしましょう その2

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 6日目の窓を開けました!

 

昨日はLayerトラックを2つ追加しましたが、まだ物足りない気がしていて、もう一つLayer足してみますか。。と。

 

Before

Before_20241205064601

After こんな感じで、Night Vision Synth Layerが良さそうだったので追加した後の状態がこれ。
After_20241205064601

 

 

いつものように細かい作業風景は早送りも含め動画にて。動画の最後で今日追加したトラック含めた音の確認をしています。

 

Enjoy DTM, GarageBand and iMovie

では、また明日。

 


Related articles
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1

| | | コメント (0)

2024年12月 5日 (木)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #5 - Layer どうしましょう その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 5日目の窓を開けました!

 

昨日はざっくりBASSライン決めちゃいました。
今日は、このままだと寂しいので Layer をどうするか。というところ。
最初から最後まで裏でなってる感じトラック追加します。後でさらに足したり減らしたり試行錯誤すると思いますが。。とりあえず足していきますw

 

良さそうなのを見つけて、雑に置いてみるだけですけども(必要ならチョップして落としたりできますし)
手順はこれまで通り、メインとのラックを再生しつつ、良さそうなループを見つけたら同時に再生して確認。
よければそのままトラックに追加。
地味な作業の繰り返しです。

 

以上w

 

Before

Before_20241205074401

After

オリジナルのループと+12半音高く調整したループの2トラックを追加しました。
Before_20241204072801

 

地味な作業の早送りあり、BGMあり、で最後に今日完成したところまでを聴いて、明日へ続く。
(日々聞ける感じで終わって次に繋げるので、いい感じのイテレーションでしょ?。その日のタスクは確実に実装してコミットするみたいな感じw、ゴールは Ver.2を完成させるところまで:)

 

Enjoy DTM, GarageBand and iMovie

 

では、また明日。

 

 


Related articles
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1

| | | コメント (0)

2024年12月 4日 (水)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #4 - BASSトラックどうしよう その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 4日目の窓を開けました!

リズムセクションを固めないと次を決めにくいので、BASSトラックをざっくり決めちゃいましょう。
流れとしては、イントロ向けループを探して、試す、という地道なことの繰り返しで、イメージに近いループやなんとなくいいじゃん!、
というループを選んじゃいます。

そのまま使うこともあれば、後でチョップしたり、
一部だけ合うかなーというループはチョップして一部のみ使うとか、
色々ですね。決まりなんかないので。

Before BASSトラック追加前はこんな感じ
Before_20241203064301

After 追加後はこんな感じ。今のところループの原型のまま置いているだけです(後半で、EQで調整したりチョップして音を入れ替えたり、落としたりするので今はオリジナルのまま)
After_20241203064301

 

いつものように作業風景を動画で。早送りや必要な部分では音の確認をしながら進めています。

 

Enjoy DTM, GarageBand and iMovie

では、また明日。

 


Related articles
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1

| | | コメント (0)

2024年12月 3日 (火)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #3 - イントロ その1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
3日目の窓を開けました!

多分、ここ使わん!というトラックをバッサリ削除したのが前回。
今日は、イントロのトラックを追加していく、その1(毎回悩みますw)

ちょい重めwのイントロ(全バージョンが軽めだったのでw)を選んで2トラック追加。

イントロトラック追加前
Before_20241202065401

イントロトラック追加後
Swelling Sub Bass
Transport Stop Synth
という2つのループをそのまま(音の調整は最後にするのでとりあえず置くだけ)
After_20241202065501

作業風景w 早送りあり、最後にAfterの状態の音を確認!

Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w
Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択

| | | コメント (0)

2024年12月 2日 (月)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #2 - メジャーバージョンアップするための取捨選択

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
2日目の窓を開けました!

さて、対象が決まったので、どう変えていくかですが、
もとのトラックで、ん〜。いらないかなぁ〜と思うトラックをいくつか落としてベースになるトラックだけ残すことを今日の目標にしますねw
そもそもどうするかも決まってないわけですがw

Before
Before

After
After

作業風景w 早送りあり、最後にAfterの状態の音を確認!


Enjoy DTM, GarageBand and iMovie

では、また明日。




Related articles

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1 - 何しようというところから。w

| | | コメント (0)

2024年12月 1日 (日)

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024 #1

Apple Loopとチョップだけで頑張るGarageBand DTM 全部俺 Advent Calendar 2024
1日目の窓を開けました

一度やってみたかった、GarageBand Advent Calendar しかも全部俺で。

GarageBandなどで提供されているApple Loop、これだけを使い、打ち込み、MIDI入力もなし、サンプリングもなし(無料のお経のサンプリング音は一度利用した)でApple Loopをチョップして頑張るシリーズを初めて2年ほど。
以前からやろうと思っていた GarageBand Advent Calendar 全部俺。ついにその重い腰を上げw

で、一から作るのも大変なだったので、
昨年作ったLoopをメジャーアップデートする過程を25回に分けで書こうと思います。
元ネタは昨年思いつきで作って放置していたもので、Version 2というか2024年版へアップデート。

まずは、オリジナルはどうだったのか?、というところから。
これをどう変えていくか、それが問題だw
NecoというかNekoな。

Neco Mimi Loops / N + 1 Loops - GarageBand Edit



Enjoy DTM and GarageBand!

では、また明日。
25日間続けられるのか。。。。

| | | コメント (0)

2024年11月 1日 (金)

DTM / 10月に公開した曲

DTM/GarageBandにある既存のAppleLoopsだけでがんばって作る曲シリーズw

10月は想定してなかった別件のレビューやったり、色々とプライベートな諸用が立て込んでた割には、DTMらしいw トラック再利用というかDub Versionやそれに近いのが多く作れたのでなんと、週イチペースwww

ガレバンアドベントカレンダー全部俺とかやりそうな勢い、だけはあるw (やるとは言ってない)

ということで、 10月にリリースしたループはメジャーアップデート(実は直後にマイナーアップデートしたがw)を含む4ループ、(マイナーアップデートを含めると5ループだが)

Long Autumn Nights Loops / N + 1 Loops

ベース頑張ったいつもよりスローテンポにしたループ



GarageBand映像バージョン

Turquoise Loops Ver. 2.1 / N + 1 Loops

Turquoise Loops / N + 1 Loopsのメージャーバージョンアップをさらにマイナーバージョンアップした Ver. 2.1。夏っぽいイメージなので残暑厳しかった9月に公開したかったのだが、仕方あるまいw



GarageBand映像バージョン

Turquoise Wave Loops / N + 1 Loops - Dub Version of Turquoise Loops Ver. 2.1 -

このループは上記、Turquoise Loops Ver. 2.1 / N + 1 Loopsのダブバージョンで、リズムトラックはほぼ流用して夏っぽい感じは残したまま別ループにしたもの。(GarageBand映像バージョンを見てもらってもわかると思いますが)


GarageBand映像バージョン

Shuffle Dance Loops / N + 1 Loops

最後のループは雰囲気をガラリと変えて、シャッフルダンスに合うかなぁ。と思いつつこんな感じに仕上がったのわけですがw
このループのドラムトラックとベース部分、サックスのトラックなども、前述のTurquoise Loops Ver. 2.1 、Turquoise Wave Loops から流用(EQやPluginで少し加工してますが)、他のトラックも過去使ったものを少しタイミングをズラしただけで結構雰囲気変わります:)

今回初めてAdobe Stockの映像も使ってみた(ちょうど良いのがあったので)。



GarageBand映像バージョン

では、次回のループリリースで。

Enjoy DTM / GarageBand !

| | | コメント (0)

2024年8月16日 (金)

VirtualBox TestBuild 7.1.0_BETA1r164387 (2024-08-15T17:27:33Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

VirtualBox 7.1.0_BETA1r164378が8/15に公開されていましたが、今回もGuestVM起動できず、計測不能でした。

20240816-33746

ちなみに、VirtualBox Extension PackもVersionが古く(7.0.97.163425なのでかなり古いですね)インストールできないミスマッチの状態となっているので、そのあたりも影響しているのかもしれません。TestBuildsですからね。長ーい目で見守りましょう。 7.1になってから二回目の更新ですし:)

20240816-40340

20240816-34235

 

20240816-40543

インストールされたVirtualBoxのリリースは、7.1.0_BETA1r164378

20240816-35226

ということで、強烈な台風が近づいている東京より。

みなさん、安全を最優先に:)

ではまた。

 


MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702
ySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)
VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163425 (2024-06-05T13:13:46Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163606 (2024-06-21T11:55:16Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.1.0_BETA1r164292 (2024-08-07T18:27:07Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

 



| | | コメント (0)

2024年7月 8日 (月)

VirtualBox TestBuild 7.0.97r163779 (2024-07-04T18:53:02Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

2024-07-04T18:53:02Z に最新のTestBuild ( development revision 163779 ) が公開されていました。


20240708-101041

恒例のOracle Database 21c on VirtualBox TestBuild for macOS/ARM64 の起動時間の記録です。

今回は、M1/M2とも前回とほぼ同じぐらい。改善は次回に期待 :) :) :) :) :)
とはいえ、そろそろ大詰め? な感じもしなくもない。。。。

M1

oracle@Mac-Studio ~ % ./print_env.sh 

*** mac info. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** maxOS ver. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.0.97r163779

起動1回目 : 168 sec
停止1回目 : 77 sec
起動2回目 : 156 sec
停止2回目 : 48 sec

M2

oracle@angelfish ~ % ./print_env.sh

*** mac info. ***
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB

*** macOS ver. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** VirtualBox ver. ***
7.0.97r163779

起動1回目 :  93 sec
停止1回目 : 33 sec
起動2回目 : 95 sec
停止2回目 : 55 sec


VMのOSバージョンなどは過去のエントリーを見ていただくとして、M1/M2 それぞれ以下のPostgreSQL/MySQL/Oracle Databaseが起動することを確認。ルーティーン :)

MySQL

[master@localhost ~]$ mysql -u scott -D perftestdb -p -h localhost -e 'select version();'
Enter password:
+-----------+
| version() |
+-----------+
| 8.0.36 |
+-----------+

PostgreSQL

[master@localhost ~]$ sudo su - postgres -c 'psql -d perftestdb -U discus -p 5432 -W -h localhost -c "select version()"'
パスワード:
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 13.14 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20), 64-bit
(1 行)

Oracle Database (21c)

[oracle@localhost ~]$ sqlplus / as sysdba @version

....中略....

BANNER_FULL
-----------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

Oracle Database (23ai)

[oracle@localhost ~]$ sqlplus hr/oracle@localhost:1521/freepdb1 @version

....中略....

BANNER_FULL
--------------------------------------------------------------------------------
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.4.0.24.05


では、次回の起動停止時間ログをお楽しみに:)
最近のペースだと、7月の後半にありそうですよね.





MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702
ySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)
VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163425 (2024-06-05T13:13:46Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163606 (2024-06-21T11:55:16Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

| | | コメント (0)

2024年7月 6日 (土)

DTM / 6月に公開した曲

ちょいと、遅れましたが、DTM/GarageBandにある既存のAppleLoopsだけでがんばって作る曲シリーズw

はじめてから3年目ですがw たぶん70曲ぐらい作ってるはず。だなーと。ありもののループを利用しているだけなので、お気に入りのループが固定化してワンパターンな感じになるのをなんとか避けつつw ネタが浮ぶ限りというか飽きなければやっていこうかなとw
(普段とは使う脳の部位が違うので、頭のリフレッシュに最適w)


ということで、先月の1曲目は、5月に作った曲のリズムトラック版。
このリズムトラックを元にDub Versionを作ったり、作った曲のマイナーアップデートをしています。(ようするに意外に気に入ってるということでw)

Nu Funky Loops in Clouds ver. 1.1 Rhythm Tracks / N + 1 Loops


次は、Nu Funky Loops in Clouds ver. 1.1Loops in Cloudsでも使ったギターリフをやめて、ちょっと別な方向に振ったメジャーアップデート.

Nu Funky Loops in Clouds ver. 2 / N + 1 Loops



3曲目は偶に作りたくなるテクノ。YMOっぽいというかProphet-5っぽいうというか、坂本教授が好んで使っていた感じの音に近いループってAppleLoopsにほぼないので、中かな辛かったり、ピコピコ矩形波系の音も使いにくのはあるけどもで、そのなかから喫茶店にあったTVゲームっぽい音ループがあったので、Firecrackerっぽい感じと、YMOも後半のスネアの音。坂本教授の電気的音楽講座、大好きだったのでどんなエフェクター使ったとか云々が記憶に残っててw それっぽい感じにしつつ。w

YMOPPOI LOOPS / N + 1 Loops


ではまた。

Enjoy DTM / GarageBand !

| | | コメント (0)

2024年6月23日 (日)

VirtualBox TestBuild 7.0.97r163606 (2024-06-21T11:55:16Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

2024-06-21に最新のTestBuildが公開されていました。


20240623-112941

恒例のOracle Database 21c on VirtualBox TestBuild for macOS/ARM64 の起動時間の記録です。

 

oracle@Mac-Studio ~ % ./print_env.sh

*** mac info. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** maxOS ver. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.0.97r163606

 

M1で停止時間が2桁秒台になったほか、起動時間も改善してますね!

起動1回目 : 130 sec
停止1回目 : 66 sec
起動2回目 : 145 sec
停止2回目 : 45 sec

 

 

oracle@angelfish ~ % ./print_env.sh

*** mac info. ***
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB

*** macOS ver. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** VirtualBox ver. ***
7.0.97r163606

 

 

起動停止時間の記録をとり始めてから、M2でも最短記録ですね!!!! 

起動1回目 : 108 sec
停止1回目 : 34 sec
起動2回目 : 91 sec
停止2回目 : 49 sec

 

今回は、起動停止時間ともこれまでの最速値です。(^^) (^^) (^^)

次回のリリースが楽しみですね。。。

 

VMのOSバージョンなどは過去のエントリーを見ていただくとして、M1/M2 それぞれ以下のPostgreSQL/MySQL/Oracle Databaseが起動することを確認。

 

PostgreSQL

[master@localhost ~]$ sudo su - postgres -c 'psql -d perftestdb -U discus -p 5432 -W -h localhost -c "select version()"'

version
----------------------------------------------------------------------------------------------------------
PostgreSQL 13.14 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20), 64-bit
(1 行)

 

MySQL

[master@localhost ~]$ mysql -u scott -D perftestdb -p -h localhost -e 'select version();'

+-----------+
| version() |
+-----------+
| 8.0.36 |
+-----------+

 

Oracle Database 21c

[oracle@localhost ~]$ sqlplus / as sysdba @version

...略...

BANNER_FULL
----------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

 

Oracle Database 23ai

[oracle@localhost ~]$ sql hr/oracle@localhost:1521/freepdb1 @version

...略...

BANNER_FULL
________________________________________________________________________________
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.4.0.24.05

 

VirtualBox Team がんばれ〜〜〜〜〜 :)

では、次回の起動停止時間ログをお楽しみに:)

 

 



MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702
ySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)
VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163425 (2024-06-05T13:13:46Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

 

 

| | | コメント (0)

2024年6月15日 (土)

VirtualBox TestBuild 7.0.97r163425 (2024-06-05T13:13:46Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

さて、恒例のOracle Database 21c on VirtualBox TestBuild for macOS/ARM64 の起動時間の記録です。
2024-06-05T13:13:46Zに公開されていた。起動自体は非常に安定してきましたね。細かいところは色々あるようですが、正式リリースが待ち遠しい。

oracle@Mac-Studio ~ % ./print_env.sh 

*** mac info. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** maxOS ver. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.0.97r163425


Oracle Database 21c / Mac Studio M1
微妙な差なので変化なしという感じですね。

起動1回目 : 202 sec
停止1回目 : 86 sec
起動2回目 : 163 sec
停止2回目 : 143 sec


oracle@angelfish ~ % ./print_env.sh

*** mac info. ***
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB

*** macOS ver. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** VirtualBox ver. ***
7.0.97r163425


Oracle Database 21c / MacBook Air M2
若干、前回公開されたTestBuildより遅くなってる気がしますよね。(たった二回しか起動停止させてないので、参考記録程度なわけですけども)

起動1回目 : 244 sec
停止1回目 : 136 sec
起動2回目 : 201 sec
停止2回目 : 101 sec


Virtualbox-20240605-7097r163425

その他、いつもの起動確認。
PostgreSQL 13.14 / MySQL 8.0.36 / Oracle Database 21c 及び、 23ai (M1/M2それぞれ起動)
GuestOSのバージョンなどはこれまでと同じなので省略して、それぞれのバージョン確認ログで起動確認。

[master@localhost ~]$ mysql -u scott -D perftestdb -p -h localhost -e 'select version();'
Enter password:
+-----------+
| version() |
+-----------+
| 8.0.36 |
+-----------+

[master@localhost ~]$ sudo su - postgres -c 'psql -d perftestdb -U discus -p 5432 -W -h localhost -c "select version()"'
パスワード:
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 13.14 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20), 64-bit
(1 行)

[oracle@localhost ~]$ sqlplus scott@orclpdb1 @version

...略...

BANNER_FULL
-----------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0


[oracle@localhost ~]$ sql hr@192.168.1.138:1521/freepdb1 @version

...略...

BANNER_FULL
________________________________________________________________________________
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.4.0.24.05
[oracle@localhost ~]$ cat version.sql
select banner_full from v$version;
exit


これ、ルーティーンになりそうw

ではまた。




MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702
ySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)
VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録


| | | コメント (0)

2024年5月31日 (金)

VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) / macOS/ARM64 Dev Previewがリリースされていたので、いつもの、起動確認と、Oracle Database 21cの起動時間比較を。
前回の記録は、VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)を見てもらうとして、結果的には大きくな変化なし!。

頑張って! :) 

oracle@Mac-Studio ~ % ./print_env.sh 

*** mac info. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** maxOS ver. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.0.97r163376

Oracle Database 21c Mac Studio M1

起動1回目 : 217sec
停止1回目 : 153sec
起動2回目 : 186sec
停止2回目 : 119sec


oracle@angelfish ~ % ./print_env.sh 

*** mac info. ***
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB

*** macOS ver. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** VirtualBox ver. ***
7.0.97r163376

Oracle Database 21c MacBook Air M2

起動1回目 : 138sec
停止1回目 : 108sec
起動2回目 : 128sec
停止2回目 : 83sec



20240531-81713

その他、いつもの起動確認。
PostgreSQL 13.14 / MySQL 8.0.36 / Oracle Database 21c 及び、 23ai 、それぞれ、VirtualBox TestBuild 7.0.97r163376 (024-05-28T15:08:56Z)でも起動した! (このあたりはマジで安定してきた)

oracle@Mac-Studio ~ % ./print_env.sh 

*** mac info. ***
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79

*** maxOS ver. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.0.97r163376

[master@localhost ~]$ cat /etc/*release*
Oracle Linux Server release 8.5
NAME="Oracle Linux Server"
VERSION="8.5"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.5"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.5"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:5:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.5
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.5
Red Hat Enterprise Linux release 8.5 (Ootpa)
Oracle Linux Server release 8.5
cpe:/o:oracle:linux:8:5:server
[master@localhost ~]$


PostgreSQL 13.14 - 起動した!

[master@localhost ~]$ sudo su - postgres
[postgres@localhost ~]$ psql -d perftestdb -U discus -p 5432 -W -h localhost
パスワード:
psql (13.14)
"help"でヘルプを表示します。

perftestdb=> select version();
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 13.14 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20), 64-bit
(1 行)

perftestdb=> exit


MySQL 8.0.36 - 起動した!

[master@localhost ~]$ mysql -u scott -D perftestdb -p -h 192.168.1.125
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.36 |
+-----------+
1 row in set (0.01 sec)

mysql> exit
Bye


Oracle Database 21c - 起動した!

[oracle@localhost ~]$ cat /etc/*release*
Oracle Linux Server release 8.4
NAME="Oracle Linux Server"
VERSION="8.4"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.4"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.4"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:4:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.4
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.4
Red Hat Enterprise Linux release 8.4 (Ootpa)
Oracle Linux Server release 8.4
cpe:/o:oracle:linux:8:4:server
[oracle@localhost ~]$
[oracle@localhost ~]$ sqlplus / as sysdba

SYS@ORCLCDB> select banner_full from v$version;

BANNER_FULL
-----------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SYS@ORCLCDB> exit


Oracle Database 23ai - 起動した!

[oracle@localhost ~]$ cat /etc/*release*
Oracle Linux Server release 8.9
NAME="Oracle Linux Server"
VERSION="8.9"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.9"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.9"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:9:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://github.com/oracle/oracle-linux"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.9
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.9
Red Hat Enterprise Linux release 8.9 (Ootpa)
Oracle Linux Server release 8.9
cpe:/o:oracle:linux:8:9:server
[oracle@localhost ~]$ sql scott/@192.168.1.138:1521/freepdb1


SQL> select banner_full from v$version;

BANNER_FULL
_______________________________________________________________________________
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.4.0.24.05

SQL>


これが、本当の5月最後の投稿ということでw

では、また。





MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702
ySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)

| | | コメント (0)

2024年5月 9日 (木)

VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 #2 / 7.0.97r163068 ( 2024-5-07T20:38:44Z )

2025-05-03にTestBuildが更新されていたわけですが、なんと、2024-5-07T20:38:44Zに更新されていました。(テストビルドって、月に何回更新されてるのだろう?...)

Oracle Database 23ai Free Developer、Oracle Database 21c EE 、MySQL 8.0.36 そして PostgreSQL 13.14
は問題なく起動(最近安定して起動するのでログは省略)。

ということで、Oracle Database 21cの起動、停止時間の記録だけメモしておきます。

起動停止時間は大きく変わってないように思います(ブレはある程度あるにしても)が、若干速くなってる気もしますね。特に、M1で。次のアップデートが楽しみですね。

Mac Studio M1

** macOS ver. ***
ProductName: macOS
ProductVersion: 14.4.1
BuildVersion: 23E224

*** mac info. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.0.97r163068

VirtualBox TestBuild 7.0.97r163068 ( 2024-5-07T20:38:44Z ) / Mac Studio M1

起動1回目 : 211sec
停止1回目 : 90sec
起動2回目 : 159sec
停止2回目 : 104sec

MacBook Air M2

*** macOS ver. ***
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB

*** mac info. ***
ProductName: macOS
ProductVersion: 14.4.1
BuildVersion: 23E224

*** VirtualBox ver. ***
7.0.97r163068

VirtualBox TestBuild 7.0.97r163068 ( 2024-5-07T20:38:44Z ) / MacBook Air M2

起動1回目 : 133sec
停止1回目 : 20sec
起動2回目 : 152sec
停止2回目 : 106sec

ではまた



Oracle Linux 8 and MySQL 8.0.32 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r160167
MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r160702
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)

| | | コメント (0)

2024年5月 7日 (火)

VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)

さて、ここのところVirtualBoxの話題が多いですが、安定して起動するようになったVirtualBox TestBuild for macOS/ARM64。気になるのも当然です。Intel Macいつ捨てるんだよって話もあるわけでw

 

という個人的な都合は置いておいてw

 

以下にも記載されているように、現状は、性能面含めた問題があることもあり、Intel版macのVirtualBoxと完全にお別れすることもできない状況ではあります。
https://www.virtualbox.org/wiki/Testbuilds “The test builds for macOS/ARM64 work in principle on Macs with M1, M2 or M3 CPU. However, they are developer previews with known issues (including serious performance ones) with all recent guest operating systems.”

 

ただ、最近のTestBuildでは安定して起動するようにところまで改善してきておりいつ正式リリースだろう。。。と気になってしょうがない状況ではありますwww

 

と、いうことで、
現時点のApple Silicon版VirtualBoxで安定して起動するようになったOracle Database 21c EEの起動停止速度をざっくり確認しておこうと思います。
(今後のVirtualBoxのリリースで、どう改善したのか確認するネタとしても大切なので)

 

起動提示時間の確認方法は、それぞれのmacで、同じ方法で行いました。

 

前提 同じVMをそれぞれインポートして実施
1. VirtualBoxのVMを起動(Oracleは自動起動にしていない)
2. LSNRCTL for Linuxの起動
3. Oracle Database 21cの起動
4. Oracle Database 21cの停止
5. Oracle Database 21cの起動
6. Oracle Database 21cの停止

 

を行い、どの程度の時間で起動停止できるのかメモっておいた。Apple SiliconのVirtualBoxもIntel版レベルに近づいて欲しいところではある。。。が現時点では桁が違いますね。。。

 

ただ、7.0.97r162957(2024/4/26)版のTestBuildと7.0.97r163029(2024/5/3)版のTestBuildだと、若干、7.0.97r163029(2024/5/3)版の方が速くなって気はしますよね。。。。若干ですが。

比較しやすいように、Intel版のVirtualBoxでも同様の手順で実施して記録を残しておきました。
VirtualBox TestBuild 7.0.97r162957(2024/4/26) / MacBook AIR M2

 起動1回目 : 303sec
停止1回目 : 77sec
起動2回目 : 147sec
停止2回目 : 77sec

 

VirtualBox TestBuild 7.0.97r163029(2024/5/3) / MacBook AIR M2

 起動1回目 : 140sec
停止1回目 : 78sec
起動2回目 : 128sec
停止2回目 : 57sec


VirtualBox TestBuild 7.0.97r162957(2024/4/26) / Mac Studio M1

 起動1回目 : 315sec
停止1回目 : 156sec
起動2回目 : 242sec
停止2回目 : 175sec


VirtualBox TestBuild 7.0.97r163029(2024/5/3) / Mac Studio M1

 起動1回目 : 182sec
停止1回目 : 101sec
起動2回目 : 206sec
停止2回目 : 111sec


VirtualBox 7.0.10r158379 / MacBook Intel

 起動1回目 :  20sec
停止1回目 : 42sec
起動2回目 : 13sec
停止2回目 : 36sec


VirtualBox 6.1.26r145957 / Mac Pro Intel

 起動1回目 :  22sec
停止1回目 : 35sec
起動2回目 : 14sec
停止2回目 : 38sec

 

 

以下、各ホストの情報
MacBook AIR M2 - VirtualBox TestBuild for Apple Silicon

*** macOS ver. ***
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB

*** mac info. ***
ProductName: macOS
ProductVersion: 14.4.1
BuildVersion: 23E224

*** VirtualBox ver. ***
7.0.97r162957

 

 

MacBook AIR M2 - VirtualBox TestBuild for Apple Silicon


...略...

*** VirtualBox ver. ***
7.0.97r163029

 

Mac Studio M1 - VirtualBox TestBuild for Apple Silicon

*** maxOS ver. ***
ProductName: macOS
ProductVersion: 14.4.1
BuildVersion: 23E224

*** mac info. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.0.97r162957

 

Mac Studio M1 - VirtualBox TestBuild for Apple Silicon


...略...

*** VirtualBox ver. ***
7.0.97r163029

 

 

MacBook Intel

*** maxOS ver. ***
ProductName: macOS
ProductVersion: 12.7.4
BuildVersion: 21H1123

*** mac info. ***
Model Name: MacBook
Processor Name: Dual-Core Intel Core m5
Processor Speed: 1.2 GHz
Number of Processors: 1
Total Number of Cores: 2
Memory: 8 GB

*** VirtualBox ver. ***
7.0.10r158379

 

Mac Pro Intel

*** maxOS ver. ***
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G9323

*** mac info. ***
Model Name: Mac Pro
Processor Name: 6-Core Intel Xeon
Processor Speed: 2.4 GHz
Number of Processors: 2
Total Number of Cores: 12
L3 Cache (per Processor): 12 MB
Memory: 32 GB

*** VirtualBox ver. ***
6.1.26r145957

 

 

 

手順例(参考)

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on 火 5月 6 16:07:02 2024
Version 21.3.0.0.0

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

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

16:07:02 SYS@ORCLCDB>
16:07:10 SYS@ORCLCDB> startup
ORACLEインスタンスが起動しました。

Total System Global Area 536867744 bytes
Fixed Size 9687968 bytes
Variable Size 360710144 bytes
Database Buffers 54525952 bytes
Redo Buffers 7086080 bytes
In-Memory Area 104857600 bytes
データベースがマウントされました。
データベースがオープンされました。
16:09:30 SYS@ORCLCDB>
16:10:27 SYS@ORCLCDB> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
16:11:35 SYS@ORCLCDB>
16:12:23 SYS@ORCLCDB>
16:12:23 SYS@ORCLCDB> startup
ORACLEインスタンスが起動しました。

Total System Global Area 536867744 bytes
Fixed Size 9687968 bytes
Variable Size 360710144 bytes
Database Buffers 54525952 bytes
Redo Buffers 7086080 bytes
In-Memory Area 104857600 bytes
データベースがマウントされました。
データベースがオープンされました。
16:14:31 SYS@ORCLCDB>
16:15:35 SYS@ORCLCDB> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
16:16:32 SYS@ORCLCDB>

 

少しずずIntel版の速度に近づいて欲しいものですね。VirtualBoxチーム頑張って〜〜〜っ!

 

 

では、また。

 


Oracle Linux 8 and MySQL 8.0.32 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r160167
MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r160702
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r161342
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957

| | | コメント (0)

2024年5月 4日 (土)

DTM / 4月に公開した曲

毎月のルーティーンw

 

4月に公開したループ一覧
4月に公開したループってシン仮面ライダーを見てなんとなく作ったやつなので、その影響を受けておりますw

 

 

Shin Grasshopper Loops Ver.2.3 / N + 1 Loops

シン仮面ライダーのトレイラーの音声をオフにしてこちらを再生してみると面白い?かもw

このループのオリジナルver.1は以下、映画見た後になんとなく作っただけで放置してたわけですが、Ver2.3との差に気づいていただければ幸いですw

 

こちらが元ネタw 2023/03/30公開
Grasshopper Loops Ver.2.3 / N + 1 Loops

 

 

Ver. 2.3を作った勢いに乗って、Voxトラックを適当に載せた、MAD MIX版も作ってみた。
Shin Grasshopper Loops Ver.2.3 (MAD MIX Ver.2) / N + 1 Loops - GarageBand Edit -

 

Enjoy! GarageBand / Apple Loops. :)

 

| | | コメント (0)

2024年4月 3日 (水)

DTM / 3月に公開した曲

さて月一のルーティーンになってますが、先月公開した曲リストです。

 

ここのところ公開済みの曲のメジャーやマイナーバージョンアップが多いですが、変えたいな〜と思ったタスクをこなしていく、アジャイルDTMな感じでやっているので、次にやることを決めて、次のスプリントでやっつける。ということで頻繁にマイナーアップデートしたりしています。最近んは旧バージョンを限定公開に変更していないのでw、ひとつ前のどうだっけ?というチェックもできるようにしてあります:)

 

Funk N + 1 Loops ver.2 / N + 1 Loops
先々月に公開した曲のメジャーバージョンアップ



 

Autumn Loops 2024 / N + 1 Loops
これはGarageBandいい感じに進化したねー。と遊び始めた2022年になんとなくファンキーな感じで!と作った曲のメジャーバージョンアップです。あえて、Ver.2にせず、2024にしてみたw。



 

O(N) Loops ver. 1.3 / N + 1 Loops
昨年なんとなくループを置いていたらできてしまった曲ですが、久々に見た4 Produces 1 SampleでSo glitchy!って単語が飛び交ってるたので、glitchy!でこの曲みたいなタイプだよなー。と思い出してマイナーバージョンアップw



 

最後に、ここ半年ぐらいのまとめ的なやつ。今年後半にもまとめる予定ではありますが:)

 

N + 1 Loops 2024 Best GarageBand DTMs / N + 1 Loops

 

以下のループをまとめています
00:00 - Funk N + 1 Loops Ver.2
01:59 - Autumn Loops 2024
03:59 - Funky Groovy Loops Ver.1.1
05:58 - Moire Loops Dub version Ver. 1.1
07:57 - XYZ Loops Ver.2
10:07 - 80's Loops Ver.2
12:03 - Sunny Rain Loops Ver.3 - "Dub Version of Sunset Loops"
14:07 - Fireworks Loops
16:07 - A Fine Autumn Day Loops Ver. 2
18:10 - Loops in Clouds Ver.3
20:05 - Rain Loops
22:04 - City Lights Loops
24:06 - Memory Loops - Ver. 1.1
26:06 - Heartbeats Loops
28:05 - 他力本願 Loops
30:07 - O(N) Loops Ver. 1.3

では、また。

| | | コメント (0)

2024年3月 7日 (木)

DTM / 2月に公開した曲

さてさて、毎年の義務的な事務作業が終わり落ち着いたのでw

2月に公開したDTM

Funk N + 1 Loops / N + 1 Loops

実は、ver.2を作っているのだけどw アジャイルDTMなのでw


| | | コメント (0)

2024年2月 3日 (土)

2024年1月にリリースしたDTM / N + 1 Loops

2024年1月のDTMリリースw 普段より多め。理由は、マイナーアップデートが多かったから。
アジャイルDTMならではの短期間でのアップデートもあったり。。。

 

Moire Loops Dub version Ver. 1.1 / N + 1 Loops
ベースのループを入れ替えたり、Vox系を追加したり、よりFunk感を強くしてみたマイナーアップデート。

 

 

A Fine Autumn Day Loops Ver. 2 / N + 1 Loops
こちらは思い切って色々変えてみたメジャーアップデートですが、多分あと二回ぐらいスプリント回したい気分ではあるw

 

 

Funky Groovy Loops - Ver. 1.1 / N + 1 Loops
いきなりマイナーアップデートですが、実は、すでに限定公開にしてしまっている、Ver. 1.0リリース後、1週間経ほどでリリースしたマイナーアップデートw 

 

Memories Loops - ver. 1.1 / N + 1 Loops
そして、4曲めは、リリース後、一年経過してたのですが、ベースを再チョップし多少変えたり、サビのVoxループを最後まで引っ張ってみたり、気づかないかも仕入しれないですけども。マジで、マイナーアップデートです。

 

 

では、DTMネタは、また来月ということで、

 

Enjoy DTM! :)

 

| | | コメント (0)

2024年1月27日 (土)

MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342

2024年最初のエントリーは、
VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161342がアップされていたので、いつもの定点観測です。

結果から言うと、OS起動から、MySQL, PostgreSQLまでは起動する状態にはなっています。最近は、OS毎クラッシュしたかと思うと次のテストビルドでは起動するようになったり、なかなか状況は安定していません。また、Oracleですが、今の所一度も起動せずでした。

20240127-111838
20240127-112626

グラフィックコントローラーの3Dアクセラレーションを有効化は、OFFにしておいたほうが現状は良さそうです!
20240130-203635
20240130-203646

久々なので環境情報から
MBA M2とVirtualBox Test Buildは以下の通り

oracle@catfish ~ % sw_vers 
ProductName: macOS
ProductVersion: 14.3
BuildVersion: 23D56
oracle@catfish ~ % /usr/sbin/system_profiler SPHardwareDataType | grep -E '(Processor|Cores|Memory|Chip|Model Name)'
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB
oracle@catfish ~ % VBoxManage -v
7.0.97_BETA5r161342

[master@localhost etc]$ cat *release*
Oracle Linux Server release 8.5
NAME="Oracle Linux Server"
VERSION="8.5"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.5"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.5"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:5:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.5
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.5
Red Hat Enterprise Linux release 8.5 (Ootpa)
Oracle Linux Server release 8.5
cpe:/o:oracle:linux:8:5:server
[master@localhost etc]$ uname -a
Linux localhost.localdomain 5.4.17-2136.304.4.1.el8uek.x86_64 #2 SMP Tue Feb 8 11:54:24 PST 2022 x86_64 x86_64 x86_64 GNU/Linux

MySQLは以下の通り起動しました。

[master@localhost ~]$ sudo service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-01-26 21:25:04 EST; 8min ago
Process: 1699 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 1079 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
Process: 1027 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 1123 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 22947)
Memory: 402.6M
CGroup: /system.slice/mysqld.service
└─1123 /usr/libexec/mysqld --basedir=/usr

...略...

[master@localhost ~]$ mysql -u scott -D perftestdb -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.32 |
+-----------+
1 row in set (0.00 sec)

mysql> exit
Bye
[master@localhost ~]$ sudo service mysqld stop
Redirecting to /bin/systemctl stop mysqld.service
[master@localhost ~]$ sudo service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Fri 2024-01-26 21:34:39 EST; 5s ago
Process: 2914 ExecStopPost=/usr/libexec/mysql-wait-stop (code=exited, status=0/SUCCESS)
Process: 1699 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 1123 ExecStart=/usr/libexec/mysqld --basedir=/usr (code=exited, status=0/SUCCESS)
Process: 1079 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
Process: 1027 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 1123 (code=exited, status=0/SUCCESS)
Status: "Server shutdown complete"

...略...

PostgreSQLも以下の通り起動した

[master@localhost ~]$ sudo service postgresql-13 status
Redirecting to /bin/systemctl status postgresql-13.service
● postgresql-13.service - PostgreSQL 13 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/postgresql-13.service.d
└─local.conf
Active: active (running) since Fri 2024-01-26 21:24:01 EST; 12min ago
Docs: https://www.postgresql.org/docs/13/static/
Process: 1033 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 1060 (postmaster)
Tasks: 9 (limit: 22947)
Memory: 23.3M
CGroup: /system.slice/postgresql-13.service
├─1060 /usr/pgsql-13/bin/postmaster -D /pg/pgdata/data
├─1080 postgres: logger
├─1127 postgres: checkpointer
├─1128 postgres: background writer
├─1129 postgres: walwriter
├─1130 postgres: autovacuum launcher
├─1131 postgres: archiver
├─1132 postgres: stats collector
└─1134 postgres: logical replication launcher

...略...

[master@localhost ~]$ sudo su - postgres
[postgres@localhost ~]$ psql -d perftestdb -U discus -p 5432 -W -h localhost
パスワード:
psql (13.6)
"help"でヘルプを表示します。

perftestdb=> select version();
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 13.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4), 64-bit
(1 行)

perftestdb=> exit
[postgres@localhost ~]$ exit
ログアウト
[master@localhost ~]$ sudo service postgresql-13 stop
Redirecting to /bin/systemctl stop postgresql-13.service
[master@localhost ~]$ sudo service postgresql-13 status
Redirecting to /bin/systemctl status postgresql-13.service
● postgresql-13.service - PostgreSQL 13 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/postgresql-13.service.d
└─local.conf
Active: inactive (dead) since Fri 2024-01-26 21:37:12 EST; 5s ago
Docs: https://www.postgresql.org/docs/13/static/
Process: 1060 ExecStart=/usr/pgsql-13/bin/postmaster -D ${PGDATA} (code=exited, status=0/SUCCESS)
Process: 1033 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 1060 (code=exited, status=0/SUCCESS)
...略...

残念ながら、今回のテストビルトでも、Oracleは起動せず。リスナーはいつも通り起動しますが。

[oracle@localhost ~]$ lsnrctl start

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 27-1月 -2024 12:01:04

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

/opt/oracle/product/21c/dbhome_1/bin/tnslsnrを起動しています。お待ちください...

TNSLSNR for Linux: Version 21.0.0.0.0 - Production
システム・パラメータ・ファイルは/opt/oracle/homes/OraDBHome21cEE/network/admin/listener.oraです。
ログ・メッセージを/opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 21.0.0.0.0 - Production
開始日 27-1月 -2024 12:01:04
稼働時間 0 日 0 時間 0 分 1 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル /opt/oracle/homes/OraDBHome21cEE/network/admin/listener.ora
ログ・ファイル /opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。
[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on 土 1月 27 12:01:09 2024
Version 21.3.0.0.0

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

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

SYS@ORCLCDB> startup
ORA-03113: 通信チャネルでend-of-fileが検出されました


もう一息なのかどうかわかりませんが、Oracleも起動してくれることを、期待しつつ、定点観測は続く :)
今年中に起動するようになってくれると嬉しいですよね。

ではまた:)



Oracle Linux 8 and MySQL 8.0.32 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160167
MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702

| | | コメント (0)

2023年12月24日 (日)

12月リリースのDTM / N + 1 Loops

多分、2023年最後の投稿w

少々早めですが、12月リリースのDTM

ここのところアジャイルDTMでリリースした曲のメーじゃバージョンアップが多いわけですが、今月はAdvent Calendarなどもありw
この一曲だけ:)

XYZ Loops をVer.1 -> Ver.2 にメジャーアップデートですw
Ver.1 はシンセ中心でしたが、なんか物足りんと、やはりリズムセクション含めファンキーな方向に変えて、本年の締めとさせていただきます:)

XYZ Loops Ver.2 / N + 1 Loops


ちなみに、Ver.1 はこんなでしたw かなり変えてます


このVer.1 からベースとか一旦なしにして、どう雰囲気変えるかを延々と一ヶ月ぐらい試行錯誤してました:)


で、昨日やっと。。ドラムとかベースと追加したギターもなんとなく、迷走から抜け出した感じで。と。

(GarageBand プロジェクトの動画です)

では、メリークリスマス & 良いお年をお迎えください。

| | | コメント (0)

2023年12月 3日 (日)

11月にリリースした曲 / DTM / GarageBand / N + 1 Loops

11月はこの2曲をリリース:)

80' Loops Ver.2 / N + 1 Loops

Ver.2ってくらいなので、Ver.1 ( 80' Loops ) はあってw 昨年末にリリースしてたのですが、アジャイルDTMなので、変えたいところがあるとバックログに貯まるわけで、それをやっつけたら、こうなったというところ。

BASSをre:Chopしまして、最初と後半にアドリブ的な部分としてslapな感じを追加して、Voxもちょっと追加。
フリー動画もクロマキー加工部分追加(うまくできないところはそのままですがw)

できれば、Dua LipaのDance The Nightみたいな、ちょっと割れ気味のBASS音にしたいなというバックログを積んだ状態にはなってますが、一旦これで:)

XYZ Loops / N + 1 Loops

シンセサイザー中心でループを集めてたら、あ〜、なんか、XYZな雰囲気のイメージが浮かんだので、その勢いで作った曲。
すでに、バックログ積んで、ベースライン変えたいかもなぁという、ボヤ〜〜〜〜んとした雰囲気だけが残っていますw


昨日散歩したお寺が、ベストタイミングで、色づいた木々が最高に映えていた。手入れの行き届いた境内って落ち着く。
では、また:)

| | | コメント (0)

2023年11月17日 (金)

Oracle Linux 8 and MySQL 8.0.32 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160167

ということで、ちょっと一休み的なネタです。

Apple Silicon対応はほぼ諦めていたVirtualBoxが 7.0でBETA版をリリースして大喜びしてたわけですが、
7.0.12でも正常に起動してくれないですよね。まだ。
ただ、表には出てこないですが、Test Buildでは結構進んでいるようで、嬉しいお知らせです。:)

まだ、Oracle Databaseとかは起動しないようですが、最新のTest Buildをダメ元で試してみたら、Oracle Linux 8とMySQL 8.0.32の組み合わせならDBのお遊びに使えそうな状況(次のBuild ではどうなるかわかりませんが)であることに気づきました。確実に進捗してそうで一安心。

新規VM作成ではなく、以下の手順で簡易に確認してみました。

macOS/Intel MBAのVirtualBoxにて、以下、2つのovaを作成し、M2 MBAのTest Build最新版のVirtualBoxへインポートして動作するかどうかを確認

1) Oracle Linux 8 に、PostgreSQL 13.4 と MySQL 8.0.32 を構成したVMをエクスポートして ova 作成
2) Oracle Linux 8 に、Oracle 23c Free Developer Editionを構成していたVMをエクスポートして ova 作成

結果は、
1)のMySQLは起動成功
1)のMySQLは起動成功
PostgreSQLは起動できず。
2)はOSは起動したがOracle起動中にエラーでVM停止

という状況。

でも、MySQL 8.0.32が、M2 MBAのVirtualBoxで使えるようになっているのはかなりの進捗なのではないかと思います。そもそもApple SiliconでVirtualBoxインストールできなくなったりしていた悲しい時期から比べれば。
いずれ、Oracleが起動するようになってくれることを期待しつつ。。Advent Calendarの記事を考えよう :)

 

以下、軽めの確認ログとスクリーンショットなど。

VirtualBox Test Build 7.0.97 BETA5
20231117-30344

OVAインポート成功後、OSは正常に起動したものの、PostgreSQL 13.4 は起動失敗。 MySQL 8.0.32は起動成功!。
Pg_ng_mysql_ok

Oracle Database 23c Free Developer Editionを構成したovaインポート後、Database起動中にfatal errorでVM停止。惜しいね。

 20231117-122036

MySQL 8.0.32 on Oracle Linux 8.5 on VirtualBox Test Build 7.0.97 BETA5 for macOS/M1/M2でMySQLへ接続!
Mysql-8032

 



 

VirtualBoxホストの情報 M2 MBAです。

leaffish ~ % /usr/sbin/system_profiler SPHardwareDataType | grep -E '(Processor|Cores|Memory|Chip|Model Name)'
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB


VirtualBoxは、Text Build最新(17-Nov-2023)

VirtualBox test builds
https://www.virtualbox.org/wiki/Testbuilds より、macOS/ARM64 BETAとExtension Packを利用

leaffish ~ % VBoxManage -v
7.0.97_BETA5r160167

 

M2 MBAのTerminalからsshでローカルのVMへ。 M2 MBAのVirtualBox Guest OSは、Oracle Linux 8.5 です。起動してますね!

leaffish ~ % ssh master@192.168.1.117
master@192.168.1.117's password:
Activate the web console with: systemctl enable --now cockpit.socket

[master@localhost ~]$
[master@localhost ~]$ cat /etc/oracle-release
Oracle Linux Server release 8.5

[master@localhost ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)
[master@localhost ~]$

 

起動しているのは確認できましたが、MySQLへ接続してSQLを実行するまでが確認!
おおおおおおおおーーーーーーっ!。

MySQL 8.0.32 on Oracle Linux 8.5 on M2 MacBook Air VirtualBox 。Oracle Databaseではないけど、うれしくて涙が。。。出ますね。これ。

[master@localhost ~]$ mysql -u scott -D perftestdb -p 
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| perftestdb |
+--------------------+
3 rows in set (0.02 sec)

mysql> show tables;
+----------------------+
| Tables_in_perftestdb |
+----------------------+
| detail |
| hoge |
| master |
| t0 |
| t1 |
| t1017 |
| t1017_2 |
| t2 |
| t3 |
| t4 |
+----------------------+
10 rows in set (0.07 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.32 |
+-----------+
1 row in set (0.00 sec)

mysql> select * from t1;
+----+-------+
| id | t1_c1 |
+----+-------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | 10 |
+----+-------+
10 rows in set (0.04 sec)

mysql> exit
Bye

 

ついでなので、停止も試しておきましょう:)

[master@localhost ~]$ sudo service mysqld stop
[[sudo] master のパスワード:
Redirecting to /bin/systemctl stop mysqld.service
[master@localhost ~]$ sudo shutdown -h now
Connection to 192.168.1.117 closed by remote host.
Connection to 192.168.1.117 closed.
leaffish ~ %

 

週末天気悪そうで、Walkingできないかもしれない。。..

 

では、また。

 

 

 

| | | コメント (0)

2023年11月 2日 (木)

DTM / GarageBand (N + 1 Loops ) : 10月にリリースした曲

10月にリリースしたDTM New Song.

ということで、コンスタントにリリースしているアジャイルDTMですが、先月は、REI HARAKAMIを聴いてたら、それっぽいのを作りたくなって2曲作りました。1曲はドラムトラックを再利用したDub Versionですが。。。。:)


Sunny Spot Loops / N + 1 Loops


Fallen Leaves Loops - Dub Version of Sunny Spot Loops / N + 1 Loops

では、また、来月の新曲をお楽しみに〜。

| | | コメント (0)

2023年10月 1日 (日)

DTM/GarageBand (N + 1 Loops ) : 9月にリリースした曲

ということで、アジャイルDTMのルーティーンw

DTM/GarageBandでリリースした曲、勝手にベスト!に加えて、3曲。
GarageBandのLoopのVocoderやVOXが多く追加されていた(気づかなかっただけかも)ので、先月は、コーラスやらラップっぽいVoiceを多めに使って作ったものが多いです。ライブラリにLoopが追加されるとそれを利用した何かを作りたくなりますよね。。。;)

昨年暮れの曲も含め9月までの曲をベストにまとめてみたw 2023/09/6公開



Heartbeats Loops / N + 1 Loops - 2023/09/12公開
この曲、High Way Loops / N + 1 LoopsのDrum trackを再利用しているのでHigh Way Loops / N + 1 LoopsのVer.2でも良かったのだけどねw アジャイルDTMなので気になってるところがあると後でメジャーアップデートしたりマイナーアップデートしたりを繰り返しますw



ということで、次の曲もアジャイルDTMっぽい、Snow Loops Ver. 1Ver.2 メジャーアップデートした少し後に、Ver. 2.1へマイナーアップデートしましたw

Snow Loops Ver. 2.1 / N + 1 Loops - 2023/09/24公開


最後は、秋晴れで思いついた曲w (合計3時間ぐらいで作りました)

A Fine Autumn Day Loops / N + 1 Loops - 2023/09/30公開



macOS Sonomaがリリースされたので、GarageBandのループライブラリに何か落ちてこないかなぁ。新しいループが。。と思いつつ。
10月も何曲か作ると思いますw

最近フリー映像に合わせた動画より、GarageBandのプロジェクト画面のアクセスが多い傾向が見えるので、まじのMaking映像の方が良いのかもしれないというか、そういうのも一度作ってみるかと思い始めているが、思い始めただけなので、やるとは言ってないw

ということで

では、また。

Enjoy DTM!

| | | コメント (0)

2023年9月 2日 (土)

DTM/GarageBand (N + 1 Loops ) : 8月にリリースした曲

ということで、最近のルーティーンw

DTM/GarageBandでリリースした曲、いつもより多めでしたwww


Jangly Loops / N + 1 Loops - 2023/08/05

ジャングル的なイメージのリズム作りたくて試行錯誤してて何となくできちゃったやつですねw EDMはEDMですけど、最初にイメージしてたのとは違うというよくある結果にw




Savannah Loops / N + 1 Loops - 2023/08/10

ジャングル的なイメージがまだ残っててw、さらに何となくループを置いていたら前のよりいい感じのジャングル感というかサバンナ感になりましたw




Nested Loops - Ver 2 / N + 1 Loops - 2023/08/13

以前公開してた Nested Loops / N + 1 Loopsにかなり手を入れて作り直した?w Version.2. アジャイルDTMなので、気になってるところは残ったまま公開しつつ、後で手を入れて公開し直すのもありということで。




Fireworks Loops / N + 1 Loops - 2023/08/17

ファンク的なところに戻ってきて、夏は花火よな〜と思いながら、スネアの単音にバーーーんって感じのスペース感追加w




Sunset Loops / N + 1 Loops - 2023/08/23

これのベースラインというかリズムセクション作ってる途中でこれを元にDub Version作れそうって思いつつ、夕陽的なイメージにして先に仕上げた曲




Sunny Rain Loops Ver 3 - "Dub Version of Sunset Loops" / N + 1 Loops - 2023/08/31

これ、Version.3なので、3回公開し直してますw ベースラインのチョップし直しがメインなのですが、Ver.1/2もMakingのPlaylistには限定公開で貼り付けてるので、気になる方は聞いてみくださいw 気にならんかもしれないですがw




8月は本業もそれなりに忙しかったのに、なんでこんなに曲作ってるんだ、俺。

と思いつつ、9月になっていたのに気づいたので、やっぱり、それなりに忙しいんだな。w

| | | コメント (0)

2023年8月 3日 (木)

DTM/GarageBand 7月のTop5 / N + 1 Loops

さて、恒例の? My DTM/GarageBand - N + 1 Loops、7月のTop5

(下位の方は色々動いてるんだけど、それらが上位に上がってこないと、変化しにくいw 6位以降はかなり入れ替わってきたけど)


1. Rain Loops / N + 1 Loops - 1,093回
2. Memories Loops / N + 1 Loops - 713回
3. Loops in Clouds / N + 1 Loops - 673回
4. Waterfall Loops - Dance Edition / N + 1 Loops - 524回
5. Number Of Loops - Club Edition / N + 1 Loops - 475回


Rain Loops / N + 1 Loops


Memories Loops / N + 1 Loops


Loops in Clouds / N + 1 Loops


Waterfall Loops - Dance Edition / N + 1 Loops


Number Of Loops - Club Edition / N + 1 Loops



6位以下は、Playlistで。


鎌倉にいい感じの古民家コワーキングスペースを見つけて、行ってきたんだけど、たまたま、終日私だけで、貸切みたいで最高だった:)

では、また

| | | コメント (0)

DTM/GarageBand : 7月にリリースした曲

ということで、最近のルーティーンw

DTM/GarageBand : 7月にリリースした N + 1 Loops の曲

Warm Breeze Loops / N + 1 Loops - 2023/07/02

クリアなブラスのLoopをちょっとラスティーな感じできないのかなぁ。とおもってて、以前試したディストーションをかけてみたら、それなりの感じに:)


High Way Loops / N + 1 Loops - 2023/07/07

前曲同様、サックスにディストーション効かせた実験。クリアな音のブラス系ループが多いので、ディストーション効かせると渋さがでてきてよさげな感じできることは理解したw


他力本願 Loops / N + 1 Loops - 2023/07/22

Spotify聴いてたら、お経みたいなのに音を被せている面白い曲があって、それ聴いたとたん、作られねば!
と、フリーのお経音源を探して作ってみた曲w
DTMって、この手の遊びが面白い。


あと、お遊びといえば、Beat Saberやってる動画をまんまアップすると色々面倒くさいので、DTMで作った曲に置き換えてみた。
このBeat Saberの曲特に何もかんがて無いくて、Beat Saber向けの音置き換えぐらいの気持ちしかないので、特にN + 1 Loopsにはしてないのだけども、一応

元は、Beat Saber - Week End Die for You remix / Export modeとExpert+ modeのなのですが、音だけDTMで作った曲に変えて動画に合わせています:)

muggy 過ぎるよな最近の日本
では、また。

| | | コメント (0)

2023年7月 3日 (月)

DTM/GarageBand 6月のTop5

さて、恒例の? My DTM/GarageBand - N + 1 Loops、6月のTop5

(下位の方は色々動いてるんだけど、それらが上位に上がってこないと、変化しにくいw)

1. Rain Loops / N + 1 Loops - 1,069回
2. Memories Loops / N + 1 Loops - 703回
3. Loops in Clouds / N + 1 Loops - 656回
4. Waterfall Loops - Dance Edition / N + 1 Loops - 522回
5. Number Of Loops - Club Edition / N + 1 Loops - 474回

Rain Loops / N + 1 Loops

Memories Loops / N + 1 Loops

Loops in Clouds / N + 1 Loops

Waterfall Loops - Dance Edition / N + 1 Loops

Number Of Loops - Club Edition / N + 1 Loops

6位以下は、Playlistで。
20230703-91553

そろそろ、Oracleネタもアップし始める準備始めるよw

| | | コメント (0)

DTM/GarageBand : 6月にリリースした曲

ということで、最近のルーティーンw

DTM/GarageBand : 6月にリリースしたN + 1 Loopsの曲

Stream Loops / N + 1 Loops - 2023/06/09
ループ再生で、かつ、STARBUCKS MUSIC的な何かを目指してたら、こうなったw

City Lights Loops / N + 1 Loops - 2023/06/15
ループ再生で、かつ、STARBUCKS MUSIC的な何かエモい感じを目指して2曲目を作ってたら、こうなったw

Orbit Loops / N + 1 Loops - 2023/06/22
ドラムバシバシな感じのは気持ちいいよなーと、思ってなんとなくできてしまったパターン

Blue Note Loops / N + 1 Loops - 2023/06/24
GarageBandって、カテゴリーで絞ると纏まったLoopsがあってそれらをパタパタ置いていくだけで曲になってしまうセットも幾つか存在します。これは Jazzでカテゴリー選択して出てくるLoopsを適当に並べて、トランペットとかフルートも適当に置き、チョップは最小限にして、6/8でドラムトラックを生成したもの。制作時間30分ほど。こういう、ほぼループ置いただけで何もしてないのも面白いですね。

蒸し暑すぎて、ほんと日本かという感じの日々。では、また。

| | | コメント (0)

2023年6月 5日 (月)

DTM/GarageBand 5月のTop5

さて、恒例の? My DTM/GarageBand 5月のTop5

 

上位が強くてなかなか、ランキングが変わらない(下位の方は色々動いてるんだけど、それらが上位に上がってこないとなぁw)

 

Top1
Rain Loops / N + 1 Loops (949回)
自分でもiTuneじゃなくてMusicでヘビロテしてる。安定の1位

 

Top2
Memories Loops / N + 1 Loops (619回)
リズムセクション。特に後半がお気に入り:)

 

Top3
Loops in Clouds / N + 1 Loops (587回)
いつもより余計に回ってる?みたいなヘルプがあると、これ聞いて分析コメント書いてるw

 

Top4
Waterfall Loops - Dance Edition / N + 1 Loops (497回)
Dance Editionじゃない方はあまり伸びてないから、ドラム入れたのが良かったんだろうね。。

 

Top5
Number Of Loops - Club Edition / N + 1 Loops (460回)
奥様から、イントロのところは1,2,3...なのに、途中から1,2,4,8なの?、と聞かれ、え、それ気分で入れてるし、Club Editionじゃないのが元なので、そっちは、よりMatrix的なというかComputer的なイメージの動画なので、2進数みたいな。1,2,3、出だしのカウントだから自然かなぁと。。。で、奥様は、「わからん。」と。はいはい、いいんですよ。それでもw

 

 

その他の曲はプレイリストからどうぞ。

 

ということで、そろそろ、Oracleネタも再開しますよーー。最初はFAQ的なところから、最近、先祖帰りしたような、え、そこ!みたいなことが多くて、10年も経つと一周しちゃうのかしら、それとも。。なんて思いながら、改めて書いておこうかという、ネタからにしようかと思っているところ。
知ってる人は、大丈夫ですよ。脊髄反応でやっているだろうから。。。w

 

ではでは。

| | | コメント (0)

2023年6月 1日 (木)

DTM/GarageBand : 5月にリリースした曲

(Oracle ACEのKPI評価期間が切り替わる時期なので、Mac絡みのネタ多めですw)

 

ということで、DTM/GarageBand : 5月にリリースした曲

 

Moire Loops / N + 1 Loops

リズムセクションを作った後に適当にループを置いて行ったらこんな感じに。矩形波よりの音にしたらよりSHAKATAKっぽくなったかもね。

 

Moire Loops - Dub Version / N + 1 Loops

Moire Loops で使ったリズムセクションはファンクっぽい雰囲気もあるので、Dub Version化。ベースはチョップしまくって、落としたり、入れ替えたりしてますが、基本的な部分はMoire Loops と共通。リズムセクションに乗せる音で随分変わりますね。

 

Night Loops / N + 1 Loops

Moire Loops / N + 1 Loopsで、SHAKATAK風味になった影響かw。これは、完全にSHAKATAK風味に持っていきたくて、最終的にこうなった。

 

Jazzy Loops #2 / N + 1 Loops

Smooth Jazz風な路線に行くと、眠くなって飽きちゃいそうだったのですが、そういうのも作りたいなぁ。と思うところもありw
その一発目?w で GarageBandのLoop Libraryをjazzでフィルタして出てきたLoop(意外に少ないw)だけで、1時間ぐらいで作ってみたらこうなってしまった。

 

ということで、5月の俺々DTM Top5は、明日にでも。

もう今年も半分ほど()終わっちゃいましたね。

ではまた。

 

 

| | | コメント (0)

2023年5月 3日 (水)

DTM/GarageBand - 4月のTop5

GW、朝から渋滞30km以上のニュースを聞きつつ、それにハマらないように色々避けることができて、時間を無駄に溶かしてない作戦は正解だったなぁと思いつつ。

4月のN + 1 LoopsのTop5ランキングです。

1位 - Rain Loops / N + 1 Loops(883回/現時点)
自分でもこのリズムセクションいい感じにできた気がしてる。基本的にGarageBandの自動生成ドラムトラック(タイプは選んでいます)に別トラックで加工したスネアやハイハットなどを組み合わせてます。



2位 - Memories Loops / N + 1 Loops(562回/現時点)
先月2位に浮上してからも安定して2位キープ。これもリズムセクションが想定していたよりいい感じになった。後半は聞こえにくいけどリズムの強調にパーカッションのトラックが入ってます。GarageBand Editの動画をみてもらうとわかりやすいと思います:)



3位 - Loops in Clouds / N + 1 Loops(546回/現時点)
Cloud環境はマイグレーションしてもぐるぐるはついてくるのね〜、ぐるぐるが避けられないのならリソースもっと上手く使い切ってコストさげるとか全体の処理時間削減も考えましょう、という、なかなか届かない想いを込めて!?



4位 - Waterfall Loops - Dance Edition / N + 1 Loops(485回/現時点)
この曲自体は、Deep Forest with Peter Gabriel - While The Earth Sleepsみたいな曲作りたいなーと思って、ゴニョゴニョしてたらできた曲にスネアのセクション追加してDance EditionにしたVersionの曲で、森林とか滝がイメージに浮かんだのでWaterfallってタイトルに使ってます。Waterfallディスってる曲ではないですw はい。



5位 - Number Of Loops - Club Edition / N + 1 Loops(440回/現時点)
これも4位同様Dance Editionにはフリー映像がそれっぽい編集になっているだけで、Dance Editionと基本的には同じ曲。KraftwerkのComputer Worldっぽい感じのなにかとか軽くイメージしながら作ったやつです。



その他の曲はプレイリストからどうぞ。

ということで、Enjoy GW!

| | | コメント (0)

DTM/GarageBand : 4月にリリースした曲

1月後半から、3月初旬ぐらいまで、急性低音障害型感音難聴と診断されて、DTMを控えていた影響なのか、回復したら色々調子に乗り過ぎ、4月は週一で1曲リリースしてしまったw

ちなみに、この急性低音障害型感音難聴っては、加齢とかそいうの関係ないらしく、はっきりした原因は掴めていないものの、疲れとか、睡眠不足とかいろいろあって内耳で起こる病らしい。対処療法的な投薬で解決する人も多いらしく、自分の場合は投薬としっかり睡眠をとって、耳に過度なw 負荷を与えないようにしていた。おかげで、低音部分の聴力も回復してほっとしているところ。

で, 調子にのって週一でリリースしてしまった曲は以下。

4/7リリース(128回視聴/現時点) - O(N) / N + 1 Loops
YMO関連の悲しいニュースが多かったのでテクノ方面かつ、YMOのドラムの加工音(とくにスネア)が好きすぎて、そいう感じの何かをつくりたくなった。その1の曲



4/16リリース(150回視聴/現時点)- Turquoise Loops / N + 1 Loops
久々にファンク風味の曲が作りたくなったので。:)



4/23リリース(104回視聴/現時点)- Single Thread Loop / N + 1 Loops
YMO関連の悲しいニュースが多かったのでテクノ方面かつ、YMOのドラムの加工音(とくにスネア)が好きすぎて、そいう感じの何かをつくりたくなった。その2の曲



4/26リリース(98回視聴/現時点)- Single Thread Loop - Dub Version / N + 1 Loops
YMO関連の悲しいニュースが多かったのでテクノ方面かつ、YMOのドラムの加工音(とくにスネア)が好きすぎて、そいう感じの何かをつくりたくなった。その3の曲。4.23リリースのDub versionで、ドラムをより意識してみたのと、細野さんのeBass風なのを意識してみた。



4月のTop5ランキングは別記事にて。

では。




| | | コメント (0)

2023年4月 1日 (土)

N + 1 Loops / GarageBand DTM ランキング / Mar. 2023

毎月恒例になりそうな。N + 1 Loops DTMランキングw

 

N + 1 Loopsは、GarageBandのAppleLoopをそのまままたは、チョップして入れ替えたり、捨てたりして作る。
打ち込み無しのツラミもあるが、そこが工夫のしどころで面白い。GarageBand付属のPluginもまだ全て試したわけではないので、色々遊べそうではある。

 

では、3月のランキング

 

1位 安定の Rain Loops. 自分でもいい感じでできたやつ。 / 843

 

2位 なんと! リリースから2ヶ月でjump upしてきた Memories Loops. リズム作り込むの頑張ったやつ / 519

 

 

3位 ランクダウン! Loops in Clouds. ぐるぐる系バッチ処理はどこに行ってもぐるぐる系みたいなテーマ曲w。 そういうニュアンスは1bitも感じない曲ではありますがw たまたま Cloudに行ってもぐるぐるしたいのか。CPU沢山あるのに、1CPU張り付かせて何時間も課金させるのかと。という相談受けてた時に作ったのでタイトルが、そうなってしまったという曲です。はいw / 514

 

 

4位 2月と変わらず4位。意外と安定してるw / 476

 

5位 Number Of Loops. 2月と変わらず5位。 / 434

 

6位以下はplaylist見てね

 

| | | コメント (0)

2023年2月28日 (火)

N + 1 Loops / GarageBand DTM ランキング / Feb 2023

Mac De Oracle 2022年最後のエントリーは、MacネタというかDTMネタで :)

あれから2ヶ月ということでw その後に追加した曲も含めたランキング

5位
Number Of Loops - Club Edition / N + 1 Loops / 416回再生

4位
Memories Loops / N + 1 Loops / 418回再生


3位
Waterfall Loops - Dance Edition / N + 1 Loops / 455回再生


2位
Loops in Clouds / N + 1 Loops / 476回再生


1位
Rain Loops / N + 1 Loops / 799回再生

| | | コメント (0)

2023年1月14日 (土)

GarageBand/DTM/AppleLoops - また勢いで作ってしまったw

テレビ東京で放送された「復讐の未亡人」をNetflixで一気見した後に勢いで作ったGarageBandのApple LoopsとChopで打ち込みなしで作った16曲目w

ドラマの影響まんま受けたので、まあ、そんな感じになっております(Studio DisplayのスピーカやBOSE Sound Link IIとかイヤホンだとそうでもないけど、MBAのスピーカだとVOX系の音のエコーというか音が目立ちすぎるのに後で気づいた。いろんなスピーカー特性を気にしつつ、いい感じの音にするのって難しいなあぁと思ったりした)

GarageBandの画面の映像はこちら。
イントロのベルは、1音毎にチョップして、左右に振り分けるようにした。

| | | コメント (0)

2022年12月31日 (土)

Mac De Oracle 2022年最後のエントリーは、MacネタというかDTMネタで :)

3ヶ月前から、GarageBandのAppleLoopsとそれをチョップするだけで作り上げるDTMみたいなことにハマってましてw (打ち込みとかMIDIを利用した録音もなし)

YouTubeで N + 1 Loops と言う性能に関わっている方ならピクっとするような名で、12曲(テスト含めるともっとありますが)リリースしました。(帰ってきた! 実行計画は、SQL文のレントゲン写真だ! Oracle Database (全部俺) Advent Calendar 2022のネタに苦しんでいる最中にw)

と言うことで、2022年の締めくくりは、リリースした曲の中から再生回数だけのTop5を選んで締めくくりたいと思いますw
ちなみに、GarageBand進化しすぎてて、すげーなと言う話は、GrageBandの進化はすごいね(多分、周回遅れwを参考にしてください。

では早速!(2022/12/31 9:30時点結果です)

第5位 
Loops in Clouds / N + 1 Loops : 2022/11/21 released 再生回数: 323

これ、スラップベースで何か作りたいと思って、AppleLoopsを探し回りやっと見つけた〜!ベースラインをチョップしまくって作ったやつです。自分でもお気に入りではありますが、GarageBandは使いこなせてなくて、結構苦しんだ曲でもありました。
ギターは、Nile Rodgers風のがいいなーと思ってたのですが、まあこんな感じにおさまりましたw

 

 

第4位 
Waterfall Loops - Dance Edition / N + 1 Loops : 2022/12/15 released 再生回数: 359

リリースは2週間前ですが、公開から1週間で200回を超えた最初の曲です。元々作りたかったの、Deep Forest & Peter GabrielのWhile the Earth sleep風の曲だったので、Original(Waterfall Loops / N + 1 Loops)はドラム控えめだったですが、作っているときに、ドラムありも面白いと思って、Dub versionにしたのがこれ。そしてこっちの方が再生回数が多いいというw

 

第3位 
Number Of Loops - Club Edition / N + 1 Loops : 2022/11/27 released 再生回数: 369

公開後の最初の1週目までの再生回数の伸びが良かった曲がいくつかあり、それらの傾向から試しにエレクトリックかつダンサブルな曲で、映像もそれっぽいのにしたらどう違うのだろうかと思って作った曲。Club Editionではないバージョンもあるのですが、そちらは想定通りClub Editionの半分程度でした。
ああ、なるほどーという傾向が見えてきたりw

 

第2位 
Loop Roads / N + 1 Loops : 2022/10/29 released 再生回数: 393

HOUSEっぽいのも作りたいと思ってなんとなく、AppleLoopsを置いてったらできた曲。あまり凝ったことしてなくて、チョップも少なめなので、ほぼAppleLoopsの組み合わせだけと言う感じ。合わせたフリー素材の映像のおかげかもしれませんね。再生回数が多めなのも。

 

そして、今年(リリースし始めてから3ヶ月しか経ってないですがw)のランキング1位は〜〜〜〜〜っ。

第1位 
Rain Loops / N + 1 Loops : 2022/11/21 released 再生回数: 582

この曲、作っているときに雨のイメージが浮かんで、気づいたらこうなってた。と言う曲。いい感じのフリー映像素材も多くて、映像もお気に入り。自分でもiTunesじゃなくてMusicに入れたこの曲をヘビロテして仕事してるので納得感あり。
トラムトラックはGarageBandが生成したものですが、それに、スネアのAppleLoopsからチョップして切り出した音を加工して、GarageBandのドラムトラックと絡ませてます。(他の曲でも多用していますが)

 

6位以下の曲もプレイリストに入れてあります。
N + 1 Loops

ではでは、皆様、良いお年をお迎えください。

| | | コメント (0)

iMovieでクロマキー合成する / FAQ

久々の、Macネタです

最近、GarageBandで曲を作った後、iMovieでフリー映像コンテンツと合わせYouTubeで公開しているのですが、クロマキー合成できることを知った(何周遅れだろうw)

では、試してみましょう。

いくつか試したところ白黒のもできることに気づく!

20221230-82546

使い方は簡単で、背景になる動画の上部にグリーン、ブルー、ブラックの動画を置く。ベースとなる動画と繋がるリンクが現れるのでわかりやすいはず。
その後、赤丸で囲ったドロップダウンメニューから、「ブルー/グリーン」を選択すれば、グリーンとブルー背景の動画は簡単に合成できる。

ブラック背景の動画はそれだけではうまく合成できず、横に並んでいる「クリーンアップ」から消しゴムアイコンを選択して動画の背景になる部分をクリックするとブラック背景の動画もいい感じで合成してくれる。簡単!!

 

フリー動画等はpixabayを使っています。

https://pixabay.com/ja/

| | | コメント (0)

2022年11月23日 (水)

GrageBandの進化はすごいね(多分、周回遅れw)

久々に、Macなネタということで、

今日は、最近の進化が目覚ましい、GarageBandです。実はここ1ヶ月ばかりw 16-22歳いら何十年ぶりかで、曲作に興味が湧いてきたという状態なのですw
というのも、GarageBandの進化に周回遅れて気づきw 試しに軽く素振りし始めたら、週一でYouTubeへアップしてるという状態になっておりますw (いつ飽きるかなw

MacのためのGarageBand
Garageband-splash

GarageBandのようなソフトウェアは、様々な音源を組み合わせてDTMを実現する、シーケンスソフトの一種であるわけですが、かつてMac OS Xには、シェアウェア(言葉が古いので、どれぐらい古いかわかりそうですがw)として、後にOSS化されたPraylerProというその界隈では有名なソフトウェアがありました。
iLifeのパッケージの1ソフトウェアとしてGarageBandがリリースされるまでは、個人的には、PlayerProイチオシだったのですが、前述のGarageBandリリース以降、他のソフトウェアの登場もあり徐々に減っていき、2011年ごろのリリースが最後だったような気がします。

 

古いコードを見つけました。sourceforgeって懐かしい場所にころがってます。
PlayerPro music editor

それと、YouTubeに、懐かしい、PlayerProの動画があったので貼っておきます
Apple Macintosh - PlayerPRO 5.9.8 -Tekilla Groove II by Zalza of TQL

懐かしい、Apple Computer時代のステッカーと、PlayerPROのステッカー(これ持ってる人はどんだけいるんだろう)
Img_1308

 

私も、PlayerProの開発が止まったあたりから、これらのソフトウェアへの興味とともに曲は聞くだけーの状態になり、N十年w

たまたま、見始めた、NHKの”ヒャダ×体育のワンルーム☆ミュージック”がキッカケとなり、再び、興味を持ち始めたという。(意外と単純なきっかけで目覚めますねw)

GarageBandでも結構色々できる!、いわゆるエフェクターは、Plug-inとして一般的に利用するものは全て取り込まれており、すげーーーーーーーー進化してる! ということに気づき(遅過ぎw)、再び何かやろうかなーと、いうことで、今に至りますw。 
年末のITカレンダー(JPOUG Advent Calendar 2022帰ってきた! 実行計画は、SQL文のレントゲン写真だ! Oracle Database (全部俺) Advent Calendar 2022 )や本業に影響でないように楽しんでいきたいと思いますwww

で、週一でゴニョゴニョやった結果、7曲めを公開した記念で以下に貼っておきます :)


Rain Loops / N + 1 Loops

 

Loops in Clouds / N + 1 Loops

 

Loop Roads - Club Edition / N + 1 Loops

Autumn Loops (4曲目)

1曲〜3曲目はPlaylistから

7曲のうち、7曲目のRain Loopsのドラムが一番面白と思いますが、ドラムセクションは図の上から2番目のトラックのスネアと、3番目のトラックのクローズドハイハットは、1番目のドラムトラックに合わせて自分で置いたもの。
要するに、1番目のドラムトラックのバスドラ、スネア(軽めの)やハンドクラップ含め、GarageBandがいい感じに叩いてくれたやつなんですよ。いくつかタイプがあるのでいい感じになったのを採用して、2番目のトラックでスネアを強くしたり、リズムに遊びを持たせたりしているだけ。

20221123-80752_20221123083601

なぜ、 N + 1 Loops だったり、曲名に Loop って使ってるかって、決まってるじゃないですかーーー。Database業界にいると、Loop なやつを結構の頻度見るので、身近な単語wwwなのと、GarageBand等で利用されている音源が、 Loops と呼ばれているところからw 
Cloudに行っても。みんな、Loop が大好きすぎて、そのネットワークレイテンシーをどう見てるのかなぁと日々、別の Loop 現象の悩み相談受けたりしてますがw 物理的な壁なのに、あなたは、それをどうしようとしているのかな? 今この状況で、みたいな、質問に質で返してみたいと思いつつw

話題が外れ過ぎたので、元に戻すと、
Music Video風の4K画質だったり1080のHD画質の映像素材は全てフリー映像として利用できる映像を利用しています。(公開している方々に感謝します。素晴らしい素材の宝庫で助かりました:)
Pixabay

基本的に改変等自由の素材ですが、What is not allowed? に記載されていることも、しっかり読んでおいてくださいね。
Simplified Pixabay License

--
最後に、作った曲を、フリー映像等を使って、オリジナルMusic Videoに。(曲と映像の同期は多少慣れが必要ですが、慣れて仕舞えば、スネアのタイミングで映像をトランジッションすることも比較的容易です。OSに付属するソフトですすが、こちらも非常に便利なソフトウェアです。いずれ、ちょっとしたテクニックネタは載せようと思います)
iMovie

 

| | | コメント (0)

2022年5月28日 (土)

bashからzshへdefault shellが変わったんだった / FAQ

zsh を Mac のデフォルトシェルとして使う

https://support.apple.com/ja-jp/HT208050

 

ということで、変えた時のメモ。Terminal開いたら、↑そう言われたので。

chsh -s /bin/zsh

を実行

Bash1 

パスワード聞かれるので、入力

Bash2

Terminal終了して、起動し直すと、zsh切り替わり

Zsh1

ということで、無事に変更できました。と。

| | | コメント (0)

2022年4月17日 (日)

Mac Studio 2022 と故障もほぼ無く長生きで良いマシンだった Mac Pro mid2012のGeekbench比較

かなーーーり、久々にMacオンリーのネタですw

左がMac Studio 2022、右がMac Pro mid2012 (ストレージはALL SSDで、GPUもMojave向けに入れ替えたものなのでそれなりに手を入れてありますがw)
真打で登場するMac Proがどうなるのか不明ですが、今まで通りのモジュラー型でパーツを入れ替えつつ使うというのはなさそうな気はしますね。

20220417-92704

20220417-92539

20220417-92623

20220420-101624
(Disk Speet Test / Stress = 1GBで実施)

| | | コメント (0)

2022年3月30日 (水)

Oracle Database 21c EE for Linux on VirtualBox 6.1

諸事情w によりまだやってなかった Oracle Database 21c お遊び環境構築しました。今の所 VirtualBox向けrebuildなのはなさそうなので、400億年振りにw Linuxインストールから実施w とはいっても、インストール含め楽すぎて良いですね。(preinstallな方しか試して無いですが)

これで、またパラメータ数比較もできる:)


環境
VirtualBox (現時点の最新版 6.1 for macOS intel)
https://www.virtualbox.org/

Oracle Linux Installation Media (今回は8.4を使った)
https://yum.oracle.com/oracle-linux-isos.html

Oracle Database 21c (21.3) for Linux x86-64 (RPM)
https://www.oracle.com/database/technologies/oracle21c-linux-downloads.html

VirtualBoxのバージョン確認

discus-mother:~ oracle$ VBoxManage -v
6.1.32r149290

Oracle Linux 8.4のVM作成(ここは本題じゃないので省略)

Oracle Linuxのバージョン確認

[master@localhost ~]$ uname -rv
5.4.17-2102.201.3.el8uek.x86_64 #2 SMP Fri Apr 23 09:05:57 PDT 2021
[master@localhost ~]$
[master@localhost ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.4 (Ootpa)
[master@localhost ~]$ cat /etc/oracle-release
Oracle Linux Server release 8.4
[master@localhost ~]$


Oracle Database 21c EE 21.3.0.0.0のインストール

大人の事情w インストールからやるのかなり久々な上に、rpmでやるのは初!!!! しかも環境変数のあたり、ちょいと忘れているので怪しい(でツッコミ歓迎w)

では、first attempting... rpmは事前にダウンロード済み


master@localhost ~]$ ll -h oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm
-rw-r--r--. 1 master master 2.6G 3月 29 03:07 oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm

Install

[master@localhost ~]$ sudo dnf install oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm
メタデータの期限切れの最終確認: 1:30:07 時間前の 2022年03月29日 02時07分01秒 に実施しました。
依存関係が解決しました。
======================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
======================================================================================================================
インストール:
oracle-database-ee-21c x86_64 1.0-1 @commandline 2.6 G
依存関係のインストール:
compat-openssl10 x86_64 1:1.0.2o-3.el8 ol8_appstream 1.1 M
ksh x86_64 20120801-254.0.1.el8 ol8_appstream 927 k
libnsl x86_64 2.28-151.0.1.el8 ol8_baseos_latest 102 k
oracle-database-preinstall-21c x86_64 1.0-1.el8 ol8_appstream 30 k

トランザクションの概要
======================================================================================================================
インストール 5 パッケージ

合計サイズ: 2.6 G
インストール後のサイズ: 7.1 G
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
[SKIPPED] libnsl-2.28-151.0.1.el8.x86_64.rpm: Already downloaded
[SKIPPED] compat-openssl10-1.0.2o-3.el8.x86_64.rpm: Already downloaded
[SKIPPED] ksh-20120801-254.0.1.el8.x86_64.rpm: Already downloaded
[SKIPPED] oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm: Already downloaded
----------------------------------------------------------------------------------------------------------------
合計 217 MB/s | 2.2 MB 00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備 : 1/1
インストール中 : ksh-20120801-254.0.1.el8.x86_64 1/5
scriptletの実行中: ksh-20120801-254.0.1.el8.x86_64 1/5
インストール中 : compat-openssl10-1:1.0.2o-3.el8.x86_64 2/5
scriptletの実行中: compat-openssl10-1:1.0.2o-3.el8.x86_64 2/5
/sbin/ldconfig: /etc/ld.so.conf.d/kernel-5.4.17-2102.201.3.el8uek.x86_64.conf:6: hwcap directive ignored

インストール中 : libnsl-2.28-151.0.1.el8.x86_64 3/5
インストール中 : oracle-database-preinstall-21c-1.0-1.el8.x86_64 4/5
scriptletの実行中: oracle-database-ee-21c-1.0-1.x86_64 5/5
インストール中 : oracle-database-ee-21c-1.0-1.x86_64 5/5
scriptletの実行中: oracle-database-ee-21c-1.0-1.x86_64 5/5
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service
configuration script as root: /etc/init.d/oracledb_ORCLCDB-21c configure

scriptletの実行中: oracle-database-preinstall-21c-1.0-1.el8.x86_64 5/5
scriptletの実行中: oracle-database-ee-21c-1.0-1.x86_64 5/5
/sbin/ldconfig: /etc/ld.so.conf.d/kernel-5.4.17-2102.201.3.el8uek.x86_64.conf:6: hwcap directive ignored

検証 : libnsl-2.28-151.0.1.el8.x86_64 1/5
検証 : compat-openssl10-1:1.0.2o-3.el8.x86_64 2/5
検証 : ksh-20120801-254.0.1.el8.x86_64 3/5
検証 : oracle-database-preinstall-21c-1.0-1.el8.x86_64 4/5
検証 : oracle-database-ee-21c-1.0-1.x86_64 5/5

インストール済み:
compat-openssl10-1:1.0.2o-3.el8.x86_64 ksh-20120801-254.0.1.el8.x86_64
libnsl-2.28-151.0.1.el8.x86_64 oracle-database-ee-21c-1.0-1.x86_64
oracle-database-preinstall-21c-1.0-1.el8.x86_64

完了しました!
[master@localhost ~]$


Configure
今回は、preinstallを構成します。カスタムな構成は今の所必要ないので。

[root@localhost ~]# cd /etc/init.d
[root@localhost init.d]# ll
合計 40
-rw-r--r--. 1 root root 1161 5月 19 2021 README
-rw-r--r--. 1 root root 18434 2月 15 2021 functions
-rwx------. 1 root root 1281 7月 13 2021 oracle-database-preinstall-21c-firstboot
-r-xr-xr-x. 1 root root 11307 7月 27 2021 oracledb_ORCLCDB-21c
[root@localhost init.d]#
[root@localhost ~]# /etc/init.d/oracledb_ORCLCDB-21c configure
Configuring Oracle Database ORCLCDB.
DB操作の準備
8%完了
データベース・ファイルのコピー中
31%完了
Oracleインスタンスの作成および起動中
32%完了
36%完了
40%完了
43%完了
46%完了
データベース作成の完了
51%完了
54%完了
プラガブル・データベースの作成
58%完了
77%完了
構成後アクションの実行
100%完了
データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB。
データベース情報:
グローバル・データベース名:ORCLCDB
システム識別子(SID):ORCLCDB
詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log"を参照してください。

Database configuration completed successfully. The passwords were auto generated,
you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user.
[root@localhost ~]#


おおおおおおーーー、起動してるーーーー!! 21c 楽だw
20220329-182633

いろいろ見ていくと、oracleユーザーや必要なグループの作成等はおこなわれているが、なぜか、home directoryが存在しなかった(ご愛嬌ってところかw)

ということで、なぜか存在しなかったホームディレクトリ作成とパスワードを変更して、.bash_profileに、ほぼ忘れかけてた環境変数設定など。(漏れてないかな。。w)

[root@localhost ~]# cat /etc/passwd | grep oracle
oracle:x:54321:54321::/home/oracle:/bin/bash
[root@localhost ~]#
[root@localhost ~]# mkdir -p /home/oracle
[root@localhost ~]# chown oracle:oinstall /home/oracle
[root@localhost ~]# passwd oracle
ユーザー oracle のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@localhost ~]# su - oracle
[oracle@localhost ~]$ cat .bash_profile
export ORACLE_BASE=/opt/oracle
export ORACLE_BASE_CONFIG=$ORACLE_BASE/dbs
export ORACLE_HOME=$ORACLE_BASE/product/21c/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=ORCLCDB
export NLS_LANG=Japanese_Japan.UTF8
export ORA_NLS10=$ORACLE_HOME/nls/data
[oracle@localhost ~]$ . .bash_profile
[oracle@localhost ~]$


そして、忘れる前にやっときましょうw glogin.sqlでSQL*Plusの環境を整えると。

[oracle@localhost ~]$ cat $ORACLE_HOME/sqlplus/admin/glogin.sql
--
-- Copyright (c) 1988, 2005, Oracle. All Rights Reserved.
--
-- NAME
-- glogin.sql
--
-- DESCRIPTION
-- SQL*Plus global login "site profile" file
--
-- Add any SQL*Plus commands here that are to be executed when a
-- user starts SQL*Plus, or uses the SQL*Plus CONNECT command.
--
-- USAGE
-- This script is automatically run
--
set linesize 300
set pagesize 1000
set timi on
set time on
set tab off
define _EDITOR=vi
set sqlp "_user""@""_connect_identifier> "
[oracle@localhost ~]$

SQL*Plusで接続!!!

[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on 火 3月 29 06:14:52 2022
Version 21.3.0.0.0

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


Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
06:14:52 SYS@ORCLCDB> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 READ WRITE NO
06:14:57 SYS@ORCLCDB>
06:14:58 SYS@ORCLCDB>
06:14:58 SYS@ORCLCDB>
06:15:26 SYS@ORCLCDB> select banner_full from v$version;

BANNER_FULL
-------------------------------------------------------------------------------
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0


経過: 00:00:00.00
06:15:40 SYS@ORCLCDB> exit

Lisenerの状態も見ておきましょう

[oracle@localhost ~]$ lsnrctl status

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 29-3月 -2022 07:09:29

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

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 21.0.0.0.0 - Production
開始日 29-3月 -2022 03:57:55
稼働時間 0 日 3 時間 11 分 34 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル /opt/oracle/homes/OraDBHome21cEE/network/admin/listener.ora
ログ・ファイル /opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=localhost)(PORT=5500))
(Security=(my_wallet_directory=/opt/oracle/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))
サービスのサマリー...
サービス"ORCLCDB"には、1件のインスタンスがあります。
インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"ORCLCDBXDB"には、1件のインスタンスがあります。
インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"db57eedbd976b81ce055000000000001"には、1件のインスタンスがあります。
インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"orclpdb1"には、1件のインスタンスがあります。
インスタンス"ORCLCDB"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
[oracle@localhost ~]$

停止してみましょう!

おっと、systemctlで起動停止というところまではやってくれないのか... ということで、自分で止めましょうw あとで作ろう。。w

[master@localhost ~]$ sudo service oracle stop
[sudo] master のパスワード:
Redirecting to /bin/systemctl stop oracle.service
Failed to stop oracle.service: Unit oracle.service not loaded.
[master@localhost ~]$ sudo su - oracle
[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on 火 3月 29 07:16:55 2022
Version 21.3.0.0.0

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

Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
07:16:55 SYS@ORCLCDB> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
07:17:01 SYS@ORCLCDB>

インストール楽すぎて、ワロタ。



一気に桜が咲いた。がいつまでもつのだろう。今年は東北方面も開花が早そうで、GWはもう葉桜だろうな。
では

| | | コメント (0)

2022年3月21日 (月)

VBOX_E_IPRT_ERROR (0x80BB0005) / VirtualBox 6.1.32 r14929 (いろいろでるなぁw)

えーっとw

先ほどのエラーが解消したと思ったら、起動したいVMが起動しなーーーいw

( When it rains, it pours  LOL )

VirtualBoxアップデートするのはいいけど、やれやれなことも多い。

英語圏のネタをググってもヒットしなかったのですが、やはり、一足先にハマっている人がいたw (ありがとう)


今回のは、なんと日本語環境というかマルチバイト文字をつかう世界でだけ起きるやつw (昔のOracleにもそんなの結構多かったな〜。遠い目w)

今回はマルチバイト特有のエラー、それまでは問題なかったわけだからw マルチバイトに対応しないようなコードが今回のアップデートで混入してしまったということだろうw ʅ(◞‿◟)ʃ

20220321-114144

VirtualBox 6.1.23でVM名にマルチバイト文字あると、なんと起動しない!
https://blog.apar.jp/linux/15987/

 

引用先のブログだとマルチバイトだとわかりやすいのですが、私のケースだとものすごく気づきにくかった(エラーコードは同じだったので、しばらく悩んで気づきましたが)

 

太った空白の影響でしたw


 

VM名をよーーーーく見ると、なんだか、空白が多い箇所ありますよね。。。。
選択してみると、なんと、全角空白!!! w    

 

これだ!!!!


半角空白に置き換えた。
20220321-114204

無事起動した〜〜〜

20220321-120214

これで、やっと、本題に取りかかれるw 

 

| | | コメント (0)

NS_ERROR_SOCKET_FAIL (0xC1F30200) / VirtualBox 6.1 on macOS

えーっと、やっと重い腰を上げてw、なんと本年度最初のエントリー。

もろもろ他のことに気を取られていたら、ACEのKPI評価期末がもう少しだのに気づきw 溜めたままになっていたネタを書かないと!

と、VirtualBox 6.1をアップデートして起動しようしたら、なんと、エラーで起動しない (まあ、よくあります。似たようなことはw
20220321-80633

そんなときは、たぶん、みんな、ハマってるよね。ということで、ググりましょうw

Virtualbox 6.1 Code NS_ERROR_SOCKET_FAIL (0xC1F30200) - IPC daemon socket error (extended info n
https://forums.virtualbox.org/viewtopic.php?f=7&t=105337

もろこれです。で、知らなかったのですが、これ結構前から起こることもあったらしい(私は初でしたが)

/private/tmp のパーミッションが変わってしまった?影響らしい。(パーミッションの設定の詳細はあとで調べることにして、とりえず、確認)

[Solved] NS_ERROR_SOCKET_FAIL (0xC1F30200) PLEASE HELP
https://forums.virtualbox.org/viewtopic.php?f=8&t=87275#p416888

ここでハマってるのも時間がもったいないので、ちゃちゃっとチャッつけちゃいましょw (やりたいのはこれじゃないのでw)

 

 


discus-mother:private oracle$ ll
total 0
drwxr-xr-x 155 root wheel 4960 3 20 15:19 etc
drwxr-xr-x 2 root wheel 64 8 18 2018 tftpboot
drwxr-xr-x 15 root wheel 480 3 21 07:55 tmp
drwxr-xr-x 31 root wheel 992 4 6 2021 var
discus-mother:private oracle$
discus-mother:private oracle$ sudo chmod 1777 tmp
discus-mother:private oracle$ ll
total 0
drwxr-xr-x 155 root wheel 4960 3 20 15:19 etc
drwxr-xr-x 2 root wheel 64 8 18 2018 tftpboot
drwxrwxrwt 15 root wheel 480 3 21 07:55 tmp
drwxr-xr-x 31 root wheel 992 4 6 2021 var
discus-mother:private oracle$

 

これで解決!
20220321-80807 やれやれw

 

ではではあと、2ヶ月ほどで、14エントリー以上かかないとw。とはいえ、アドベントカレンダー全部俺のペースよりは楽ではありますね。w ガンガレ>俺

 

| | | コメント (0)

2019年11月 9日 (土)

MySQL/PostgreSQL/Oracleのクライアント

macdeoracle:~ discus$ brew install mysql-client

...

macdeoracle:~ discus$ mysql --version
mysql Ver 14.14 Distrib 5.7.23, for osx10.14 (x86_64) using EditLine wrapper
macdeoracle:~ discus$ psql --version
psql (PostgreSQL) 11.5
macdeoracle:~ discus$ sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

そういえば、10年ぐらい前は、複数のDBと戯れつつ、Index Only Acesssネタなんかもやってたっけw (時代は繰り返すw のかw)

ひとまず、ここまで.



ずーっと前のエントリー
Index Only Accessネタのおまけ


今日は、防寒具とか見に行かないと。

| | | コメント (0)

2019年3月24日 (日)

Oracle VM VirtualBox 6.0 でも治ってなかった、ドラッグするとDesktopが取り残される問題 / FAQ

Oracle VM VirtualBox 5.x台からあった問題、6.0でも修正されていないですね。
ただ、解決方法はあって、一旦、Dockにしまって再度取り出すと症状は治まるんですよね。これw

以下、タイトルバーをクリックしてドラッグするとなぜかデスクトップだけが取り残されてのっぺらぼう状態になってしまったスクリーンショット

20190324-152727

| | | コメント (0)

2018年8月19日 (日)

FAQ::位置情報による時間帯の自動調整 - iPhone/Apple Watch/iPad/Mac

ひさびさのエントリーでございます。

試用期間終わり、ひとまず生き延びておりますw

そして、早々に海外かつ人生はつの海外出張ということで、
Mac De Oracleの中の人として、ここは声を大きくして言っておきたいw

MacとiPhoneとApple Watchって

”国を跨いでも現地時間に自動調整してくれちゃうのは超便利!”

iPhone/Apple Watchを持ってる方は大抵 時間の自動調整はオンになっている方は多いかなーとは思いますが、意外に忘れてたりするのがMac側だったりします。

ということで、FAQとして書いておきますね。

まず、iPhone/Apple Watchについては、iPhone側で自動調整が有効かされていれば、Apple Watchもそれに同期して調整されます。 
日本から海外のどこかに到着すると自動的にに同期してくれちゃう。

20180819_04458


本題のMac側ですが、「システム環境設定」> 「セキュリティーとプライバシー」 > 「プライバシー」タブをクリックしたら以下の通り。
「日付の時間」の「時間帯」タブを設定して「現在の位置情報に基づいて、時間帯を自動的に設定」チェックボックスをチェックするだけ!

20180819_04954


これだけで、海外出張時にも自動的に現地時間に時間が同期されるので、Mac触ってて時間が日本の時間のままで混乱しちゃうなんてことも避けられまっす!!

:)


ついでにiPhoneで世界時計を設定しておくと、さらに便利だったりします。この設定は、Apple Watchへも連携されるのでApple Watchでも確認しやすく重宝します。
20180819_10442

| | | コメント (0) | トラックバック (0)

2017年5月 3日 (水)

XQuartz で X forwarding

ちょっと前に、macOSでssh接続してOracle Universal InstallerとかDBCAとか起動するのはどうするの?
みないな話に割り込んだので、FAQとして書いておきますね。

随分前にも書いてたきがしてけたけど、X11 X forwardingのことを書いてたわけではなかったことに気づいた。orz

X forwardingしたい場合には、terminal.appの代わりにXQuartzを使います

https://www.xquartz.org
20170502_92713
20170502_92412

例えば、macOSのVirtualBoxのLinux/Solarisがguest OSで、そこにOracleをインストールするような場合、
以下のように XQuartsを起動し、X forwarding !!

-Y をお忘れなく!

$ ssh -Y oracle@192.168.1.246

...中略...

-bash-4.1$ ./runInstaller &

...中略...

これだけ。

20170502_92639

20170502_92654
20170502_104316


| | | コメント (0) | トラックバック (0)

2016年9月20日 (火)

Boot Camp de Windows 10 Pro

Previously on Mac De Oracle から結構間が空いてしまった m(_ _)m

VIrtualBoxで一つ、エクスリームなPCで一つWindows Pro環境があるのですが、訳あって、Boot CampでMacBookにもう一つのWindows 10 Pro環境を作った。

Boot Camp を使って Mac で Windows 10 を使う
https://support.apple.com/ja-jp/HT204990

Appleサポートに記載されている手順で楽チン構築でした。ニッコリ。

Windows10pro_withbootcamp_2


Boot CampでWindows 10 Proインストールまでの流れ.(OS X側)
詳細はAppleサポートに記載されている手順通りに進めればOK

20160908_222628
20160908_222646
20160908_222650

事前にダウンロードしておいた.ISOファイルを選択して..
20160908_222701
20160908_222706
20160908_222714
20160908_222900

OS XとWindowsのパーティション配分は以下がデフォルトになっているので、使用サイズに合わせて変える必要があります。今回は50%/50%に設定してみました。いろいろお試し環境なので作り変えちゃうかもしれないですが...
20160908_225407
20160908_225411

20160908_225422

この後は、Windowsのインストールになるので省略w

MacBookでのインストール意外に速くてびっくり:)


| | | コメント (0) | トラックバック (0)

2016年8月10日 (水)

Safari起動時に前回参照ページではなく、ホームページを表示したい etc.

Mac で前回と同じウインドウ、App、書類を自動的に開くという機能が働いてSafariを起動すると前回開いていたページを表示したりするようになった。

便利なんだけど、そのページがパスワード変更依頼ぺージだったりすると、次回起動時に再度そのページを送信したりすることがあるw

逆にめんどくさいなー、この機能と思ったら固定ページを表示するようできるんですよね。
(再開機能がなかった頃のようにする方法です)

Safari


再開機能で前回参照していたページを開かないようにしたうえで、起動直後の新規ページには固定ページを開き、新規タブでは空のページを表示するようにしてみました。:)

このあたりなんとなく、Appleらしくない面倒くさいUIだなぁ〜と思いますよ。直感的じゃないんでw
Photo

設定後はこんな感じになります。なんとなく落ち着く :)

起動直後はブログを固定表示
20160810_04236


新規タプを開くと空白ページ。こんな感じになります。
20160810_04230


| | | コメント (0) | トラックバック (0)

2016年5月 6日 (金)

AirMacベースステーションの拡張ワイヤレスネットワーク設定

AirMacベースステーションの拡張ネットワーク設定のハマリどころ。(含む自分メモ)

昨年末にAirMac ExtremeとAirMac Time Capsuleの2台構成にしようとしてハマったところを書き残そうと思いつつすっかり忘れていた。 orz


マニュアルちゃんと読めよ! 

と妻にも言っている私が、

Apple Supportのエントリに書かれていた一文を読み飛ばすなんて、なんってこったいw
というのがオチだったわけですが。。。 (^^;;;;


以下をしっかりw 読めばハマることはないと思いまっす。  


AirMac ベースステーション:拡張ワイヤレスネットワーク (802.11n) の設定と構成

Wi-Fi base stations: Extending the range of your wireless network by adding additional Wi-Fi base stations

私が読み飛ばしてしまったのは、以下。
”これまでに Wi-Fi ベースステーションを構成したことがある場合は、構成に着手する前に、拡張ワイヤレスネットワークを構成する各 Wi-Fi ベースステーションを工場出荷時の状態にリセットしておいた方がよいでしょう。”

Time Capsule単体のネットワーク構成だったところへ、Extremeを追加して拡張しようとしたのですが、Time Capsule側を工場出荷状態にリセットしないで拡張しようとししため失敗していたのでした。。。。とほほ。

工場出荷状態にリセットしたら、あら不思議、 あっというまに拡張終了w (当たり前かw)

でAirMac ExtremeとTime Capsuleの2台構成で1つのSSIDで接続できる拡張ワイヤレスネットワーク構成のできあがり〜!
12191541_980958431970436_1074074517


| | | コメント (0) | トラックバック (0)

2014年6月13日 (金)

SQL Developer 4の素敵なコマンドライン de SQL整形 :)

Version 4.0.1ではWindowsでも同じ問題がでていたようですね。以下OTNフォーラムにも投稿されていたようです。
OS X版 Version 4.0.1でも同じだったので不具合だったようです。
https://community.oracle.com/thread/3562219


Version 4.0.2がリリースされたので改善されたか確かめてみました。 OS X版のSQLDeveloper 4.0.2 で!

OTN-JPではまだ、4.0.1のようですが、USでは 4.0.2のようです。OTN-JPでもそのうち4.0.2になるのでしょうね :)
以下はUSへリンクです。
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

20140613_45308


OS X版のsdcliを実行するには実行権を付与する必要があります。sdcliは以下のパスにあります。かなり深いところにあります!
(OS X版は以下深いところにあるので、SQLDeveloperのアイコン上で右クリック>コンテクストメニュー>パッケージの内容を表示から辿ってパスを探してもいいですし、以下のパス直接コピペでも行けます。)

20140613_45551

20140613_45613


discus-mother:˜ oracle$ cd /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin
discus-mother:bin oracle$ chmod +x sdcli
discus-mother:bin oracle$ ll
total 672
-rw-r--r--@ 1 oracle staff 49279 5 3 02:48 SQLDeveloperIcons.icns
-rw-r--r--@ 1 oracle staff 0 5 3 02:48 jdk.conf
-rw-r--r--@ 1 oracle staff 440 5 3 02:48 logging-debug.conf
-rw-r--r--@ 1 oracle staff 363 5 3 02:48 logging.conf
-rwxrwxr-x@ 1 oracle staff 586 5 3 02:50 sdcli
-rw-r--r--@ 1 oracle staff 99 5 3 02:50 sdcli-Darwin.conf
-rw-r--r--@ 1 oracle staff 446 5 3 02:50 sdcli.boot
-rw-r--r--@ 1 oracle staff 854 5 3 02:50 sdcli.conf
-rw-r--r--@ 1 oracle staff 71205 5 3 02:48 splash.gif
-rw-r--r--@ 1 oracle staff 71205 5 3 02:48 splash.png
-r-xr-xr-x@ 1 oracle staff 3220 5 3 02:48 sqldeveloper
-rw-r--r--@ 1 oracle staff 415 5 3 02:48 sqldeveloper-Darwin.conf
-rw-r--r--@ 1 oracle staff 661 5 3 02:48 sqldeveloper-debug.conf
-rw-r--r--@ 1 oracle staff 204 5 3 02:48 sqldeveloper-nondebug.conf
-rw-r--r--@ 1 oracle staff 445 5 3 02:48 sqldeveloper.bat
-rw-r--r--@ 1 oracle staff 340 5 3 02:48 sqldeveloper.boot
-rw-r--r--@ 1 oracle staff 1175 5 3 02:48 sqldeveloper.conf
-rw-r--r--@ 1 oracle staff 83456 5 3 02:48 sqldeveloper64W.exe
-rw-r--r--@ 1 oracle staff 131 5 3 02:54 version.properties
discus-mother:bin oracle$


パスは通っていないので設定する必要があります。

discus-mother:˜ oracle$ cat .bashrc
alias ll='ls -lv'

#for SQLDeveloper sdcli
export PATH=$PATH:/Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin

discus-mother:˜ oracle$


Version 4.0.1では以下の状況でExceptionが発生していましたが、Version 4.0.2では解決してます!!! 

discus-mother:˜ oracle$ sdcli

Oracle SQL Developer
Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.

使用可能な機能:
cart: データベース・カート・バッチ・タスク
dba: 基本バッチDBAタスク
format: SQL Format Task
migration: Database Migration Tasks
reports: 基本バッチ・レポート・タスク
unittest: ユニット・テスト・バッチ・タスク
discus-mother:˜ oracle$

ということで、
前から試したかった SQL文の整形機能。 GUIだとSQLワークシートでSQL文整形機能が提供されているためデータベースへ接続必要だったんですよね。
機能としては素敵だったのですが、データベース接続が行えない環境では使えない機能だったんですよ。
そんな環境で読むに耐えない巨大で未整形なSQL文を渡され涙目だった日々を思い出しますw

コマンドラインならデータベース接続不要なのがいいっす!

discus-mother:˜ oracle$ sdcli format

Oracle SQL Developer
Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.

format input=<入力ファイルまたはディレクトリ> output=<出力ファイルまたはディレクトリ>
成功しました。
discus-mother:˜ oracle$


以下のようなSQL文を整形してみます。

discus-mother:˜ oracle$ cat sample_unformated.sql
select a.id,a.name,b.location,b.phone_no from foo a innter join bar b on a.id = b.id order by a.name;


意外と地味な感じの処理終了メッセージですが、整形できたようです。整形結果を確認!

discus-mother:˜ oracle$ sdcli format input=sample_unformated.sql output=sample_formated.sql

Oracle SQL Developer
Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.

成功しました。
discus-mother:˜ oracle$


いいですね〜 :) 最後の改行がないのですは、ご愛嬌ということで.

discus-mother:˜ oracle$ cat sample_formated.sql
SELECT a.id,
a.name,
b.location,
b.phone_no
FROM foo a innter
JOIN bar b
ON a.id = b.id
ORDER BY a.name;discus-mother:˜ oracle$
discus-mother:˜ oracle$

では、超便利な一括整形のテスト。 以下のような未整形なSQLファイルを含むディレクトリと整形後SQLファイルを格納するディレクトリを用意して....

discus-mother:˜ oracle$ mkdir unformated_sqls
discus-mother:˜ oracle$ mkdir formated_sqls
discus-mother:˜ oracle$ dir=unformated_sqls; for fname in `ls $dir`; do echo -e \\n\\nfile : $fname; cat $dir/$fname; done;


file : sample1.sql
select a.id,a.name,b.location,b.phone_no from foo a innter join bar b on a.id = b.id order by a.name;


file : sample2.sql
select a.id,a.name,b.location,b.phone_no from foo a innter join bar b on a.id = b.id order by a.name;


一括整形の場合はディレクトリ名のみ指定すればOK!
おおおおおおおおお〜〜〜〜、できた〜〜〜〜SQL文の一括整形!!!  素敵!!

discus-mother:˜ oracle$ sdcli format input=unformated_sqls output=formated_sqls

Oracle SQL Developer
Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.

成功しました。


かくに〜〜〜〜〜ん!!

discus-mother:˜ oracle$ dir=formated_sqls; for fname in `ls $dir`; do echo -e \\n\\nfile : $fname; cat $dir/$fname; done;


file : sample1.sql
SELECT a.id,
a.name,
b.location,
b.phone_no
FROM foo a innter
JOIN bar b
ON a.id = b.id
ORDER BY a.name;

file : sample2.sql
SELECT a.id,
a.name,
b.location,
b.phone_no
FROM foo a innter
JOIN bar b
ON a.id = b.id
ORDER BY a.name;


Good job!!!!! SQL Developer Team!


| | | コメント (0) | トラックバック (0)

2014年2月11日 (火)

あれから1年.....あの恐怖が再びw

何故、この時期になるとブラウザと戦うことが多いいんだ〜見たいな思いもあるんだけど.....再びブラウザと格闘してきた(結果:今回は見事に敗北w むーりー)

さすがに、いまさらIE9,8,7なんて話じゃなくてよかったのですが...今回はIE10でございましたw


そういえば、あれから一年たったな〜と見てみたらIE10は載せてなかったのだ〜〜。
まだ、レガシーブラウザと戦うのですか...

今回は、IE11やWebKit陣営へ加わったOpera 19なども加えていつものベンチマーク結果を更新しました。 ;)

IE10に勝てなかったのはChromeファーストで開発しているからに違いねぇ〜 (負け惜しみw

Windows8.1のFF26、Chrome32、Opera19はWindows8と同じPCでほぼ同じスコアだったため載せていません。
また、IE11のデータはWindows7/8.1のみ。(Windows8版IE11がリリースされていないため)

・SunSpider 1.0.2 - https://www.webkit.org/perf/sunspider/sunspider.html

Windows7は OS XのVirtualBoxを利用しているのでオーバーヘッドを考えたとしてもIE11の異常な速さが目につきますね。(まあ速ければ文句はないです、はいw)
そして、Webkit陣営となったOpera 19がChromeなみのスコアを叩き出す!!!!!
Sunspider102


・Google Octane JavaScritpt Benchmark V2 -

SunSpiderでは検討健闘しているIE11もOctane V2ではまだ遅れが目立ちますね。
FireFox26はOS X阪で遅れが目立ちます。ガンガレ。
そして、ここでも、Opera 19が驚きのスコアを叩き出している.....恐るべし :)
Octanev2lite


Safariなど一部のブラウザのデータが漏れていたのでそれらのブラウザのデータを含むグラフを追加
Octanev2


いや、うち、まだ〜昔のブラウザ使ってますよ〜って方もいると思うので、レガシーも含めて旧バージョンのベンチマークサイトの結果も載せておきます。

・SunSpider 0.9.1 -

IE8やIE9(64bit)がダントツで遅かったわけですが、これを見たらヤバいと思いますよね。悪い意味で。
そして、Opera 19すげ〜ぞw やればできる子!
Sunspider092


・Google Octane JavaScript Benchmark V1 -

これを見れば、IE10とIE11ってそーとーちげ〜よって感じなのがわかります orz.
ほんとIE10もターゲットにするならIE10ファーストで開発/テストしろよって感じです。はい。
Octanev1


・Google V8 JacaScript Benchmark suit Ver.7 -

IE8 V8の結果はどこ?ってぐらい低いのでよーく探してくださいね。一番左のがそうです。
V8

そして、最後は恒例のdocument.write() * 10000
んなもんつかうかよ〜って感じですが。見てると面白いので毎回やってますw

いままで遅めだったChromeですが、32では速くなってるじゃありませんか〜〜〜〜〜〜 :)

そして、それ以外では結構いい感じだったIE11ですが、Windows7 (VM)でまさかの結果が...
他のプラットフォームの結果と比較しても異常な値でした。IE10もVM上だと同様の傾向はありますが...
調べていないので原因は不明です...だれか調べてw....単純にそこはチューニングしてないからとか....w...勝ってに想像しているところ...w



Documentwrite10000

注)10回計測しmin/maxの値を除いた8回分の平均値をグラフ化しています。


| | | コメント (0) | トラックバック (0)

2013年12月 9日 (月)

no ocijdbc11 in java.library.path on OS X Mavericks

JPOUG Advent Calendar 2013、9日目のエントリー、かつ、チューニングネタではなく Java on OS X の話という変化球 :) です。

OS X版Oracle SQL DeveloperやOracle JDeveloperで、OCI/Thick JDBCを利用しようとして以下のようなメッセージに遭遇したら...みなさんどうしてるのだろう? 

no ocijdbc11 in java.library.path

と考えだしたら眠れなくなったので、役に立つのか、たたないのかわからないけど書いておきます

私は、Oracle SQL DeveloperやOracle JDeveloperの起動シェルでDYLD_LIBRARY_PATHなどの環境変数をセットすることで対処しています。
(今となってはこれが楽だと思います。 environment.plistでなんとかできた時代もありましたけど...いまは使えないしね)

no ocijdbc11 in java.library.pathとなっている状態から解決するまでの操作をYouTubeで....


映像では、ユーザーのホームディレクトリーにOracle向け環境変数設定ファイル (この例では、oracleenvというファイルを作成してあります) を作成しておき、その設定ファイルをOracle SQL Developer等の起動シェルで読み込ませて問題を解決するまでの操作を行っています。

主演
MacBook Air (mid2013)

ホストOS、その他

  • OS X 10.9 Maveriks
  • Oracle Instant Client 11g 11.2.0.3.0 for OS X (64bit)
  • Terminal 2.4
  • VirtualBox 4.3.4 for OS X
  • Oracle SQL Developer 4.0.0 for OS X
  • Oracle JDeveloper12c 12.1.2.0.0 Studio Edition Generic

ゲストOS、その他

  • Oracle Linux Server 6.4 x86_64
  • Oracle Database 12c EE R1 for Linux x86_64

映像では見づらい方向けの解説。

事前にOracle向け設定ファイルを該当ユーザーのホームディレクトリーに作成しておきます。
この例では、oracleenvとして作成しました。(不過視ファイルとしてもよいかもしれません。)
Oracle_environment_variables


Oracle SQL Developer 4.0 for OS X

「Oracle SQL Developerメニュー」→「Preference...」を選択
002_sdev_004

「データベース」→「拡張」→「OCI/Thickドライバの使用」チェックボックス」をチェック→「テスト」ボタンをクリック
002_sdev_005

no ocijdbc11 in java.library.pathエラーとなる(ライブラリーへのパスが通ってないので当然ですよね)
002_sdev_006

「Finder」→「アプリケーション」→「SQL Developer」→「右クリック」→ポップアップメニューの「パッケージの内容表示」
002_sdev_009

「Contents」→「MacOS」→「sqldeveloper.sh」を選択
002_sdev_010

ポップアップメニュー「このアプリケーションで開く」でお好きなテキストエティタを選択
002_sdev_012

oracle向け環境設定ファイルを読み込ませるように編集。この例ではユーザーホームディレクトリにある oracleenvというファイルを読み込むように変更。
002_sdev_013

Oracle SQL Developer 4.0を再起動しOCI/Thick JDBCドライバーで接続可能か再確認
002_sdev_014

002_sdev_015


Oracle JDeveloper12c 12.1.2.0.0 Studio Edition Generic

「データベース接続編集」ダイアログの「接続のテスト」ボタンをクリックするとno ocijdbc11 in java.library.pathエラー(これもパスが通ってないのが原因なので...)
003_jdev_002

003_jdev_003

「Finder」でOracle JDeveloper12cのインストールディレクトリーからアプリケーション「JDeveloper」を右クリック
→ポップアップメニューの「パッケージの内容を表示」を選択

003_jdev_004

「Contents」→「MacOS」→「JDeveloper」を選択して右クリック→「このアプリケーションを開く」でお好きなテキストエディタを選択
003_jdev_005

oracle向け環境設定ファイルを読み込ませるように編集。この例ではユーザーホームディレクトリにある oracleenvというファイルを読み込むように変更。
003_jdev_006

Oracle JDeveloper12cを再起動し、OCI/Thick JDBCドライバーで接続可能か再確認
003_jdev_007

003_jdev_008


明日は、@dekasasaki さんの担当です。引き続き、JPOUG Advent Calendar 2013をお楽しみください。:)


| | | コメント (0) | トラックバック (0)

2013年10月13日 (日)

母艦のMacProよりiopsでるのな。そりゃそうだ。

MacBook Air(mid 2013) だと母艦のMacProよりiopsがでる(SSDだもんなw)ので
MacProでデモ用のネタを仕込んじゃうとMacBook Airでは短くなる〜〜

70GBぐらい残っているから余裕はあるけど..最初からMacBook Airでやっときゃ良かった。

データサイズやデータ量は母艦より多くしないと >< 

MacPro (Mid 2012)
1324iops


MacBook Air (Mid 2013)
1799iops

| | | コメント (0) | トラックバック (0)

2013年8月13日 (火)

Cross Platform Transportable Tablespace #12

ネタとしては地味ですがOracle Database 12cのTransportalbe tablespaceも軽めにチェック

以前のエントリ..2009年か〜〜遠い目
Cross Platform Transportable Tablespace #11


あれ、ちょいとズレてるけどご愛嬌:)

06:59:36 SYS@orcl12c> select * from v$version;

BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
PL/SQL Release 12.1.0.1.0 - Production 0
CORE 12.1.0.1.0 Production 0
TNS for Linux: Version 12.1.0.1.0 - Production 0
NLSRTL Version 12.1.0.1.0 - Production 0

プラットフォームの情報も変化はない。Mac OSの文字もそのまま..

06:52:31 SYS@pdborcl> select * from v$transportable_platform;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT CON_ID
----------- ----------------------------------------------------------------------------------------------------- -------------- ----------
1 Solaris[tm] OE (32-bit) Big 0
2 Solaris[tm] OE (64-bit) Big 0
7 Microsoft Windows IA (32-bit) Little 0
10 Linux IA (32-bit) Little 0
6 AIX-Based Systems (64-bit) Big 0
3 HP-UX (64-bit) Big 0
5 HP Tru64 UNIX Little 0
4 HP-UX IA (64-bit) Big 0
11 Linux IA (64-bit) Little 0
15 HP Open VMS Little 0
8 Microsoft Windows IA (64-bit) Little 0
9 IBM zSeries Based Linux Big 0
13 Linux x86 64-bit Little 0
16 Apple Mac OS Big 0
12 Microsoft Windows x86 64-bit Little 0
17 Solaris Operating System (x86) Little 0
18 IBM Power Based Linux Big 0
19 HP IA Open VMS Little 0
20 Solaris Operating System (x86-64) Little 0
21 Apple Mac OS (x86-64) Little 0

20行が選択されました。


con_idはお約束で追加されていますが、ビューは大きく変わってないようですね。

12cで試している方のエントリを見つけたのでメモ:
Oracle 12c: Transport tablespaces across platforms




Cross Platform Transportable Tablespace #11

| | | コメント (0) | トラックバック (0)

2013年5月 6日 (月)

散らかってる部屋へ、突然の来客、散らかってるものはどうします? 

散らかってる部屋へ、突然の来客、散らかってるものはどうします? 

とりあえず、押入やクローゼットへ放り込むw

そんな、地味だけど便利な機能がこれ。

そういえば、Windowsのデスクトップが書類だらけで埋まっている方いますよね。

Macな方なら、そんなときでも慌てずに、ささっと、ね :)

20130506_222712


とりあえず、片付けちゃいたいファイルをすべて選択>ポップアップメニュー「選択項目(N項目)から新規フォルダ」を選択するだけ!

| | | コメント (0) | トラックバック (0)

2013年5月 1日 (水)

TimeMachine応用編

容量不足のMBAをMountain Lionへ移行する際にTimeMachineを活用するのはありだな。

仕事でヘビーにMBAを利用していると新しいOSがリリースされたとしてもすぐには飛びつけないんですよね。昨年がそういう状況でした。:)

やっと落ち着いたのでGW前半で母艦と同じMountain Lionへ移行しようと思ったらMBAの空き容量不足が発覚!w


TimeMachineをバックアップ兼一時保管として利用することに...

・TimeMachineにバックアップを取得しておく。
・デスクトップや書類フォルダにあるファイルを一旦削除。
・Mountain Lionへ移行
・必要なファイルだけをリストア

:) 超簡単w

20130501_114312

| | | コメント (0) | トラックバック (0)

2012年11月 4日 (日)

iPadでPodcast見てたら懐かしいの見つけた

Youtubeにもあるよな〜とおもって検索したらやはりあった :)
いろんな意味でエキサイティングな感じな時代だね。とうちの奥さんと話すなど。

このころのMSはMultiplanだよね。Excelじゃなくて..私の記憶が正しければ。。

売上の半分は...なんて言ってるけど実はこの裏で着々とWindowsを作っていたという、ことを考えながらBill Gatesの表情を見てると...

| | | コメント (0) | トラックバック (0)

2012年10月 5日 (金)

Steve Jobsの命日か。あっという間の一年だった。

20121005_215849

今日だけは特別なトップページ。
20121005_215529

| | | コメント (0) | トラックバック (0)

2012年8月22日 (水)

VirtualBox 4.1.20 released!

Mac OS X hosts: adaptions to Mountain Lionとの記載もあるので即アップデート

20120822_90846


| | | コメント (0) | トラックバック (0)

2012年6月23日 (土)

VirtualBox 4.1.18 released!

https://www.virtualbox.org/wiki/Changelog

定期的にアップデートされてて素敵:)

20120623_73025


| | | コメント (0) | トラックバック (0)

2012年1月14日 (土)

shutdown immeidateしない、ほかの理由に遭遇! (FYI)


ず〜〜〜〜っと、追記しようと思ってたんだけど書いてなかったので、徹夜明けで早起きした次いでなんで書いておきます。

もう一年近く前のネタなんだけどね。「shutdown immeidateしない、ほかの理由に遭遇!」

> yoheia-a さんありがとう :)

私か書いた記事がキッカケで調べなきゃいけなくなったらしいんだけどね。 ;)

http://d.hatena.ne.jp/yohei-a/20110627/1309180675




shutdown immeidateしない、ほかの理由に遭遇!
shutdown immeidateしない、ほかの理由に遭遇! #2
shutdown immeidateしない、ほかの理由に遭遇! #3
shutdown immeidateしない、ほかの理由に遭遇! おまけ
shutdown immeidateしない、ほかの理由に遭遇! おまけのおまけ(でた〜最近、よくあるパターンw)

| | | コメント (0) | トラックバック (0)

2012年1月 4日 (水)

Dashboard de Aquarium v1.6 released!

Dashboard de Aquarium v1.6をリリースしました。前回修正した(つもりだった)Snow Leopard以降で発生する問題点の再修正(単純に修正方法がまずかった)しました。
(Dashboard de Aquarium v1.6 released.
What's new in this version : Fixed bug.)

Picture_2_2

Download Dashboard De Aquarium v1.6 Now!

Download! v1.6 dashboard_de_aquarium.zip (997KB)

日本語(Japanese):
"Mac OS X 10.4 Tiger以降が必要です。ダウンロードにSafariを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。Safari以外のブラウザを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、解凍したウィジェットを /ライブラリ/Widgets/ フォルダに配置してください。ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。"

English:
"Mac OS X 10.4 Tiger or later is required. If you’re using Safari, click the download link. When the widget download is complete, show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it. If you’re using a browser other than Safari, click the download link. When the widget download is complete, unarchive it and place it in /Library/Widgets/ in your home folder. show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it."


動作確認した機種とMacOSXのバージョンは以下の通り。
(H/W models and the version of Mac OS X that I checked the operation as follows.)

System Requirements : MacOSX Tiger 10.4 or later -- Freeware.

PowerBook G4 1Ghz - MacOSX 10.5.8 (Leopard)
MacBookAir 1.86Ghz Core 2 Duo - MacOSX 10.7.2 (Lion)

Note: 国際化対応しています。言語環境が日本語であればメニューやボタンのテキストは日本語で表示されます。
Screen_shot_20100601_at_221756 Screen_shot_20100601_at_221810
Screen_shot_20100601_at_221821 Screen_shot_20100601_at_221832
Screen_shot_20100601_at_221840 Screen_shot_20100601_at_221915
Screen_shot_20100601_at_221936 Screen_shot_20100601_at_221946_2
20120104_153510

| | | コメント (0) | トラックバック (0)

2011年12月20日 (火)

VIrtualBox 4.1.8 released :)

クリスマス前にリリース! されてたのでupdate. Linuxのは後で。

https://www.virtualbox.org/wiki/Downloads

20111220_12000


20111220_12335


特に問題なく起動したし:)

20111220_12543


| | | コメント (0) | トラックバック (0)

2011年11月13日 (日)

DVDコレクション

レンタルするとかケーブルとかオンデマンドで見ればいいかな〜、と思っててまあ、DVD買う事は滅多にないのですが、特定のジャンルだけには反応してコレクションしてるわけです。


VHSしか見かけた事無くてコレクションできてなかったんだけど、再販されとのことでポチっと。ついでにソーシャルネットワークも安くなってたのでポチッと、出すタイミングうまいね。ついポチってしまったw


コレクションが増えた:)


このコレクション見て、あれ?、足りなくね? と思った人、鋭い!


2番煎じ色強くて面白くなかったので  ザ・インターネット2 はコレクションしてない(キッパリ!



ソフトウェアエンジニアなら一度は見とけ!?

| | | コメント (0) | トラックバック (0)

2011年11月 9日 (水)

VirtualBox 4.1.6 released - Update done

https://www.virtualbox.org/wiki/Changelog

出かけるまえにVirtualBox4.1.6 へUpdate done


virtualbox416_inst


virtualbox416_splash


| | | コメント (0) | トラックバック (0)

2011年10月 7日 (金)

Steve Jobs、安らかに…

書きたいことはいろいろあるがあえて、一言だけにしておこう。Steve Jobsありがとう。

20111007_25839


| | | コメント (0) | トラックバック (0)

2011年8月14日 (日)

Macユーザ増えたよな〜 :) とアクセスログ見て

このブログを書き始めたころは、タイトルとは裏腹にWindowsとかIEからのアクセスが多かったのですが、ここ1、2年でずいぶん変ってきたな〜、とか、IEの減りっぷりって凄いとか思いながらアクセスログみてると思います。

次のグラフは当ブログのアクログからIEの世代交替状況を見たものです。来年はどうなってるか楽しみですねー。さすがにIE10はまだありませんが、IE7など以前のはとっとと消えてほしいですね。


Ies



次のグラフは、当ブログを参照しているブラウザの種類(バージョンに関係なく)でまとめたものです。
IEの減りっぷりは見事というか、IE9の出遅れ感が強いだけで、これからIE10とかで盛り返してくるのか見物ですね〜。ただIE6/7/8使っているところって大人の事情で金縛り状態のところが多いから切り替わるためには1、2年のタイムラグはありそうな気がします。 だって昨年でさえ、IE6/7対応縛りでjavascriptがおそーいとか無茶やってるとこ多数あったしw


Browser



最後のグラフは、OS別(バージョンに関係なく)でまとめたものです。
いろいろな勉強会とか参加してて特にここ2、3年で随分Macユーザ増えましたよねー、ほんと。
以前はWindowノートが半分以上だったところでも、最近MBAだらけとかいうとこ多いっす。


Os


| | | コメント (0) | トラックバック (0)

2011年7月22日 (金)

Lionがでたとおもったら、VirtualBox 4.1も出てたのね。

http://www.virtualbox.org/wiki/Changelog

20110722_13624

Lion入れるより先にVirtualBox 4.1にしてみたw

| | | コメント (0) | トラックバック (0)

2011年7月17日 (日)

VirtualBox 4.0.12 リリース、活発だな〜 :)

気づいたら、4.0.12がリリースされてる。:) すげ〜活発な。  アップデートdone.

20110717_83523

| | | コメント (0) | トラックバック (0)

2011年7月 3日 (日)

Command-Period

Mac OS X keyboard shortcuts - http://support.apple.com/kb/ht1343

みてて思ったんだけど、脊髄反応で、⌘. タイプするMacユーザってどれだけいるんだろー、というより残っているんだろーなんて、ぼーっと思ってた :)

4


モーダルダイアログで、 「⌘.」表示しているアプリケーションとかほぼ絶滅危惧種なのか?、

SafariやChrome、Firefoxの「表示メニュー」には中止「⌘.」が用意されているけど、Operaには無いとか。MacOS Xで使うブラウザだけ見てると、絶滅危惧するほどでもないか…なんて思っているけど、

脊髄反応で「⌘.」タイプしても受付ないのあるしな〜どうなんだろ。「⌘.」が効くアプリケーションだと、あ、これに関わっている人達の仲にはMac歴長そーな人がいるよねーきっととか思ったりして :)。

| | | コメント (0) | トラックバック (0)

2011年4月 3日 (日)

VirtualBox de Oracle Linux 6

http://blogs.oracle.com/linux/2011/02/oracle_linux_6_dvds_now_available.html

ってことだったので、VirtualBox 使ってお試し環境作っておいた。問題もなくinstall done…

20110402_214835

| | | コメント (0) | トラックバック (0)

2011年2月17日 (木)

shutdown immeidateしない、ほかの理由に遭遇! おまけのおまけ(でた〜最近、よくあるパターンw)

さて、前回のおまけで終了〜。 のつもりだったがリスナー経由の時は問題ないな〜と気づいて気が変わり。おまけのおまけとなりましたw


前回まではBEQで繋いでたな〜、と思ってリスナー経由の専用サーバー接続で同じことを試してみたらshutdown immeidateが待機させられない事に気づいた。

お〜〜〜〜っ。oracleのサーバープロセスがdefunctにならないっつーことは…

ということで、早速試してみた。

※1つめの端末でSQL*Plusを起動してOracleをスタートアップ(なお事前にリスナーは起動済みです)

[oracle@lampeye ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.7.0 - Production on 水 2月 16 23:10:11 2011

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

23:10:11 > conn / as sysdba
接続されました。
23:21:54 SYS> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1603411968 bytes
Fixed Size 2160112 bytes
Variable Size 436210192 bytes
Database Buffers 1157627904 bytes
Redo Buffers 7413760 bytes
データベースがマウントされました。
データベースがオープンされました。
23:22:04 SYS>

※2つめの端末でSQL*Plusを起動してリスナー経由(この例では専用サーバー接続)でOracleへ接続後、host command(!)でshellへ入っておく。

[oracle@lampeye ˜]$ 
[oracle@lampeye ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.7.0 - Production on 水 2月 16 23:22:45 2011

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

23:22:45 > conn scott/tiger@lampeye
接続されました。
23:22:53 SCOTT> !
[oracle@lampeye ˜]$

※この状態で、プロセスツリーをチェックしてみると…Bequeath Protocol接続の時は、PID=5398の子プロセスとしてOracleのサーバープロセスがforkされていたのに、居ないのよ…

[oracle@lampeye ˜]$ ps -ef | grep gnome-terminal
oracle 4976 1 0 23:08 ? 00:00:01 gnome-terminal
oracle 5440 5031 0 23:23 pts/3 00:00:00 grep gnome-terminal
[oracle@lampeye ˜]$
[oracle@lampeye ˜]$ pstree -p 4976 -ual
gnome-terminal,4976,oracle
├─bash,4982
│ └─sqlplus,5154
│ └─oracle,5376 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
├─bash,5007
│ └─sqlplus,5398
│ └─bash,5413
├─bash,5031
│ └─pstree,5441 -p 4976 -ual
├─bash,5161
├─gnome-pty-helpe,4981
└─{gnome-terminal},4983
[oracle@lampeye ˜]$

※じゃ、どこに行ったのよ…と、調べてみると…リスナー経由だとサーバープロセスの親プロセスはINIT

23:29:17 SYS> select s.username,p.username,p.spid from v$process p join v$session s on p.addr = s.paddr where s.username='SCOTT'

USERNAME USERNAME SPID
------------------------------ --------------- ------------------------
SCOTT oracle 5400

経過: 00:00:00.01
23:29:18 SYS>

[oracle@lampeye ˜]$ ps -f -p 5400
UID PID PPID C STIME TTY TIME CMD
oracle 5400 1 0 23:22 ? 00:00:00 oraclelampeye (LOCAL=NO)
[oracle@lampeye ˜]$

※これならshutdown immeidateは待たされずに実行される!

23:35:22 SYS> 
23:35:22 SYS> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
23:35:33 SYS>

ということは、SQL*PlusからBequeath Protocol接続の場合、host commandでshellへ入ったままにしているとshutdown immeidateが待機させられるのな…


じゃ、sqlnet.ora に BEQUEATH_DETACH=yes を設定すれば回避できそーな気がする
Oracle Database Net Servicesリファレンス 11g リリース1(11.1)- 5.2.1 BEQUEATH_DETACH

早速、検証…

sqlnet.oraにBEQUEATH_DETACH=yesを追記。

[oracle@lampeye ˜]$ 
[oracle@lampeye ˜]$ cat $ORACLE_HOME/network/admin/sqlnet.ora
# sqlnet.ora Network Configuration File: /opt/u01/app/oracle/product/11.1.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
BEQUEATH_DETACH=yes

[oracle@lampeye ˜]$

※1つめの端末でSQL*Plusを起動し、Oracleをstartup…

[oracle@lampeye ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.7.0 - Production on 水 2月 16 23:39:14 2011

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

23:39:14 > conn / as sysdba
アイドル・インスタンスに接続しました。
23:39:17 SYS> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1603411968 bytes
Fixed Size 2160112 bytes
Variable Size 436210192 bytes
Database Buffers 1157627904 bytes
Redo Buffers 7413760 bytes
データベースがマウントされました。
データベースがオープンされました。
23:39:26 SYS>


※2つめの端末でSQL*Plusを起動、BEQ接続でSCOTTユーザへ接続後、host command(!)でshellへ入っておく…

[oracle@lampeye ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.7.0 - Production on 水 2月 16 23:39:39 2011

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

23:39:39 > conn scott/tiger
接続されました。
23:39:45 SCOTT> !
[oracle@lampeye ˜]$


※この状態でプロセスツリーを見てみると…お〜〜〜、SQL*Plusの子プロセスではなくなっている…

[oracle@lampeye ˜]$ pstree -p 4976 -ual 
gnome-terminal,4976,oracle
├─bash,4982
│ └─sqlplus,5596
├─bash,5007
│ └─sqlplus,5664
│ └─bash,5686
├─bash,5031
│ └─pstree,5711 -p 4976 -ual
├─bash,5161
├─gnome-pty-helpe,4981
└─{gnome-terminal},4983
[oracle@lampeye ˜]$

※じゃ〜、どこの子になっちゃったのか調べてみましょう…

23:41:08 SYS> select s.username,p.username,p.spid from v$process p join v$session s on p.addr = s.paddr where s.username IN ('SYS','SCOTT');

USERNAME USERNAME SPID
------------------------------ --------------- ------------------------
SYS oracle 5685
SCOTT oracle 5666

経過: 00:00:00.03
23:41:40 SYS>

お〜、やはり、SQL*Plusの子じゃなくて、INITの養子となってしまったようですw

[oracle@lampeye ˜]$ ps -f -p 5685 5666
UID PID PPID C STIME TTY STAT TIME CMD
oracle 5666 1 0 23:39 ? Ss 0:00 oraclelampeye (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 5685 1 0 23:40 ? Ss 0:00 oraclelampeye (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
[oracle@lampeye ˜]$

これなら、shutdown immeidateも待たされないでしょうね :)

23:42:52 SYS> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
23:43:07 SYS>

immeidateしない、ほかの理由に遭遇! ネタはこれで、ほんとにほんとのおしまい :)



shutdown immeidateしない、ほかの理由に遭遇!
shutdown immeidateしない、ほかの理由に遭遇! #2
shutdown immeidateしない、ほかの理由に遭遇! #3
shutdown immeidateしない、ほかの理由に遭遇! おまけ

| | | コメント (0) | トラックバック (0)

2011年1月30日 (日)

CentOS5.5のVirtualBox4.0のWindowsXP ProfessionalのVirtualPC2007のWindowsXPのIE7(長過ぎw)

うちの奥さんがIE7以上の動作確認などもしたいということだったので、タイミングよく公開されたInternet Explorer Application Compatibility VPC ImageのXP向けIE7とVirtualPCを使ってIE7のテスト環境を作ってみた。

CentOS5.5(HostOS)のVirtualBox4.0のWindowsXP Professional(GuestOS)のVirtualPC2007に前述のWindowsXP+IE7(英語版+日本語フォント)の環境になっとります。これで奥さん用IE7確認環境のできあがり。

フォント追加がめんどくさいので日本語フォントを含んだのもあるといいんですけどね〜 :)

Version1

| | | コメント (0) | トラックバック (0)

2011年1月 9日 (日)

CentOS5.5のVirtualBoxも4.0にアップデートした

MacOS X版VirtualBoxにつづき、CentOS5.5のVirtualBoxも3.2から4.0にアップデートした。

ついでなので、CentOS5.5のVirtualBoxのSolaris10をMacOS XのTerminalからX11 forwadingを使ってMac側で起動してみた。(どんな次いでだw)

まず最初はCentOSのVirtualBoxを3.2から4.0へアップデート。MacOS Xの場合特に気にすることもないのだが、Linuxの場合、3.2がインストールされたままだと4.0でアップデートできないので、一旦、VirtualBox 3.2はアンインストールする必要がある。アンインストールがうまくいったら4.0をインストールがうまくいく。(新規で4.0をインストールする場合は気にする必要ないですよ…)

ちなみに、うちのは64bit版です ;)

[root@lampeye Desktop]# cat /etc/redhat-release
CentOS release 5.5 (Final)
[root@lampeye Desktop]#
[root@lampeye Desktop]# uname -r
2.6.18-194.26.1.el5
[root@lampeye Desktop]#
[root@lampeye Desktop]# rpm -e VirtualBox-3.2-3.2.12_68302_rhel5-1.x86_64
[root@lampeye Desktop]# rpm -ivh VirtualBox-4.0-4.0.0_69151_rhel5-1.x86_64.rpm
警告: VirtualBox-4.0-4.0.0_69151_rhel5-1.x86_64.rpm: ヘッダ V4 DSA signature: NOKEY, key ID 98ab5139
準備中... ########################################### [100%]
1:VirtualBox-4.0 ########################################### [100%]

Creating group 'vboxusers'. VM users must be member of that group!

No precompiled module for this kernel found -- trying to build one. Messages
emitted during module compilation will be logged to /var/log/vbox-install.log.

Stopping VirtualBox kernel modules [ OK ]
Uninstalling old VirtualBox DKMS kernel modules [ OK ]
Trying to register the VirtualBox kernel modules using DKMS [失敗]
(Failed, trying without DKMS)
Recompiling VirtualBox kernel modules [ OK ]
Starting VirtualBox kernel modules [ OK ]


[root@lampeye Desktop]#

ちゃんとやっとこうかな〜と思って、やり直しておいた(2011/1/10更新)

[root@lampeye Desktop]# cat /etc/redhat-release
CentOS release 5.5 (Final)
[root@lampeye Desktop]#
[root@lampeye Desktop]# uname -r
2.6.18-194.26.1.el5
[root@lampeye Desktop]#
[root@lampeye Desktop]# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc
[root@lampeye Desktop]# rpm --import oracle_vbox.asc
[root@lampeye Desktop]# rpm --checksig VirtualBox-4.0-4.0.0_69151_rhel5-1.x86_64.rpm
VirtualBox-4.0-4.0.0_69151_rhel5-1.x86_64.rpm: (sha1) dsa sha1 md5 gpg OK
[root@lampeye Desktop]# rpm -e VirtualBox-3.2-3.2.12_68302_rhel5-1.x86_64
[root@lampeye Desktop]# rpm -ivh VirtualBox-4.0-4.0.0_69151_rhel5-1.x86_64.rpm
準備中... ########################################### [100%]
1:VirtualBox-4.0 ########################################### [100%]

Creating group 'vboxusers'. VM users must be member of that group!

No precompiled module for this kernel found -- trying to build one. Messages
emitted during module compilation will be logged to /var/log/vbox-install.log.

Stopping VirtualBox kernel modules [ OK ]
Uninstalling old VirtualBox DKMS kernel modules [ OK ]
Trying to register the VirtualBox kernel modules using DKMS [失敗]
(Failed, trying without DKMS)
Recompiling VirtualBox kernel modules [ OK ]
Starting VirtualBox kernel modules [ OK ]
[root@lampeye Desktop]#

これで3.2から4.0へ移行は完了! :)

では本題、MacOS XのTerminalからX11 forwordingを使ってCentOS5.5のVirtualBox4.0を起動し、GuestOSとしてSolaris10を起動してみます。(なお、このVM、以前、MacOS XのVirtualBox3.2で作成したものをCentOS5.5にコピーというか移動したもの…)

discus:˜ discus$
discus:˜ discus$
discus:˜ discus$ ssh -Y discus@lampeye
discus@lampeye's password:
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Sun Jan 9 11:19:09 2011 from 192.168.1.30
[discus@lampeye ˜]$
[discus@lampeye ˜]$ VirtualBox &
[1] 4796
[discus@lampeye ˜]$

20110109_112433

20110109_112116


20110109_112218

うまくいくもんですね〜 :)




VirtualBox 4.0にアップデートした

| | | コメント (0) | トラックバック (0)

2011年1月 6日 (木)

VirtualBox 4.0にアップデートした

VirtualBox4.0にアップデートしてみたMacOS Xのだけだけど。あとでLinuxのもやるよー

20110106_233143

20110106_233148

| | | コメント (0) | トラックバック (0)

VirtualBox de Oracle11g R2 RAC #23

VirtualBox de Oracle11g R2 RACのつづき。

さて、いよいよVirtualBox de Oracle11g R2 RACの最終回。簡単なTAFのテスト!

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

簡単なTransparent Application Failover (TAF)の確認

MacOS X Snow LeopardにあるOracle Instant Client 10g R2 for MacOS Xのtnsnames.oraを編集し以下の定義を追加しておきました!

ORCLTAF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = discus-rac64-scan.macdeoracle.jp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.macdeoracle.info)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)

TAF定義の接続識別子で接続します。

discus:˜ oracle$ 
discus:˜ oracle$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on 木 1月 6 04:47:16 2011

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

> conn scott/tiger@orcltaf
接続されました。
SCOTT>
SCOTT>
SCOTT> select count(*) from user_objects;

COUNT(*)
----------
0


orcl1インスタンスで、sysユーザで接続し、セッションの状態を確認してみます。

[oracle@discus164 ˜]$ 
[oracle@discus164 ˜]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 木 1月 6 04:48:42 2011

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

SYS>
SYS>
SYS> conn / as sysdba
接続されました。
SYS>
SYS> select
2 instance_name
3 ,username
4 ,failover_type
5 ,failover_method
6 ,failed_over
7 from
8 gv$session sess join gv$instance inst
9 on sess.inst_id = inst.inst_id
10 where
11 sess.username = 'SCOTT'
12 /

INSTANCE_NAME USERNAME FAILOVER_TYPE FAILOVER_M FAI
---------------- ------------------------------ ------------- ---------- ---
orcl1 SCOTT SELECT BASIC NO

SYS>


SCOTTはorcl1インスタンスに接続されクエリが実行されたようですね!
failoverさせるため、orcl1インスタンスをabortで強制停止してみます。

SYS> !srvctl status database -d orcl
インスタンスorcl1はノードdiscus164で実行中です。
インスタンスorcl2はノードdiscus264で実行中です。

SYS> !srvctl stop instance -d orcl -i orcl1 -o abort
SYS>
SYS> !srvctl status database -d orcl
インスタンスorcl1はノードdiscus164で実行されていません。
インスタンスorcl2はノードdiscus264で実行中です。

SYS>
SYS> l
1 select
2 instance_name
3 ,username
4 ,failover_type
5 ,failover_method
6 ,failed_over
7 from
8 gv$session sess join gv$instance inst
9 on sess.inst_id = inst.inst_id
10 where
11* sess.username = 'SCOTT'
SYS> /
select
*
行1でエラーが発生しました。:
ORA-03135: 接続が失われました
プロセスID: 5563
セッションID: 13、シリアル番号: 25


おっと〜、sysユーザでorcl1インスタンスに接続していたのでした〜。exitしちゃいます。


SCOTTユーザで、failoverさせるためクエリを再実行します。

SCOTT> r
1* select count(*) from user_objects

COUNT(*)
----------
0

SCOTT>


インスタンス:orcl2へ接続し直し確認。お〜うまくいけてますね!
orcl1のセッションだったscottユーザのセッションがfailoverしorcl2のセッションになっています。また今回設定したTAFのモードではクエリはエラーにはならず、生存インスタンスへ透過的にfailoverされます。

[oracle@discus264 ˜]$ 
[oracle@discus264 ˜]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 木 1月 6 04:55:48 2011

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

> conn / as sysdba
接続されました。
SYS> select
2 instance_name
3 ,username
4 ,failover_type
5 ,failover_method
6 ,failed_over
7 from
8 gv$session sess join gv$instance inst
9 on sess.inst_id = inst.inst_id
10 where
11 sess.username = 'SCOTT'
12 /


INSTANCE_NAME USERNAME FAILOVER_TYPE FAILOVER_M FAI
---------------- ------------------------------ ------------- ---------- ---
orcl2 SCOTT SELECT BASIC YES

SYS>


ちなみにcrsctl status resource -tで確認すると

・・・中略・・・
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE ONLINE discus264
ora.oc4j
1 OFFLINE OFFLINE
ora.orcl.db
1 OFFLINE OFFLINE Instance Shutdown
2 ONLINE ONLINE discus264 Open
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164
[grid@discus164 ˜]$

となっています。今回のようにデータベースインスタンスだけを停止した場合はこんな状態になるんですね。:)


ついでなので更新トランザクションも試してみましょうかね。
停止したデータベースインスタンスを起動し、scottユーザでupdate文を実行します。

discus:˜ oracle$ 
discus:˜ oracle$ sqlplus scott/tiger@orcltaf

SQL*Plus: Release 10.2.0.4.0 - Production on 木 1月 6 05:20:27 2011

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP
and Data Mining options
に接続されました。
SCOTT>
SCOTT>
SCOTT> insert into hoge values('abc');

1行が作成されました。

SCOTT>


orcl2インスタンスにsysユーザで接続して状態を確認してみます。
scottユーザはorcl1インスタンスに接続してinsert文を実行したようですね。まだ、failoverしていません。

SYS> 
SYS> l
1 select
2 instance_name
3 ,username
4 ,failover_type
5 ,failover_method
6 ,failed_over
7 from
8 gv$session sess join gv$instance inst
9 on sess.inst_id = inst.inst_id
10 where
11* sess.username = 'SCOTT'
SYS> /

INSTANCE_NAME USERNAME FAILOVER_TYPE FAILOVER_M FAI
---------------- ------------------------------ ------------- ---------- ---
orcl1 SCOTT SELECT BASIC NO


では、先ほどと同じようにorcl1インスタンスを強制停止してみます

SYS> !srvctl stop instance -d orcl -i orcl1 -o abort

SYS>
SYS> !srvctl status database -d orcl
インスタンスorcl1はノードdiscus164で実行されていません。
インスタンスorcl2はノードdiscus264で実行中です。


scottユーザで再度insert文を実行してみました。TAF特有のエラーメッセージが返されましたね。

SCOTT> r
1* insert into hoge values('abc')
insert into hoge values('abc')
*
行1でエラーが発生しました。:
ORA-25402: トランザクションをロールバックしてください。


セッションの状態を確認してみると…セッションはfailoverしています!

SYS> r
1 select
2 instance_name
3 ,username
4 ,failover_type
5 ,failover_method
6 ,failed_over
7 from
8 gv$session sess join gv$instance inst
9 on sess.inst_id = inst.inst_id
10 where
11* sess.username = 'SCOTT'

INSTANCE_NAME USERNAME FAILOVER_TYPE FAILOVER_M FAI
---------------- ------------------------------ ------------- ---------- ---
orcl2 SCOTT SELECT BASIC YES


scottユーザのトランザクションをロールバック後、リトライしてみると…

SCOTT> 
SCOTT> rollback;

ロールバックが完了しました。

SCOTT> insert into hoge values('abc');

1行が作成されました。

SCOTT>
SCOTT>

うまくいきましたね :)


ということで、VirtualBox de Oracle11g R2 RAC for Linux x86_64環境のできあがり〜。(完)






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15
VirtualBox de Oracle11g R2 RAC #16
VirtualBox de Oracle11g R2 RAC #17
VirtualBox de Oracle11g R2 RAC #18
VirtualBox de Oracle11g R2 RAC #19
VirtualBox de Oracle11g R2 RAC #20
VirtualBox de Oracle11g R2 RAC #21
VirtualBox de Oracle11g R2 RAC #22




VirtualBox de Oracle11g R2 RAC #16 - 番外編

| | | コメント (0) | トラックバック (0)

2011年1月 5日 (水)

VirtualBox de Oracle11g R2 RAC #22

VirtualBox de Oracle11g R2 RACのつづき。

ラス前です :) cluster databaseの起動停止確認。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Clusterの開始と停止の確認

Grid Infrastructureは自動起動にしてますが、手動起動、停止を確認しておきます。

rootユーザにてcrsctlコマンドでclusterを起動します。データベースインスタンスはOracle所有者でsrvctlコマンドを利用して起動してみます。
(ちなみに、rootユーザには、grid infrastructureのHOMEのbinへパスを通してあります。)

[root@discus164 ˜]# 
[root@discus164 ˜]# crsctl check cluster -all
**************************************************************
discus164:
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager
**************************************************************
discus264:
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager
**************************************************************
[root@discus164 ˜]#
[root@discus164 ˜]# crsctl start cluster -all
CRS-2672: 'ora.cssdmonitor'('discus164')の起動を試行しています
CRS-2672: 'ora.cssdmonitor'('discus264')の起動を試行しています
CRS-2676: 'ora.cssdmonitor'('discus264')の起動が成功しました
CRS-2676: 'ora.cssdmonitor'('discus164')の起動が成功しました
CRS-2672: 'ora.cssd'('discus164')の起動を試行しています
CRS-2672: 'ora.cssd'('discus264')の起動を試行しています
CRS-2672: 'ora.diskmon'('discus264')の起動を試行しています
CRS-2672: 'ora.diskmon'('discus164')の起動を試行しています
CRS-2676: 'ora.diskmon'('discus264')の起動が成功しました
CRS-2676: 'ora.diskmon'('discus164')の起動が成功しました
CRS-2676: 'ora.cssd'('discus164')の起動が成功しました
CRS-2676: 'ora.cssd'('discus264')の起動が成功しました
CRS-2672: 'ora.ctssd'('discus164')の起動を試行しています
CRS-2672: 'ora.ctssd'('discus264')の起動を試行しています
CRS-2676: 'ora.ctssd'('discus164')の起動が成功しました
CRS-2672: 'ora.evmd'('discus164')の起動を試行しています
CRS-2676: 'ora.ctssd'('discus264')の起動が成功しました
CRS-2672: 'ora.evmd'('discus264')の起動を試行しています
CRS-2672: 'ora.asm'('discus164')の起動を試行しています
CRS-2672: 'ora.asm'('discus264')の起動を試行しています
CRS-2676: 'ora.evmd'('discus264')の起動が成功しました
CRS-2676: 'ora.evmd'('discus164')の起動が成功しました
CRS-2676: 'ora.asm'('discus164')の起動が成功しました
CRS-2672: 'ora.crsd'('discus164')の起動を試行しています
CRS-2676: 'ora.asm'('discus264')の起動が成功しました
CRS-2672: 'ora.crsd'('discus264')の起動を試行しています
CRS-2676: 'ora.crsd'('discus164')の起動が成功しました
CRS-2676: 'ora.crsd'('discus264')の起動が成功しました
[root@discus164 ˜]#
[root@discus164 ˜]# crsctl check cluster -all
**************************************************************

discus164:
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
discus264:
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
[root@discus164 ˜]#
[root@discus164 ˜]# crsctl status resource -w 'TYPE co ora' -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.DATA.dg
OFFLINE OFFLINE discus164
OFFLINE OFFLINE discus264
ora.FRA.dg
OFFLINE OFFLINE discus164
OFFLINE OFFLINE discus264
ora.LISTENER.lsnr
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.asm
ONLINE ONLINE discus164 Started
ONLINE ONLINE discus264 Started
ora.eons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.gsd
OFFLINE OFFLINE discus164
OFFLINE OFFLINE discus264
ora.net1.network
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.ons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.registry.acfs
ONLINE ONLINE discus164
ONLINE ONLINE discus264
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE ONLINE discus264
ora.oc4j
1 OFFLINE OFFLINE
ora.orcl.db
1 OFFLINE OFFLINE
2 OFFLINE OFFLINE
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164
[root@discus164 ˜]#

データベースインスタンスを起動します。

[root@discus164 ˜]# su - oracle
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl start database -d orcl
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status database -d orcl
インスタンスorcl1はノードdiscus164で実行中です。
インスタンスorcl2はノードdiscus264で実行中です。
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ exit
logout

[root@discus164 ˜]#
[root@discus164 ˜]# crsctl status resource ora.orcl.db
NAME=ora.orcl.db
TYPE=ora.database.type
TARGET=ONLINE , ONLINE
STATE=ONLINE on discus164, ONLINE on discus264

[root@discus164 ˜]#

起動しましたね :)

最後に、データベースインスタンスは起動したままの状態で、clusterを停止/起動し、再び、データベースインスタンスが起動した状態になるかを確認しておきます。
Oracle Restartってんでしたっけ? この機能。

まず、データベースインスタンスは起動したまま、Grid Infrastructureを停止(全ノードを停止)します。

[root@discus164 ˜]# crsctl stop cluster -all
CRS-2673: 'ora.crsd'('discus164')の停止を試行しています
CRS-2673: 'ora.crsd'('discus264')の停止を試行しています
CRS-2790: 'discus264'上にある、Cluster Ready Services管理下のリソースのシャットダウンを開始しています
CRS-2673: 'ora.LISTENER.lsnr'('discus264')の停止を試行しています
CRS-2790: 'discus164'上にある、Cluster Ready Services管理下のリソースのシャットダウンを開始しています
CRS-2673: 'ora.LISTENER.lsnr'('discus164')の停止を試行しています
CRS-2673: 'ora.LISTENER_SCAN2.lsnr'('discus164')の停止を試行しています
CRS-2673: 'ora.LISTENER_SCAN3.lsnr'('discus164')の停止を試行しています
CRS-2673: 'ora.CRS.dg'('discus164')の停止を試行しています
CRS-2673: 'ora.LISTENER_SCAN1.lsnr'('discus264')の停止を試行しています
CRS-2673: 'ora.orcl.db'('discus164')の停止を試行しています
CRS-2673: 'ora.CRS.dg'('discus264')の停止を試行しています
CRS-2673: 'ora.orcl.db'('discus264')の停止を試行しています
CRS-2673: 'ora.registry.acfs'('discus264')の停止を試行しています
CRS-2673: 'ora.registry.acfs'('discus164')の停止を試行しています
CRS-2677: 'ora.LISTENER.lsnr'('discus264')の停止が成功しました
CRS-2673: 'ora.discus264.vip'('discus264')の停止を試行しています
CRS-2677: 'ora.LISTENER_SCAN1.lsnr'('discus264')の停止が成功しました
CRS-2673: 'ora.scan1.vip'('discus264')の停止を試行しています
CRS-2677: 'ora.discus264.vip'('discus264')の停止が成功しました
CRS-2677: 'ora.scan1.vip'('discus264')の停止が成功しました
CRS-2677: 'ora.LISTENER_SCAN3.lsnr'('discus164')の停止が成功しました
CRS-2673: 'ora.scan3.vip'('discus164')の停止を試行しています
CRS-2677: 'ora.LISTENER.lsnr'('discus164')の停止が成功しました
CRS-2673: 'ora.discus164.vip'('discus164')の停止を試行しています
CRS-2677: 'ora.LISTENER_SCAN2.lsnr'('discus164')の停止が成功しました
CRS-2673: 'ora.scan2.vip'('discus164')の停止を試行しています
CRS-2677: 'ora.scan3.vip'('discus164')の停止が成功しました
CRS-2677: 'ora.discus164.vip'('discus164')の停止が成功しました
CRS-2677: 'ora.scan2.vip'('discus164')の停止が成功しました
CRS-2677: 'ora.registry.acfs'('discus264')の停止が成功しました
CRS-2677: 'ora.registry.acfs'('discus164')の停止が成功しました
CRS-2677: 'ora.CRS.dg'('discus264')の停止が成功しました
CRS-2677: 'ora.CRS.dg'('discus164')の停止が成功しました
CRS-2677: 'ora.orcl.db'('discus264')の停止が成功しました
CRS-2673: 'ora.DATA.dg'('discus264')の停止を試行しています
CRS-2673: 'ora.FRA.dg'('discus264')の停止を試行しています
CRS-2677: 'ora.FRA.dg'('discus264')の停止が成功しました
CRS-2677: 'ora.orcl.db'('discus164')の停止が成功しました
CRS-2673: 'ora.DATA.dg'('discus164')の停止を試行しています
CRS-2673: 'ora.FRA.dg'('discus164')の停止を試行しています
CRS-2677: 'ora.DATA.dg'('discus264')の停止が成功しました
CRS-2673: 'ora.asm'('discus264')の停止を試行しています
CRS-2677: 'ora.asm'('discus264')の停止が成功しました
CRS-2673: 'ora.eons'('discus264')の停止を試行しています
CRS-2673: 'ora.ons'('discus264')の停止を試行しています
CRS-2677: 'ora.DATA.dg'('discus164')の停止が成功しました
CRS-2677: 'ora.ons'('discus264')の停止が成功しました
CRS-2673: 'ora.net1.network'('discus264')の停止を試行しています
CRS-2677: 'ora.net1.network'('discus264')の停止が成功しました
CRS-2677: 'ora.FRA.dg'('discus164')の停止が成功しました
CRS-2673: 'ora.asm'('discus164')の停止を試行しています
CRS-2677: 'ora.asm'('discus164')の停止が成功しました
CRS-2677: 'ora.eons'('discus264')の停止が成功しました
CRS-2792: 'discus264'上にある、Cluster Ready Services管理下のリソースのシャットダウンが完了しました
CRS-2673: 'ora.eons'('discus164')の停止を試行しています
CRS-2673: 'ora.ons'('discus164')の停止を試行しています
CRS-2677: 'ora.crsd'('discus264')の停止が成功しました
CRS-2673: 'ora.cssdmonitor'('discus264')の停止を試行しています
CRS-2673: 'ora.ctssd'('discus264')の停止を試行しています
CRS-2673: 'ora.evmd'('discus264')の停止を試行しています
CRS-2673: 'ora.asm'('discus264')の停止を試行しています
CRS-2677: 'ora.cssdmonitor'('discus264')の停止が成功しました
CRS-2677: 'ora.evmd'('discus264')の停止が成功しました
CRS-2677: 'ora.ctssd'('discus264')の停止が成功しました
CRS-2677: 'ora.asm'('discus264')の停止が成功しました
CRS-2673: 'ora.cssd'('discus264')の停止を試行しています
CRS-2677: 'ora.cssd'('discus264')の停止が成功しました
CRS-2673: 'ora.diskmon'('discus264')の停止を試行しています
CRS-2677: 'ora.diskmon'('discus264')の停止が成功しました
CRS-2675: 'ora.ons'('discus164')の停止に失敗しました
CRS-2679: 'ora.ons'('discus164')のクリーニングを試行しています
CRS-2681: 'ora.ons'('discus164')のクリーニングが成功しました
CRS-2673: 'ora.net1.network'('discus164')の停止を試行しています
CRS-2677: 'ora.net1.network'('discus164')の停止が成功しました
CRS-2677: 'ora.eons'('discus164')の停止が成功しました
CRS-2792: 'discus164'上にある、Cluster Ready Services管理下のリソースのシャットダウンが完了しました
CRS-2677: 'ora.crsd'('discus164')の停止が成功しました
CRS-2673: 'ora.cssdmonitor'('discus164')の停止を試行しています
CRS-2673: 'ora.ctssd'('discus164')の停止を試行しています
CRS-2673: 'ora.evmd'('discus164')の停止を試行しています
CRS-2673: 'ora.asm'('discus164')の停止を試行しています
CRS-2677: 'ora.cssdmonitor'('discus164')の停止が成功しました
CRS-2677: 'ora.evmd'('discus164')の停止が成功しました
CRS-2677: 'ora.asm'('discus164')の停止が成功しました
CRS-2677: 'ora.ctssd'('discus164')の停止が成功しました
CRS-2673: 'ora.cssd'('discus164')の停止を試行しています
CRS-2677: 'ora.cssd'('discus164')の停止が成功しました
CRS-2673: 'ora.diskmon'('discus164')の停止を試行しています
CRS-2677: 'ora.diskmon'('discus164')の停止が成功しました
[root@discus164 ˜]#
[root@discus164 ˜]# crsctl check cluster -all
**************************************************************
discus164:
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager
**************************************************************
discus264:
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager
**************************************************************
[root@discus164 ˜]#
[root@discus164 ˜]# su - oracle
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status database -d orcl
PRCD-1027 : データベースorclの取得に失敗しました
PRCR-1070 : リソース ora.orcl.dbが登録されているかどうかの確認に失敗しました
Cannot communicate with crsd
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ exit
logout


では、起動しま〜す。

[oracle@discus164 ˜]$ 
[root@discus164 ˜]# crsctl start cluster -all
CRS-2672: 'ora.cssdmonitor'('discus164')の起動を試行しています
CRS-2672: 'ora.cssdmonitor'('discus264')の起動を試行しています
CRS-2676: 'ora.cssdmonitor'('discus164')の起動が成功しました
CRS-2672: 'ora.cssd'('discus164')の起動を試行しています
CRS-2676: 'ora.cssdmonitor'('discus264')の起動が成功しました
CRS-2672: 'ora.cssd'('discus264')の起動を試行しています
CRS-2672: 'ora.diskmon'('discus264')の起動を試行しています
CRS-2672: 'ora.diskmon'('discus164')の起動を試行しています
CRS-2676: 'ora.diskmon'('discus264')の起動が成功しました
CRS-2676: 'ora.diskmon'('discus164')の起動が成功しました
CRS-2676: 'ora.cssd'('discus264')の起動が成功しました
CRS-2672: 'ora.ctssd'('discus264')の起動を試行しています
CRS-2676: 'ora.cssd'('discus164')の起動が成功しました
CRS-2672: 'ora.ctssd'('discus164')の起動を試行しています
CRS-2676: 'ora.ctssd'('discus264')の起動が成功しました
CRS-2676: 'ora.ctssd'('discus164')の起動が成功しました
CRS-2672: 'ora.evmd'('discus264')の起動を試行しています
CRS-2672: 'ora.evmd'('discus164')の起動を試行しています
CRS-2672: 'ora.asm'('discus264')の起動を試行しています
CRS-2672: 'ora.asm'('discus164')の起動を試行しています
CRS-2676: 'ora.evmd'('discus264')の起動が成功しました
CRS-2676: 'ora.evmd'('discus164')の起動が成功しました
CRS-2676: 'ora.asm'('discus164')の起動が成功しました
CRS-2672: 'ora.crsd'('discus164')の起動を試行しています
CRS-2676: 'ora.asm'('discus264')の起動が成功しました
CRS-2672: 'ora.crsd'('discus264')の起動を試行しています
CRS-2676: 'ora.crsd'('discus164')の起動が成功しました
CRS-2676: 'ora.crsd'('discus264')の起動が成功しました
[root@discus164 ˜]#
[root@discus164 ˜]# crsctl status resource -w 'TYPE co ora' -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.DATA.dg
ONLINE ONLINE discus164
OFFLINE OFFLINE discus264
ora.FRA.dg
ONLINE ONLINE discus164
OFFLINE OFFLINE discus264
ora.LISTENER.lsnr
ONLINE ONLINE discus164
ONLINE OFFLINE discus264
ora.asm
ONLINE ONLINE discus164 Started
ONLINE ONLINE discus264 Started
ora.eons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.gsd
OFFLINE OFFLINE discus164
OFFLINE OFFLINE discus264
ora.net1.network
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.ons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.registry.acfs
ONLINE ONLINE discus164
ONLINE ONLINE discus264
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE INTERMEDIATE discus164 FAILED OVER
ora.oc4j
1 OFFLINE OFFLINE
ora.orcl.db
1 ONLINE OFFLINE
2 ONLINE OFFLINE
ora.scan1.vip
1 ONLINE ONLINE discus164
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164


ora.LISTENER_SCAN1.lsnr/ora.discus264.vipの両リソースがノードdiscus164からノードdiscus264へ移動し、ノードdiscus164でデータベースインスタンスが起動しました…

・・・中着・・・
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE ONLINE discus264
ora.oc4j
1 OFFLINE OFFLINE
ora.orcl.db
1 ONLINE ONLINE discus164 Open
2 ONLINE OFFLINE
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164


最後にノードdiscus264でもデータベースインスタンスが起動し、crsctl stop cluster -allで停止する以前の状況になっています。 :)

・・・中略・・・
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE ONLINE discus264
ora.oc4j
1 OFFLINE OFFLINE
ora.orcl.db
1 ONLINE ONLINE discus164 Open
2 ONLINE ONLINE discus264 Open
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164


ということで起動/停止の確認終了!

次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15
VirtualBox de Oracle11g R2 RAC #16
VirtualBox de Oracle11g R2 RAC #17
VirtualBox de Oracle11g R2 RAC #18
VirtualBox de Oracle11g R2 RAC #19
VirtualBox de Oracle11g R2 RAC #20
VirtualBox de Oracle11g R2 RAC #21




VirtualBox de Oracle11g R2 RAC #16 - 番外編

| | | コメント (0) | トラックバック (0)

VirtualBox de Oracle11g R2 RAC #21

VirtualBox de Oracle11g R2 RACのつづき。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oralce Grid InsfastructureとDatabase構成の確認

OUIやらなんやらがいろいろと構成してくれたりしてくれてるので確認方法の確認って感じですが…

Oracle所有者にて実行…

[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status database -d orcl
インスタンスorcl1はノードdiscus164で実行中です。
インスタンスorcl2はノードdiscus264で実行中です。
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status instance -d orcl -n discus164
インスタンスorcl1はノードdiscus164で実行中です。
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status instance -d orcl -n discus264
インスタンスorcl2はノードdiscus264で実行中です。
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status nodeapps
VIP discus164-vipは有効です
VIP discus164-vipはノードで実行中です: discus164
VIP discus264-vipは有効です
VIP discus264-vipはノードで実行中です: discus264
ネットワークは有効です
ネットワークはノードで実行中です: discus164
ネットワークはノードで実行中です: discus264
GSDは無効です
GSDはノードで実行されていません: discus164
GSDはノードで実行されていません: discus264
ONSは有効です
ONSデーモンはノードで実行中です: discus164
ONSデーモンはノードで実行中です: discus264
eONSは有効です
eONSデーモンはノードで実行中です:discus164
eONSデーモンはノードで実行中です:discus264
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status vip -n discus164
VIP discus164-vipは有効です
VIP discus164-vipはノードで実行中です: discus164
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status vip -n discus264
VIP discus264-vipは有効です
VIP discus264-vipはノードで実行中です: discus264
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status asm -a
ASMはdiscus164,discus264で実行中です
ASMは有効です。
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status listener -n discus164
リスナーLISTENERはノードで有効です: discus164
リスナーLISTENERはノードで実行中です: discus164
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status listener -n discus264
リスナーLISTENERはノードで有効です: discus264
リスナーLISTENERはノードで実行中です: discus264
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status scan
SCAN VIP scan1は有効です
SCAN VIP scan1はノードdiscus264で実行されています
SCAN VIP scan2は有効です
SCAN VIP scan2はノードdiscus164で実行されています
SCAN VIP scan3は有効です
SCAN VIP scan3はノードdiscus164で実行されています
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status scan_listener
SCANリスナーLISTENER_SCAN1は有効です
SCANリスナーLISTENER_SCAN1はノードdiscus264で実行されています
SCANリスナーLISTENER_SCAN2は有効です
SCANリスナーLISTENER_SCAN2はノードdiscus164で実行されています
SCANリスナーLISTENER_SCAN3は有効です
SCANリスナーLISTENER_SCAN3はノードdiscus164で実行されています
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status srvpool -a
サーバー・プール名: Free
アクティブ・サーバー数: 0
アクティブ・サーバー名:
サーバー・プール名: Generic
アクティブ・サーバー数: 2
アクティブ・サーバー名: discus164,discus264
NAME=discus164 STATE=ONLINE
NAME=discus264 STATE=ONLINE
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status server -n discus164,discus264 -a
サーバー名: discus164
サーバーの状態: ONLINE
アクティブなサーバー・プール: Generic ora.orcl
サーバーの状態の詳細:
サーバー名: discus264
サーバーの状態: ONLINE
アクティブなサーバー・プール: Generic ora.orcl
サーバーの状態の詳細:
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status oc4j
OC4Jは無効です
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status diskgroup -g DATA -a
ディスク・グループDATAはdiscus164,discus264で実行中です
ディスク・グループDATAは有効です
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status diskgroup -g CRS -a
ディスク・グループCRSはdiscus164,discus264で実行中です
ディスク・グループCRSは有効です
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl status diskgroup -g FRA -a
ディスク・グループFRAはdiscus164,discus264で実行中です
ディスク・グループFRAは有効です
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$

構成の確認…

[oracle@discus164 ˜]$ 
[oracle@discus164 ˜]$ srvctl config database -d orcl -a
一意のデータベース名: orcl
データベース名: orcl
Oracleホーム: /u01/app/oracle/product/11.2.0/dbhome_1
Oracleユーザー: oracle
spfile: +DATA/orcl/spfileorcl.ora
ドメイン: macdeoracle.info
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
サーバー・プール: orcl
データベース・インスタンス: orcl1,orcl2
ディスク・グループ: DATA,FRA
サービス:
データベースは有効です
データベースは管理者によって管理されています
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl config nodeapps -a -g -s
VIPが存在します。:discus164
VIPが存在します。: /discus164-vip/192.168.1.190/255.255.255.0/eth0
VIPが存在します。:discus264
VIPが存在します。: /discus264-vip/192.168.1.191/255.255.255.0/eth0
GSDが存在します。
ONSデーモンは存在します。ローカル・ポート6100、リモート・ポート6200
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl config asm -a
ASMホーム: /u01/app/11.2.0/grid
ASMリスナー: LISTENER
ASMは有効です。
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl config listener -a
名前: LISTENER
ネットワーク: 1、所有者: grid
ホーム: <CRS home>
ノードdiscus264,discus164の/u01/app/11.2.0/grid
エンド・ポイント: TCP:1521
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl config scan
SCAN名: discus-rac64-scan.macdeoracle.jp、ネットワーク: 1/192.168.1.0/255.255.255.0/eth0
SCAN VIP名: scan1、IP: /discus-rac64-scan.macdeoracle.jp/192.168.1.200
SCAN VIP名: scan2、IP: /discus-rac64-scan.macdeoracle.jp/192.168.1.201
SCAN VIP名: scan3、IP: /discus-rac64-scan.macdeoracle.jp/192.168.1.202
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl config scan_listener
SCANリスナーLISTENER_SCAN1は存在します。ポート: TCP:1521
SCANリスナーLISTENER_SCAN2は存在します。ポート: TCP:1521
SCANリスナーLISTENER_SCAN3は存在します。ポート: TCP:1521
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ srvctl config srvpool
サーバー・プール名: Free
重要度: 0、最小: 0、最大: -1
候補サーバー名:
サーバー・プール名: Generic
重要度: 0、最小: 0、最大: -1
候補サーバー名: discus164,discus264
[oracle@discus164 ˜]$


Grid Infrastructureユーザにて実行…

[grid@discus164 ˜]$ crsctl check cluster -all
**************************************************************
discus164:
CRS-4537: Cluster Ready Servicesがオンラインです
CRS-4529: Cluster Synchronization Servicesがオンラインです
CRS-4533: イベント・マネージャがオンラインです
**************************************************************
discus264:
CRS-4537: Cluster Ready Servicesがオンラインです
CRS-4529: Cluster Synchronization Servicesがオンラインです
CRS-4533: イベント・マネージャがオンラインです
**************************************************************
[grid@discus164 ˜]$
[grid@discus164 ˜]$ crsctl check crs
CRS-4638: Oracle高可用性サービスがオンラインです
CRS-4537: Cluster Ready Servicesがオンラインです
CRS-4529: Cluster Synchronization Servicesがオンラインです
CRS-4533: イベント・マネージャがオンラインです
[grid@discus164 ˜]$
[grid@discus164 ˜]$ crsctl check ctss
CRS-4700: クラスタ時刻同期化サービスはオブザーバ・モードになっています。
[grid@discus164 ˜]$
[grid@discus164 ˜]$ crsctl check css
CRS-4529: Cluster Synchronization Servicesがオンラインです
[grid@discus164 ˜]$
[grid@discus164 ˜]$
[grid@discus164 ˜]$ crsctl status serverpool
NAME=Free
ACTIVE_SERVERS=

NAME=Generic
ACTIVE_SERVERS=discus164 discus264

NAME=ora.orcl
ACTIVE_SERVERS=discus164 discus264

[grid@discus164 ˜]$
[grid@discus164 ˜]$
[grid@discus164 ˜]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 8f431fe5d1304fd9bf6ad331d3aef536 (ORCL:CRSVOL1) [CRS]
1の投票ディスクを検出しました。
[grid@discus164 ˜]$
[grid@discus164 ˜]$ crsctl status resource -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.DATA.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.FRA.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.LISTENER.lsnr
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.asm
ONLINE ONLINE discus164 Started
ONLINE ONLINE discus264 Started
ora.eons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.gsd
OFFLINE OFFLINE discus164
OFFLINE OFFLINE discus264
ora.net1.network
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.ons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.registry.acfs
ONLINE ONLINE discus164
ONLINE ONLINE discus264
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE ONLINE discus264
ora.oc4j
1 OFFLINE OFFLINE
ora.orcl.db
1 ONLINE ONLINE discus164 Open
2 ONLINE ONLINE discus264 Open
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164

[grid@discus164 ˜]$


あれ、perlでエラーメッセージでてるけどご愛嬌 :)

[grid@discus164 ˜]$ asmcmd
ASMCMD>
ASMCMD>
ASMCMD> lsdg -g
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 42.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 42.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 42.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 42.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 42.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 42.
Inst_ID State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
1 MOUNTED EXTERN N 512 4096 1048576 4092 3694 0 3694 0 N CRS/
2 MOUNTED EXTERN N 512 4096 1048576 4092 3694 0 3694 0 N CRS/
1 MOUNTED NORMAL N 512 4096 1048576 43006 37436 0 18718 0 N DATA/
2 MOUNTED NORMAL N 512 4096 1048576 43006 37436 0 18718 0 N DATA/
1 MOUNTED NORMAL N 512 4096 1048576 43006 42336 0 21168 0 N FRA/
2 MOUNTED NORMAL N 512 4096 1048576 43006 42336 0 21168 0 N FRA/
ASMCMD>
ASMCMD> lsct -g
Instance_ID DB_Name Status Software_Version Compatible_version Instance_Name Disk_Group
1 +ASM CONNECTED 11.2.0.1.0 11.2.0.1.0 +ASM1 CRS
1 +ASM CONNECTED 11.2.0.1.0 11.2.0.1.0 +ASM1 DATA
2 +ASM CONNECTED 11.2.0.1.0 11.2.0.1.0 +ASM2 CRS
2 +ASM CONNECTED 11.2.0.1.0 11.2.0.1.0 +ASM2 DATA
1 orcl CONNECTED 11.2.0.1.0 11.2.0.0.0 orcl1 DATA
1 orcl CONNECTED 11.2.0.1.0 11.2.0.0.0 orcl1 FRA
2 orcl CONNECTED 11.2.0.1.0 11.2.0.0.0 orcl2 DATA
2 orcl CONNECTED 11.2.0.1.0 11.2.0.0.0 orcl2 FRA
ASMCMD>
ASMCMD> ls -g
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 46.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 46.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 46.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 46.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 46.
Use of uninitialized value in string comparison (cmp) at /u01/app/11.2.0/grid/lib/asmcmdbase.pm line 3420, <STDIN> line 46.
Inst_ID Name
1 CRS/
2 CRS/
1 DATA/
2 DATA/
1 FRA/
2 FRA/
ASMCMD>
ASMCMD> lsof
DB_Name Instance_Name Path
+ASM +ASM1 +crs.255.4294967295
orcl orcl1 +data/orcl/controlfile/current.256.739409625
orcl orcl1 +data/orcl/datafile/sysaux.260.739409693
orcl orcl1 +data/orcl/datafile/system.259.739409647
orcl orcl1 +data/orcl/datafile/undotbs1.261.739409729
orcl orcl1 +data/orcl/datafile/undotbs2.263.739409753
orcl orcl1 +data/orcl/datafile/users.264.739409767
orcl orcl1 +data/orcl/onlinelog/group_1.257.739409631
orcl orcl1 +data/orcl/onlinelog/group_2.258.739409637
orcl orcl1 +data/orcl/onlinelog/group_3.265.739412213
orcl orcl1 +data/orcl/onlinelog/group_4.266.739412217
orcl orcl1 +data/orcl/tempfile/temp.262.739409741
orcl orcl1 +fra/orcl/controlfile/current.256.739409629
orcl orcl1 +fra/orcl/onlinelog/group_1.257.739409635
orcl orcl1 +fra/orcl/onlinelog/group_2.258.739409643
orcl orcl1 +fra/orcl/onlinelog/group_3.259.739412215
orcl orcl1 +fra/orcl/onlinelog/group_4.260.739412225
ASMCMD>

最後にSQL*Plusから

SYS> l
1 select
2 inst_id
3 ,instance_name
4 ,parallel
5 ,status
6 ,database_status
7 ,active_state
8 ,host_name
9 from
10* gv$instance
SYS>
SYS> /

INST_ID INSTANCE_NAME PAR STATUS DATABASE_STATUS ACTIVE_ST HOST_NAME
---------- ---------------- --- ------------ ----------------- --------- ------------------------------
1 orcl1 YES OPEN ACTIVE NORMAL discus164.macdeoracle.jp
2 orcl2 YES OPEN ACTIVE NORMAL discus264.macdeoracle.jp

SYS>


次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15
VirtualBox de Oracle11g R2 RAC #16
VirtualBox de Oracle11g R2 RAC #17
VirtualBox de Oracle11g R2 RAC #18
VirtualBox de Oracle11g R2 RAC #19
VirtualBox de Oracle11g R2 RAC #20




VirtualBox de Oracle11g R2 RAC #16 - 番外編

| | | コメント (0) | トラックバック (0)

VirtualBox de Oracle11g R2 RAC #20

VirtualBox de Oracle11g R2 RACのつづき。

データベースも無事?作成できたので、今回はNet Serviceの確認を。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Net Serviceの確認

まず、クライアントになるMacOS X Snow LeopardのOracle10g R2 Instant Client側の設定(tnsnames.ora)から。

tnsnames.oraにVirtualBox上に構築したRACに接続するため以下ように定義した。
接続識別子ORCLはVirtualBox上に構築した際、自動生成された部分を複製し、残り2つの定義はRACの各ノードを個別に狙って接続するため接続識別子ORCL1/ORCL2を定義した。

discus:˜ oracle$ diff -u $TNS_ADMIN/tnsnames.ora.org $TNS_ADMIN/tnsnames.ora
--- /Users/Shared/instantclient_10_2/tnsnames.ora.org 2011-01-04 22:34:28.000000000 +0900
+++ /Users/Shared/instantclient_10_2/tnsnames.ora 2011-01-04 22:57:31.000000000 +0900
@@ -10,3 +10,32 @@
)
)

+# Oracle11g R2 11.2.0.1.0 RAC for Linux x86_64 / VirtualBox
+ORCL =
+ (DESCRIPTION =
+ (ADDRESS = (PROTOCOL = TCP)(HOST = discus-rac64-scan.macdeoracle.jp)(PORT = 1521))
+ (CONNECT_DATA =
+ (SERVER = DEDICATED)
+ (SERVICE_NAME = orcl.macdeoracle.info)
+ )
+ )
+
+ORCL2 =
+ (DESCRIPTION =
+ (ADDRESS = (PROTOCOL = TCP)(HOST = discus-rac64-scan.macdeoracle.jp)(PORT = 1521))
+ (CONNECT_DATA =
+ (SERVER = DEDICATED)
+ (SERVICE_NAME = orcl.macdeoracle.info)
+ (INSTANCE_NAME = orcl2)
+ )
+ )
+
+ORCL1 =
+ (DESCRIPTION =
+ (ADDRESS = (PROTOCOL = TCP)(HOST = discus-rac64-scan.macdeoracle.jp)(PORT = 1521))
+ (CONNECT_DATA =
+ (SERVER = DEDICATED)
+ (SERVICE_NAME = orcl.macdeoracle.info)
+ (INSTANCE_NAME = orcl1)
+ )
+ )
discus:˜ oracle$


接続テスト

事前にscan vipがどのような状態か確認しておく。

[oracle@discus164 ˜]$ srvctl status scan
SCAN VIP scan1は有効です
SCAN VIP scan1はノードdiscus264で実行されています
SCAN VIP scan2は有効です
SCAN VIP scan2はノードdiscus164で実行されています
SCAN VIP scan3は有効です
SCAN VIP scan3はノードdiscus164で実行されています
[oracle@discus164 ˜]$

[root@discus164 ˜]# crsctl status resource -w 'TYPE co scan' -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164
[root@discus164 ˜]#

MacOS X Snow LeopardのSQL*PlusからVirtualBox上のOracle11g R2 11.2.0.1.0 RACへの接続テスト。

discus:˜ oracle$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on 火 1月 4 23:16:53 2011

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

SQL> -- ロードバランシングで適当なインスタンスへ接続される。この場合インスタンス2に接続した
SQL> conn scott/tiger@orcl
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl2

SQL> -- 2度目はインスタンス1に接続した。(うまくいってる!)
SQL> conn scott/tiger@orcl
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl1

SQL> -- インスタンス1(orcl1)を狙った接続! OK.
SQL> conn scott/tiger@orcl1
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl1

SQL> -- 念のためもう一度。狙ったインスタンスへ接続している。
SQL> conn scott/tiger@orcl1
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl1

SQL> -- インスタンス2(orcl2)を狙った接続! OK.
SQL> conn scott/tiger@orcl2
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl2

SQL> -- 念のためもう一度!。狙ったインスタンスへ接続している。
SQL> conn scott/tiger@orcl2
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl2

SQL>


リモートからのも接続OK :)


以下、RACインスタンスのバージョン情報、Client側情報としてSQL*Plusのバージョン及び、OSのバージョン情報。

SQL> select * from gv$version; 

INST_ID BANNER
---------- --------------------------------------------------------------------------------
2 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
2 PL/SQL Release 11.2.0.1.0 - Production
2 CORE 11.2.0.1.0 Production
2 TNS for Linux: Version 11.2.0.1.0 - Production
2 NLSRTL Version 11.2.0.1.0 - Production
1 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
1 PL/SQL Release 11.2.0.1.0 - Production
1 CORE 11.2.0.1.0 Production
1 TNS for Linux: Version 11.2.0.1.0 - Production
1 NLSRTL Version 11.2.0.1.0 - Production

10行が選択されました。

SQL> !sqlplus -v

SQL*Plus: Release 10.2.0.4.0 - Production

SQL> !system_profiler SPSoftwareDataType | grep 'System Version'
System Version: Mac OS X 10.6.5 (10H574)

SQL>

次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15
VirtualBox de Oracle11g R2 RAC #16
VirtualBox de Oracle11g R2 RAC #17
VirtualBox de Oracle11g R2 RAC #18
VirtualBox de Oracle11g R2 RAC #19




VirtualBox de Oracle11g R2 RAC #16 - 番外編

| | | コメント (0) | トラックバック (0)

2011年1月 4日 (火)

VirtualBox de Oracle11g R2 RAC #19

VirtualBox de Oracle11g R2 RACのつづき。

いよいよデータベースの作成です。 :)

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle Cluster databaseの作成


Screenshot981

映像を見てもお分かりだと思いますが、VirtualBox上でクラスタデータベースを作成するとほぼ100%、DBCAの最後のダイアログを表示後DBCAを起動したVMが固まります。
Oracle11g R1 RACをVirtualBox上で構築した時と同じ症状です。DBCAのダイアログ上、データベースは作成されましたと表示されているのでそれを信じるばかり (^^;;;

念のため1時間ほど放置したあと、固まったVMは強制終了、残るノードはCentOSをシャットダウンします。その後、Openfiler、RACの両ノードを起動します。(ノード間の処理で固まっているようで実は処理に時間を要していることがなんどかあったので…念のため)

grid infrastructureユーザからcrsctlコマンドで状態を確認した結果は以下。(ちなみに、VM再起動後の状態)

[grid@discus164 ˜]$ crsctl status resource -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.DATA.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.FRA.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.LISTENER.lsnr
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.asm
ONLINE ONLINE discus164 Started
ONLINE ONLINE discus264 Started
ora.eons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.gsd
OFFLINE OFFLINE discus164
OFFLINE OFFLINE discus264
ora.net1.network
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.ons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.registry.acfs
ONLINE ONLINE discus164
ONLINE ONLINE discus264
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE ONLINE discus264
ora.oc4j
1 OFFLINE OFFLINE
ora.orcl.db
1 ONLINE ONLINE discus164 Open
2 ONLINE ONLINE discus264 Open
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164
[grid@discus164 ˜]$


[oracle@discus164 ˜]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 火 11月 30 14:54:50 2010

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

SQL> conn / as sysdba
パスワードを入力してください:
接続されました。
SQL> set linesize 132
SQL> select * from gv$version;

INST_ID BANNER
---------- --------------------------------------------------------------------------------
1 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
1 PL/SQL Release 11.2.0.1.0 - Production
1 CORE 11.2.0.1.0 Production
1 TNS for Linux: Version 11.2.0.1.0 - Production
1 NLSRTL Version 11.2.0.1.0 - Production
2 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
2 PL/SQL Release 11.2.0.1.0 - Production
2 CORE 11.2.0.1.0 Production
2 TNS for Linux: Version 11.2.0.1.0 - Production
2 NLSRTL Version 11.2.0.1.0 - Production

10行が選択されました。

SQL>

ふ〜、なんとかできたようですね。 とりあえず遊べそうです。

次回へつづく。 Grid Infrastructure周りはもっと調べないと…覚える必要のあることはまだまだ多い (^^;;

Oracle Clusterware管理およびデプロイメント・ガイド 11gリリース2(11.2非推奨のサブプログラムまたはコマンド…このマニュアルもちゃんと読んでおかないとな。><






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15
VirtualBox de Oracle11g R2 RAC #16
VirtualBox de Oracle11g R2 RAC #17
VirtualBox de Oracle11g R2 RAC #18

| | | コメント (0) | トラックバック (0)

2011年1月 3日 (月)

VirtualBox de Oracle11g R2 RAC #18

VirtualBox de Oracle11g R2 RACのつづきです。

インストールしなくてもいいんだけどいろいろと試したくなったときは便利なので、次いでにexamplesもインストール。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle11g R2 11.2.0.1.0 examplesのインストール

[oracle@discus164 database]$ 
[oracle@discus164 database]$
[oracle@discus164 database]$ cd ../examples
[oracle@discus164 examples]$ ll
合計 48
drwxr-xr-x 7 oracle oinstall 4096 8月 12 2009 doc
drwxr-xr-x 4 oracle oinstall 4096 8月 15 2009 install
drwxrwxr-x 2 oracle oinstall 4096 8月 15 2009 response
-rwxr-xr-x 1 oracle oinstall 3230 8月 15 2009 runInstaller
drwxr-xr-x 12 oracle oinstall 4096 8月 15 2009 stage
-rw-r--r-- 1 oracle oinstall 3419 8月 18 2009 welcome.html
[oracle@discus164 examples]$

[oracle@discus164 examples]$ ./runInstaller
Oracle Universal Installerを起動中です...
・・・中略・・・

Screenshot391

Screenshot621

Screenshot631

Screenshot641

Screenshot651

Screenshot661

Screenshot671

次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15
VirtualBox de Oracle11g R2 RAC #16
VirtualBox de Oracle11g R2 RAC #17

| | | コメント (0) | トラックバック (0)

VirtualBox de Oracle11g R2 RAC #17

VirtualBox de Oracle11g R2 RACのつづきです。

つづいてOracle11g R2 11.2.0.1.0 Database Installのインストール。
データベースは作成しないでソフトウェアだけのインストールを行います。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

ASMディスクグループの作成

Grid Infrastructureのインストール同様、Oracle所有者でもsshはパスフレーズありであらかじめ作成しておきます。OUIが作ってくれるだろうということを期待してね。

と、その前に、asmcaでOracleデータファイル及び、フラッシュ・リカバリ・エリア向けASMディスクグループを作成しておきました。
データファイル向けに+DATA、フラッシュ・リカバリ・エリア向けに+FRAというASMディスクグループを作成します。


Oracle11g R2 11.2.0.1.0 Database softwareのインストール

次に、Oracle Database 11g R2 11.2.0.1.0をインストールします。データベースは作成せず、別途dbcaを利用してデータベースを作成します。

省略していますが、お約束、root.shの実行もお忘れなく!



次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15
VirtualBox de Oracle11g R2 RAC #16

| | | コメント (0) | トラックバック (0)

VirtualBox de Oracle11g R2 RAC #16

VirtualBox de Oracle11g R2 RACのつづきです。

いよいよOracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール♪

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール

今回、確かめたかったこともあり、意図的にパスフレーズ付きでsshを手動構成しておいた。
その結果は…CVUの検査はパスするもののOUI上ではsshの構成がNGとなりOUIからsshの構成を行った。その後は問題なくインストールできた :) 便になったねOUI.

[grid@discus164 grid]$ ./runInstaller 
[1] 4417
[grid@discus164 grid]$ Oracle Universal Installerを起動中です...

一時領域の確認中: 120MBを超えている必要があります. 実際 32846MB 問題なし
スワップ領域の確認中: 150MBを超えている必要があります. 実際 5951MB 問題なし
モニターの確認中: 少なくとも256色表示するよう設定されている必要があります. 実際 16777216 問題なし
Oracle Universal Installerの起動を準備中 /tmp/OraInstall2010-11-29_01-51-19PM. お待ちください...


Root_shell



インストールの後半で、上記画面が表示されたら、いつものお約束、orainstRoot.shの実行とroot.shスクリプトの実行です!
RACを構成する全ノードのrootユーザで。最初にOUIを実行したノードで実行。成功したら以後残りのノードで実施(残りのノードでは平行実行可能だとか…今回は2ノードなので確認できず…)。

まず、OUIを実行したノードで実行!

[root@discus164 ˜]#
[root@discus164 ˜]# /u01/app/oraInventory/orainstRoot.sh
権限を変更中 /u01/app/oraInventory.
グループの読取り/書込み権限を追加中。
全ユーザーの読取り/書込み/実行権限を削除中。

グループ名の変更 /u01/app/oraInventory 宛先 oinstall.
スクリプトの実行が完了しました。

[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# /u01/app/11.2.0/grid/root.sh
Running Oracle 11g root.sh script...

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/app/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...

・・・中略・・・

profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
ADVM/ACFS is not supported on centos-release-5-5.el5.centos

CRS-2672: 'ora.gipcd'('discus164')の起動を試行しています

・・・中略・・・

CRS-2676: 'ora.ctssd'('discus164')の起動が成功しました

ASMは正常に作成され、起動しました。

ディスク・グループCRSは正常に作成されました。

clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-2672: 'ora.crsd'('discus164')の起動を試行しています
CRS-2676: 'ora.crsd'('discus164')の起動が成功しました
CRS-4256: Updating the profile
Successful addition of voting disk 5d6c953bf3aa4fe6bfff2a0f9b1e0d37.
Successfully replaced voting disk group with +CRS.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 5d6c953bf3aa4fe6bfff2a0f9b1e0d37 (ORCL:CRSVOL1) [CRS]
Located 1 voting disk(s).
CRS-2673: 'ora.crsd'('discus164')の停止を試行しています

・・・中略・・・

CRS-2676: 'ora.asm'('discus164')の起動が成功しました
CRS-2672: 'ora.CRS.dg'('discus164')の起動を試行しています
CRS-2676: 'ora.CRS.dg'('discus164')の起動が成功しました

discus164 2010/11/29 14:21:13 /u01/app/11.2.0/grid/cdata/discus164/backup_20101129_142113.olr
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
クラスタウェアのインベントリ・プロパティの更新中
Oracle Universal Installerを起動中です...

スワップ領域の確認中: 500MBを超えている必要があります. 実際 5951MB 問題なし
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /u01/app/oraInventory
'UpdateNodeList'が成功しました。
[root@discus164 ˜]#

ADVM/ACFS is not supported on centos-release-5-5.el5.centosという気になるメッセージがあったがこれはCentOSが正式にサポートされていないことが影響している。
一昨年暮れのエントリだけど、以下のブログが参考になるかも。

参考:
http://brianbontrager.blogspot.com/2009/09/learning-asm-breakin-rules-or-running.html

2011/1/4追記:
http://ivan.kartik.sk/index.php?show_article=49
リリースを偽装する方法もあるんだけどね。後者の方が楽は楽だけど元に戻すのが面倒だから今回はパスした。

簡単にリカバル方法がよくわかんなかったんでOracle Grid Infrastructureを一旦deinstallした。(これが一番わかりやすい!)
Oracle Grid Infrastructureをdeinstallコマンドで削除した記録は別途書くとして、一旦deinstallしたと思ってください!!!

ということで、OUIでOracle Grid Infrastractureをインストール。

orainstRoot.shを実行したところで、前述の参考ブログに記載されていたCentOS向け手当を行う。手当を行ってからroot.shを実行する。

orainstRoot.shを実行したところで、前述の参考ブログに記載されていたCentOS向け手当を行う。手当を行ってからroot.shを実行する。

CentOS上へのOracle Grid Infrastructureインストールでは大切(らしい)なので2度、書きましたよw

Oracle Grid Infrastructureユーザの$ORACLE_HOME/lib/osds_acfslib.pmの278行目以下にCentOSも正常に処理できるよう修正を加える。

[grid@discus164 ˜]$ su -
パスワード:
[root@discus164 ˜]# cd /u01/app/11.2.0/grid/lib
[root@discus164 lib]#
[root@discus164 lib]# cp -p osds_acfslib.pm osds_acfslib.pm.org
[root@discus164 lib]#
[root@discus164 lib]# vi osds_acfslib.pm
[root@discus164 lib]#
[root@discus164 lib]# diff -u osds_acfslib.pm osds_acfslib.pm.org
--- osds_acfslib.pm 2010/11/29 17:19:00.000000000 +0900
+++ osds_acfslib.pm.org 2009-07-02 11:13:48.000000000 +0900
@@ -278,8 +278,7 @@
# OK, now check to see if we support this release
$supported = 0;
if (($release =˜ /enterprise-release-5/) ||
- ($release =˜ /redhat-release-5/) ||
- ($release =˜ /centos-release-5/))
+ ($release =˜ /redhat-release-5/))
{
# Redhat 5
$supported = 1;
[root@discus164 lib]#

多分上記の修正だけで対処できると思うのだが、自信がないので以下のこともやっておいた… 写経になっております。m(_ _)m (RACを構成する全ノードのrootユーザで実施)

[root@discus164 ˜]# mkdir /lib/modules/2.6.18-194.17.1.el5/extra/usm
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# ls /u01/app/11.2.0/grid/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin/*ko
/u01/app/11.2.0/grid/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin/oracleacfs.ko
/u01/app/11.2.0/grid/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin/oracleadvm.ko
/u01/app/11.2.0/grid/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin/oracleoks.ko
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# cp /u01/app/11.2.0/grid/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin/*ko /lib/modules/2.6.18-194.17.1.el5/extra/usm
[root@discus164 ˜]# chmod 744 /lib/modules/2.6.18-194.17.1.el5/extra/usm
[root@discus164 ˜]#
[root@discus164 ˜]# depmod
[root@discus164 ˜]#
[root@discus164 ˜]# cp /u01/app/11.2.0/grid/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin/acfsdbg /sbin
[root@discus164 ˜]# chmod 755 /sbin/acfsdbg


ここまでの作業を終えたらOUIでOracle Grid InfrastructureをOUIでインストールする。手順は前述の映像を見てくださいね。

お約束のorainstRoot.shそれに続いて、root.shをOUIを起動したノードで実施、その後、残りのノードでも同様にrootユーザで実施する。

root.shの実行。こんどは大丈夫でしょうか〜〜〜〜。

[root@discus164 grid]# ./root.sh
Running Oracle 11g root.sh script...

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/app/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
2010-11-29 17:23:44: Parsing the host name
2010-11-29 17:23:44: Checking for super user privileges
2010-11-29 17:23:44: User has super user privileges

Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
root wallet
root wallet cert
root cert export
peer wallet
profile reader wallet
pa wallet
peer wallet keys
pa wallet keys
peer cert request
pa cert request
peer cert
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
CRS-2672: 'ora.gipcd'('discus164')の起動を試行しています
CRS-2672: 'ora.mdnsd'('discus164')の起動を試行しています
CRS-2676: 'ora.gipcd'('discus164')の起動が成功しました
CRS-2676: 'ora.mdnsd'('discus164')の起動が成功しました
CRS-2672: 'ora.gpnpd'('discus164')の起動を試行しています
CRS-2676: 'ora.gpnpd'('discus164')の起動が成功しました
CRS-2672: 'ora.cssdmonitor'('discus164')の起動を試行しています
CRS-2676: 'ora.cssdmonitor'('discus164')の起動が成功しました
CRS-2672: 'ora.cssd'('discus164')の起動を試行しています
CRS-2672: 'ora.diskmon'('discus164')の起動を試行しています
CRS-2676: 'ora.diskmon'('discus164')の起動が成功しました
CRS-2676: 'ora.cssd'('discus164')の起動が成功しました
CRS-2672: 'ora.ctssd'('discus164')の起動を試行しています
CRS-2676: 'ora.ctssd'('discus164')の起動が成功しました

ASMは正常に作成され、起動しました。

ディスク・グループCRSは正常に作成されました。

clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-2672: 'ora.crsd'('discus164')の起動を試行しています
CRS-2676: 'ora.crsd'('discus164')の起動が成功しました
CRS-4256: Updating the profile
Successful addition of voting disk 8f431fe5d1304fd9bf6ad331d3aef536.
Successfully replaced voting disk group with +CRS.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 8f431fe5d1304fd9bf6ad331d3aef536 (ORCL:CRSVOL1) [CRS]
Located 1 voting disk(s).
CRS-2673: 'ora.crsd'('discus164')の停止を試行しています
CRS-2677: 'ora.crsd'('discus164')の停止が成功しました
CRS-2673: 'ora.asm'('discus164')の停止を試行しています
CRS-2677: 'ora.asm'('discus164')の停止が成功しました
CRS-2673: 'ora.ctssd'('discus164')の停止を試行しています
CRS-2677: 'ora.ctssd'('discus164')の停止が成功しました
CRS-2673: 'ora.cssdmonitor'('discus164')の停止を試行しています
CRS-2677: 'ora.cssdmonitor'('discus164')の停止が成功しました
CRS-2673: 'ora.cssd'('discus164')の停止を試行しています
CRS-2677: 'ora.cssd'('discus164')の停止が成功しました
CRS-2673: 'ora.gpnpd'('discus164')の停止を試行しています
CRS-2677: 'ora.gpnpd'('discus164')の停止が成功しました
CRS-2673: 'ora.gipcd'('discus164')の停止を試行しています
CRS-2677: 'ora.gipcd'('discus164')の停止が成功しました
CRS-2673: 'ora.mdnsd'('discus164')の停止を試行しています
CRS-2677: 'ora.mdnsd'('discus164')の停止が成功しました
CRS-2672: 'ora.mdnsd'('discus164')の起動を試行しています
CRS-2676: 'ora.mdnsd'('discus164')の起動が成功しました
CRS-2672: 'ora.gipcd'('discus164')の起動を試行しています
CRS-2676: 'ora.gipcd'('discus164')の起動が成功しました
CRS-2672: 'ora.gpnpd'('discus164')の起動を試行しています
CRS-2676: 'ora.gpnpd'('discus164')の起動が成功しました
CRS-2672: 'ora.cssdmonitor'('discus164')の起動を試行しています
CRS-2676: 'ora.cssdmonitor'('discus164')の起動が成功しました
CRS-2672: 'ora.cssd'('discus164')の起動を試行しています
CRS-2672: 'ora.diskmon'('discus164')の起動を試行しています
CRS-2676: 'ora.diskmon'('discus164')の起動が成功しました
CRS-2676: 'ora.cssd'('discus164')の起動が成功しました
CRS-2672: 'ora.ctssd'('discus164')の起動を試行しています
CRS-2676: 'ora.ctssd'('discus164')の起動が成功しました
CRS-2672: 'ora.asm'('discus164')の起動を試行しています
CRS-2676: 'ora.asm'('discus164')の起動が成功しました
CRS-2672: 'ora.crsd'('discus164')の起動を試行しています
CRS-2676: 'ora.crsd'('discus164')の起動が成功しました
CRS-2672: 'ora.evmd'('discus164')の起動を試行しています
CRS-2676: 'ora.evmd'('discus164')の起動が成功しました
CRS-2672: 'ora.asm'('discus164')の起動を試行しています
CRS-2676: 'ora.asm'('discus164')の起動が成功しました
CRS-2672: 'ora.CRS.dg'('discus164')の起動を試行しています
CRS-2676: 'ora.CRS.dg'('discus164')の起動が成功しました
CRS-2672: 'ora.registry.acfs'('discus164')の起動を試行しています
CRS-2676: 'ora.registry.acfs'('discus164')の起動が成功しました

discus164 2010/11/29 17:30:15 /u01/app/11.2.0/grid/cdata/discus164/backup_20101129_173015.olr
パッケージインストールの準備中...
cvuqdisk-1.0.7-1
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
クラスタウェアのインベントリ・プロパティの更新中
Oracle Universal Installerを起動中です...

スワップ領域の確認中: 500MBを超えている必要があります. 実際 5951MB 問題なし
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /u01/app/oraInventory
'UpdateNodeList'が成功しました。
[root@discus164 grid]#

お〜〜、でけた。

では、他のノードでも実行
残りのノードでも同様の操作実施後root.sh実行

[root@discus264 grid]# ./root.sh
Running Oracle 11g root.sh script...

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/app/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
2010/11/29 17:45:30: Parsing the host name
2010/11/29 17:45:30: Checking for super user privileges
2010/11/29 17:45:30: User has super user privileges
Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
CRS-4402: CSSデーモンが排他モードで開始されましたが、ノードdiscus164、番号1のアクティブCSSデーモンが検出されたため中断します
CRS-2673: 'ora.cssdmonitor'('discus264')の停止を試行しています
CRS-2677: 'ora.cssdmonitor'('discus264')の停止が成功しました
CRS-2673: 'ora.gpnpd'('discus264')の停止を試行しています
CRS-2677: 'ora.gpnpd'('discus264')の停止が成功しました
CRS-2673: 'ora.gipcd'('discus264')の停止を試行しています
CRS-2677: 'ora.gipcd'('discus264')の停止が成功しました
CRS-2673: 'ora.mdnsd'('discus264')の停止を試行しています
CRS-2677: 'ora.mdnsd'('discus264')の停止が成功しました
An active cluster was found during exclusive startup, restarting to join the cluster
CRS-2672: 'ora.mdnsd'('discus264')の起動を試行しています
CRS-2676: 'ora.mdnsd'('discus264')の起動が成功しました
CRS-2672: 'ora.gipcd'('discus264')の起動を試行しています
CRS-2676: 'ora.gipcd'('discus264')の起動が成功しました
CRS-2672: 'ora.gpnpd'('discus264')の起動を試行しています
CRS-2676: 'ora.gpnpd'('discus264')の起動が成功しました
CRS-2672: 'ora.cssdmonitor'('discus264')の起動を試行しています
CRS-2676: 'ora.cssdmonitor'('discus264')の起動が成功しました
CRS-2672: 'ora.cssd'('discus264')の起動を試行しています
CRS-2672: 'ora.diskmon'('discus264')の起動を試行しています
CRS-2676: 'ora.diskmon'('discus264')の起動が成功しました
CRS-2676: 'ora.cssd'('discus264')の起動が成功しました
CRS-2672: 'ora.ctssd'('discus264')の起動を試行しています
CRS-2676: 'ora.ctssd'('discus264')の起動が成功しました
CRS-2672: 'ora.drivers.acfs'('discus264')の起動を試行しています
CRS-2676: 'ora.drivers.acfs'('discus264')の起動が成功しました
CRS-2672: 'ora.asm'('discus264')の起動を試行しています
CRS-2676: 'ora.asm'('discus264')の起動が成功しました
CRS-2672: 'ora.crsd'('discus264')の起動を試行しています
CRS-2676: 'ora.crsd'('discus264')の起動が成功しました
CRS-2672: 'ora.evmd'('discus264')の起動を試行しています
CRS-2676: 'ora.evmd'('discus264')の起動が成功しました

discus264 2010/11/29 17:48:45 /u01/app/11.2.0/grid/cdata/discus264/backup_20101129_174845.olr
パッケージインストールの準備中...
cvuqdisk-1.0.7-1
Configure Oracle Grid Infrastructure for a Cluster ... succeeded
クラスタウェアのインベントリ・プロパティの更新中
Oracle Universal Installerを起動中です...

スワップ領域の確認中: 500MBを超えている必要があります. 実際 5951MB 問題なし
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /u01/app/oraInventory
'UpdateNodeList'が成功しました。
[root@discus264 grid]#


root.sh実行おわり!


Grid Infrastructureインストール後の簡単な確認(RACを構成する全ノードのgrid infrastructureユーザ及び、rootユーザで実施)

crsの状態確認(RACを構成する全ノードのGrid Infrastructureユーザで

[grid@discus164 ˜]$ crsctl check crs
CRS-4638: Oracle高可用性サービスがオンラインです
CRS-4537: Cluster Ready Servicesがオンラインです
CRS-4529: Cluster Synchronization Servicesがオンラインです
CRS-4533: イベント・マネージャがオンラインです
[grid@discus164 ˜]$

[grid@discus264 ˜]$ crsctl check crs
CRS-4638: Oracle高可用性サービスがオンラインです
CRS-4537: Cluster Ready Servicesがオンラインです
CRS-4529: Cluster Synchronization Servicesがオンラインです
CRS-4533: イベント・マネージャがオンラインです
[grid@discus264 ˜]$


clusterノードの確認(RACを構成する全ノードのGrid Infrastructureユーザで)

[grid@discus164 ˜]$ olsnodes -n
discus164 1
discus264 2
[grid@discus164 ˜]$

[grid@discus264 ˜]$ olsnodes -n
discus164 1
discus264 2
[grid@discus264 ˜]$

リスナーの確認(RACを構成する全ノード

[grid@discus164 ˜]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_SCAN2
LISTENER_SCAN3
LISTENER
[grid@discus164 ˜]$

[grid@discus264 ˜]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_SCAN1
LISTENER
[grid@discus264 ˜]$

以下、OUIを実行したノードから確認しとけばOKかな
ASMは起動してるかな〜(Grid Infrastructureユーザで

[grid@discus164 ˜]$ srvctl status asm -a
ASMはdiscus164,discus264で実行中です
ASMは有効です。
[grid@discus164 ˜]$

rootユーザでcrsctlコマンド実行してますが、Grid Infrastructureホームのbinにパス通しているだけです :) 楽なので。
Oracle Cluster Registry (OCR) - rootユーザで実施

[root@discus164 grid]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2364
Available space (kbytes) : 259756
ID : 1391852321
Device/File Name : +CRS
Device/File integrity check succeeded

Device/File not configured

Device/File not configured

Device/File not configured

Device/File not configured

Cluster registry integrity check succeeded

Logical corruption check succeeded

[root@discus164 grid]#


Voting Diskの確認(Grid Infrastructureユーザで

[grid@discus164 ˜]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 5d6c953bf3aa4fe6bfff2a0f9b1e0d37 (ORCL:CRSVOL1) [CRS]
1の投票ディスクを検出しました。
[grid@discus164 ˜]$

[grid@discus164 ~]$ crsctl status resource -w 'TYPE co ora' -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.LISTENER.lsnr
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.asm
ONLINE ONLINE discus164 Started
ONLINE ONLINE discus264 Started
ora.eons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.gsd
OFFLINE OFFLINE discus164
OFFLINE OFFLINE discus264
ora.net1.network
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.ons
ONLINE ONLINE discus164
ONLINE ONLINE discus264
ora.registry.acfs
ONLINE ONLINE discus164
ONLINE ONLINE discus264
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE discus264
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE discus164
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE discus164
ora.discus164.vip
1 ONLINE ONLINE discus164
ora.discus264.vip
1 ONLINE ONLINE discus264
ora.oc4j
1 OFFLINE OFFLINE
ora.scan1.vip
1 ONLINE ONLINE discus264
ora.scan2.vip
1 ONLINE ONLINE discus164
ora.scan3.vip
1 ONLINE ONLINE discus164
[grid@discus164 ~]$


root.shのバックアップが推奨されているので、これはやっといた。

Back Up the root.sh Script

Oracle recommends that you back up the root.sh script after you
complete an installation. If you install other products
in the same Oracle home directory, then the installer updates
the contents of the existing root.sh script during the installation.
If you require information contained in the original root.sh script,
then you can recover it from the root.sh file copy.

Back up the root.sh file on both Oracle RAC nodes as root:

[grid@discus164 ˜]$ su -
パスワード:
[root@discus164 ˜]# cd /u01/app/11.2.0/grid
[root@discus164 grid]# ls -l root.sh
-rwxr-x--- 1 grid oinstall 723 11月 29 14:10 root.sh
[root@discus164 grid]# cp -p root.sh root.sh.discus164_after_install20101129
[root@discus164 grid]#

[grid@discus264 ˜]$ su -
パスワード:
[root@discus264 ˜]# cd /u01/app/11.2.0
[root@discus264 11.2.0]# cd grid
[root@discus264 grid]# ls -l root.sh
-rwxr-x--- 1 grid oinstall 723 11月 29 14:12 root.sh
[root@discus264 grid]# cp -p root.sh root.sh.discus264_after_install20101129
[root@discus264 grid]#


Install Cluster Health Management Software が推奨されてるけど。別途時間があったらやる→TODO


次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14
VirtualBox de Oracle11g R2 RAC #15

| | | コメント (0) | トラックバック (0)

2011年1月 2日 (日)

VirtualBox de Oracle11g R2 RAC #15

VirtualBox de Oracle11g R2 RACのつづきです。

今回はOracle11g R2 11.2.0.1.0 RACインストール事前作業。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle11g R2 11.2.0.1.0 RACインストール事前作業

以下、Linux 64bit版をダウンロード
Oracle11g R2 11.2.0.1.0 for Linux (64bit)
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip

Oracle11g R2 Grid Infrastructure for Linux (64bit)
linux.x64_11gR2_grid.zip

Oracle11g R2 Examples for Linux (64bit)
linux.x64_11gR2_examples.zip


ダウンロードした、Oracle Grid Infrastructureをgrid infrastructureユーザで解凍

[grid@discus164 oracle]$ ll
合計 1029240
-rw-r--r-- 1 grid oinstall 1052897657 11月 25 10:51 linux.x64_11gR2_grid.zip
[grid@discus164 oracle]$ unzip linux.x64_11gR2_grid.zip

・・・中略・・・

extracting: grid/install/addLangs.sh
inflating: grid/runInstaller
inflating: grid/welcome.html
inflating: grid/runcluvfy.sh
[grid@discus164 oracle]$


ダウンロードしたOracle11g R2 11.2.0.1.0とexamplesをOracle所有者で解凍

[oracle@discus164 oracle]$ ll
合計 2840744
-rw-r--r-- 1 oracle oinstall 1239269270 11月 25 10:56 linux.x64_11gR2_database_1of2.zip
-rw-r--r-- 1 oracle oinstall 1111416131 11月 25 10:57 linux.x64_11gR2_database_2of2.zip
-rw-r--r-- 1 oracle oinstall 555366950 11月 25 10:57 linux.x64_11gR2_examples.zip
[oracle@discus164 oracle]$ unzip linux.x64_11gR2_database_1of2.zip

・・・中略・・・

extracting: database/install/addLangs.sh
inflating: database/runInstaller
inflating: database/welcome.html
[oracle@discus164 oracle]$
[oracle@discus164 oracle]$ unzip linux.x64_11gR2_database_2of2.zip

・・・中略・・・

inflating: database/stage/Components/oracle.sysman.console.db/11.2.0.1.0/1/DataFiles/filegroup13.jar
inflating: database/stage/Components/oracle.sysman.console.db/11.2.0.1.0/1/DataFiles/filegroup8.jar
inflating: database/stage/Components/oracle.sysman.console.db/11.2.0.1.0/1/DataFiles/filegroup9.jar
[oracle@discus164 oracle]$
[oracle@discus164 oracle]$ unzip linux.x64_11gR2_examples.zip

・・・中略・・・

extracting: examples/install/addLangs.sh
inflating: examples/runInstaller
inflating: examples/welcome.html
[oracle@discus164 oracle]$


cvudiskパッケージのインストール(RACを構成する全ノードのrootユーザで)

[grid@discus164 ˜]$ cd ./software/oracle/grid/rpm
[grid@discus164 rpm]$ su
パスワード:
[root@discus164 rpm]# ll
合計 12
-rw-rw-r-- 1 grid oinstall 8173 7月 15 2009 cvuqdisk-1.0.7-1.rpm
[root@discus164 rpm]# CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
[root@discus164 rpm]# rpm -iv cvuqdisk-1.0.7-1.rpm
パッケージインストールの準備中...
cvuqdisk-1.0.7-1
[root@discus164 rpm]#


CVUによる事前チェック(RACを構成する全ノードのOracle Grid Infrastructureユーザで実施)
-fixupオプションを付加すると修正用スクリプトが作成されますが、下記例では付加していません。(修正スクリプトを作成させた方が楽ですけどね。)

今回は全ログを省略なしで!w

[grid@discus164 grid]$ pwd
/home/grid/software/oracle/grid
[grid@discus164 grid]$ ll
合計 76
drwxr-xr-x 9 grid oinstall 4096 8月 17 2009 doc
drwxr-xr-x 4 grid oinstall 4096 12月 3 11:05 install
drwxrwxr-x 2 grid oinstall 4096 8月 15 2009 response
drwxrwxr-x 2 grid oinstall 4096 8月 15 2009 rpm
-rwxr-xr-x 1 grid oinstall 3227 8月 15 2009 runInstaller
-rwxrwxr-x 1 grid oinstall 3795 1月 29 2009 runcluvfy.sh
drwxrwxr-x 2 grid oinstall 4096 8月 15 2009 sshsetup
drwxr-xr-x 14 grid oinstall 4096 8月 15 2009 stage
-rw-r--r-- 1 grid oinstall 4228 8月 18 2009 welcome.html
[grid@discus164 grid]$
[grid@discus164 grid]$
[grid@discus164 grid]$ ./runcluvfy.sh stage -pre crsinst -n discus164,discus264 -verbose

クラスタ・サービス設定の事前チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus164"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus264 はい
discus164 はい
結果: ノード"discus164"からのノード到達可能性チェックに合格しました


ユーザー等価をチェック中...

チェック: ユーザー"grid"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus264 合格
discus164 合格
結果: ユーザー"grid"のユーザー等価チェックに合格しました

ノード接続性をチェック中...

ホスト構成ファイルをチェック中...
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus264 合格
discus164 合格

ホスト構成ファイルの検証に成功しました


ノード"discus264"のインタフェース情報
名前 IPアドレス サブネット ゲートウェイ デフォルト・ゲートウェイ HWアドレス MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.1.91 192.168.1.0 0.0.0.0 192.168.1.1 08:00:27:CC:3B:97 1500
eth1 192.168.3.91 192.168.3.0 0.0.0.0 192.168.1.1 08:00:27:2F:97:0D 1500
eth2 192.168.2.91 192.168.2.0 0.0.0.0 192.168.1.1 08:00:27:AD:F8:40 1500


ノード"discus164"のインタフェース情報
名前 IPアドレス サブネット ゲートウェイ デフォルト・ゲートウェイ HWアドレス MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.1.90 192.168.1.0 0.0.0.0 192.168.1.1 08:00:27:B1:38:96 1500
eth1 192.168.3.90 192.168.3.0 0.0.0.0 192.168.1.1 08:00:27:FC:A5:8E 1500
eth2 192.168.2.90 192.168.2.0 0.0.0.0 192.168.1.1 08:00:27:47:E9:2C 1500


チェック: サブネット"192.168.1.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus264:eth0 discus164:eth0 はい
結果: ノードdiscus264,discus164を持つサブネット"192.168.1.0"のノード接続性に合格しました


チェック: サブネット"192.168.1.0"のTCP接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus164:192.168.1.90 discus264:192.168.1.91 合格
結果: サブネット"192.168.1.0"のTCP接続性チェックに合格しました


チェック: サブネット"192.168.3.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus264:eth1 discus164:eth1 はい
結果: ノードdiscus264,discus164を持つサブネット"192.168.3.0"のノード接続性に合格しました


チェック: サブネット"192.168.3.0"のTCP接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus164:192.168.3.90 discus264:192.168.3.91 合格
結果: サブネット"192.168.3.0"のTCP接続性チェックに合格しました


チェック: サブネット"192.168.2.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus264:eth2 discus164:eth2 はい
結果: ノードdiscus264,discus164を持つサブネット"192.168.2.0"のノード接続性に合格しました


チェック: サブネット"192.168.2.0"のTCP接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus164:192.168.2.90 discus264:192.168.2.91 合格
結果: サブネット"192.168.2.0"のTCP接続性チェックに合格しました


VIPの候補となるサブネット"192.168.1.0"で見つかったインタフェースは次のとおりです:
discus264 eth0:192.168.1.91
discus164 eth0:192.168.1.90

プライベート・インターコネクトの候補となるサブネット"192.168.3.0"で見つかったインタフェースは次のとおりです:
discus264 eth1:192.168.3.91
discus164 eth1:192.168.3.90

プライベート・インターコネクトの候補となるサブネット"192.168.2.0"で見つかったインタフェースは次のとおりです:
discus264 eth2:192.168.2.91
discus164 eth2:192.168.2.90

結果: ノード接続性チェックに合格しました


チェック: メモリー合計
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 3.86GB (4051640.0KB) 1.5GB (1572864.0KB) 合格
discus164 3.86GB (4051640.0KB) 1.5GB (1572864.0KB) 合格
結果: メモリー合計チェックに合格しました

チェック: 使用可能なメモリー
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 3.5GB (3673300.0KB) 50MB (51200.0KB) 合格
discus164 3.34GB (3498792.0KB) 50MB (51200.0KB) 合格
結果: 使用可能なメモリーチェックに合格しました

チェック: スワップ領域
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 5.81GB (6094840.0KB) 3.86GB (4051640.0KB) 合格
discus164 5.81GB (6094840.0KB) 3.86GB (4051640.0KB) 合格
結果: スワップ領域チェックに合格しました

チェック: "discus264:/tmp"のディスク空き領域
パス ノード名 マウント・ポイント 使用可能 必須 コメント
---------------- ------------ ------------ ------------ ------------ ------------
/tmp discus264 / 37.78GB 1GB 合格
結果: "discus264:/tmp"のディスク空き領域チェックに合格しました

チェック: "discus164:/tmp"のディスク空き領域
パス ノード名 マウント・ポイント 使用可能 必須 コメント
---------------- ------------ ------------ ------------ ------------ ------------
/tmp discus164 / 33.62GB 1GB 合格
結果: "discus164:/tmp"のディスク空き領域チェックに合格しました

チェック: "grid"の既存ユーザー
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus264 存在します 合格
discus164 存在します 合格
結果: "grid"の既存ユーザーチェックに合格しました

チェック: "oinstall"のグループの存在
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus264 存在します 合格
discus164 存在します 合格
結果: "oinstall"のグループの存在チェックに合格しました

チェック: "dba"のグループの存在
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus264 存在します 合格
discus164 存在します 合格
結果: "dba"のグループの存在チェックに合格しました

チェック: グループ"oinstall"内のユーザー"grid"[プライマリ]のメンバーシップ
ノード名 ユーザーが存在します グループが存在します グループ内のユーザー プライマリ コメント
---------------- ------------ ------------ ------------ ------------ ------------
discus264 はい はい はい はい 合格
discus164 はい はい はい はい 合格
結果: グループ"oinstall"内のユーザー"grid"[プライマリ]のメンバーシップ・チェックに合格しました

チェック: グループ"dba"内のユーザー"grid"のメンバーシップ
ノード名 ユーザーが存在します グループが存在します グループ内のユーザー コメント
---------------- ------------ ------------ ------------ ----------------
discus264 はい はい いいえ 失敗
discus164 はい はい いいえ 失敗
結果: グループ"dba"内のユーザー"grid"のメンバーシップ・チェックが失敗しました

チェック: 実行レベル
ノード名 実行レベル 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 5 3,5 合格
discus164 5 3,5 合格
結果: 実行レベルチェックに合格しました

チェック: "最大オープン・ファイル記述子数"の強い制限
ノード名 タイプ 使用可能 必須 コメント
---------------- ------------ ------------ ------------ ----------------
discus264 強い 65536 65536 合格
discus164 強い 65536 65536 合格
結果: "最大オープン・ファイル記述子数"の強い制限チェックに合格しました

チェック: "最大オープン・ファイル記述子数"の弱い制限
ノード名 タイプ 使用可能 必須 コメント
---------------- ------------ ------------ ------------ ----------------
discus264 弱い 1024 1024 合格
discus164 弱い 1024 1024 合格
結果: "最大オープン・ファイル記述子数"の弱い制限チェックに合格しました

チェック: "最大ユーザー・プロセス"の強い制限
ノード名 タイプ 使用可能 必須 コメント
---------------- ------------ ------------ ------------ ----------------
discus264 強い 16384 16384 合格
discus164 強い 16384 16384 合格
結果: "最大ユーザー・プロセス"の強い制限チェックに合格しました

チェック: "最大ユーザー・プロセス"の弱い制限
ノード名 タイプ 使用可能 必須 コメント
---------------- ------------ ------------ ------------ ----------------
discus264 弱い 2047 2047 合格
discus164 弱い 2047 2047 合格
結果: "最大ユーザー・プロセス"の弱い制限チェックに合格しました

チェック: システム・アーキテクチャ
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 x86_64 x86_64 合格
discus164 x86_64 x86_64 合格
結果: システム・アーキテクチャチェックに合格しました

チェック: カーネル・バージョン
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 2.6.18-194.17.1.el5 2.6.9 合格
discus164 2.6.18-194.17.1.el5 2.6.9 合格
結果: カーネル・バージョンチェックに合格しました

チェック: "semmsl"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 250 250 合格
discus164 250 250 合格
結果: "semmsl"のカーネル・パラメータチェックに合格しました

チェック: "semmns"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 32000 32000 合格
discus164 32000 32000 合格
結果: "semmns"のカーネル・パラメータチェックに合格しました

チェック: "semopm"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 100 100 合格
discus164 100 100 合格
結果: "semopm"のカーネル・パラメータチェックに合格しました

チェック: "semmni"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 128 128 合格
discus164 128 128 合格
結果: "semmni"のカーネル・パラメータチェックに合格しました

チェック: "shmmax"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 68719476736 536870912 合格
discus164 68719476736 536870912 合格
結果: "shmmax"のカーネル・パラメータチェックに合格しました

チェック: "shmmni"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 4096 4096 合格
discus164 4096 4096 合格
結果: "shmmni"のカーネル・パラメータチェックに合格しました

チェック: "shmall"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 4294967296 2097152 合格
discus164 4294967296 2097152 合格
結果: "shmall"のカーネル・パラメータチェックに合格しました

チェック: "file-max"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 6815744 6815744 合格
discus164 6815744 6815744 合格
結果: "file-max"のカーネル・パラメータチェックに合格しました

チェック: "ip_local_port_range"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 between 9000 & 65500 between 9000 & 65500 合格
discus164 between 9000 & 65500 between 9000 & 65500 合格
結果: "ip_local_port_range"のカーネル・パラメータチェックに合格しました

チェック: "rmem_default"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 262144 262144 合格
discus164 262144 262144 合格
結果: "rmem_default"のカーネル・パラメータチェックに合格しました

チェック: "rmem_max"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 4194304 4194304 合格
discus164 4194304 4194304 合格
結果: "rmem_max"のカーネル・パラメータチェックに合格しました

チェック: "wmem_default"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 262144 262144 合格
discus164 262144 262144 合格
結果: "wmem_default"のカーネル・パラメータチェックに合格しました

チェック: "wmem_max"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 1048576 1048576 合格
discus164 1048576 1048576 合格
結果: "wmem_max"のカーネル・パラメータチェックに合格しました

チェック: "aio-max-nr"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 1048576 1048576 合格
discus164 1048576 1048576 合格
結果: "aio-max-nr"のカーネル・パラメータチェックに合格しました

チェック: "make-3.80"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 make-3.81-3.el5 make-3.80 合格
discus164 make-3.81-3.el5 make-3.80 合格
結果: "make-3.80"のパッケージの存在チェックに合格しました

チェック: "binutils-2.15.92.0.2"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 binutils-2.17.50.0.6-14.el5 binutils-2.15.92.0.2 合格
discus164 binutils-2.17.50.0.6-14.el5 binutils-2.15.92.0.2 合格
結果: "binutils-2.15.92.0.2"のパッケージの存在チェックに合格しました

チェック: "gcc-3.4.6"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 gcc-4.1.2-48.el5 gcc-3.4.6 合格
discus164 gcc-4.1.2-48.el5 gcc-3.4.6 合格
結果: "gcc-3.4.6"のパッケージの存在チェックに合格しました

チェック: "libaio-0.3.105 (i386)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libaio-0.3.106-5 (i386) libaio-0.3.105 (i386) 合格
discus164 libaio-0.3.106-5 (i386) libaio-0.3.105 (i386) 合格
結果: "libaio-0.3.105 (i386)"のパッケージの存在チェックに合格しました

チェック: "libaio-0.3.105 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libaio-0.3.106-5 (x86_64) libaio-0.3.105 (x86_64) 合格
discus164 libaio-0.3.106-5 (x86_64) libaio-0.3.105 (x86_64) 合格
結果: "libaio-0.3.105 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "glibc-2.3.4-2.41 (i686)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 glibc-2.5-49.el5_5.6 (i686) glibc-2.3.4-2.41 (i686) 合格
discus164 glibc-2.5-49.el5_5.6 (i686) glibc-2.3.4-2.41 (i686) 合格
結果: "glibc-2.3.4-2.41 (i686)"のパッケージの存在チェックに合格しました

チェック: "glibc-2.3.4-2.41 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 glibc-2.5-49.el5_5.6 (x86_64) glibc-2.3.4-2.41 (x86_64) 合格
discus164 glibc-2.5-49.el5_5.6 (x86_64) glibc-2.3.4-2.41 (x86_64) 合格
結果: "glibc-2.3.4-2.41 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "compat-libstdc++-33-3.2.3 (i386)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 compat-libstdc++-33-3.2.3-61 (i386) compat-libstdc++-33-3.2.3 (i386) 合格
discus164 compat-libstdc++-33-3.2.3-61 (i386) compat-libstdc++-33-3.2.3 (i386) 合格
結果: "compat-libstdc++-33-3.2.3 (i386)"のパッケージの存在チェックに合格しました

チェック: "compat-libstdc++-33-3.2.3 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 compat-libstdc++-33-3.2.3-61 (x86_64) compat-libstdc++-33-3.2.3 (x86_64) 合格
discus164 compat-libstdc++-33-3.2.3-61 (x86_64) compat-libstdc++-33-3.2.3 (x86_64) 合格
結果: "compat-libstdc++-33-3.2.3 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "elfutils-libelf-0.97 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 elfutils-libelf-0.137-3.el5 (x86_64) elfutils-libelf-0.97 (x86_64) 合格
discus164 elfutils-libelf-0.137-3.el5 (x86_64) elfutils-libelf-0.97 (x86_64) 合格
結果: "elfutils-libelf-0.97 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "elfutils-libelf-devel-0.97"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.97 合格
discus164 elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.97 合格
結果: "elfutils-libelf-devel-0.97"のパッケージの存在チェックに合格しました

チェック: "glibc-common-2.3.4"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 glibc-common-2.5-49.el5_5.6 glibc-common-2.3.4 合格
discus164 glibc-common-2.5-49.el5_5.6 glibc-common-2.3.4 合格
結果: "glibc-common-2.3.4"のパッケージの存在チェックに合格しました

チェック: "glibc-devel-2.3.4 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 glibc-devel-2.5-49.el5_5.6 (x86_64) glibc-devel-2.3.4 (x86_64) 合格
discus164 glibc-devel-2.5-49.el5_5.6 (x86_64) glibc-devel-2.3.4 (x86_64) 合格
結果: "glibc-devel-2.3.4 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "glibc-headers-2.3.4"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 glibc-headers-2.5-49.el5_5.6 glibc-headers-2.3.4 合格
discus164 glibc-headers-2.5-49.el5_5.6 glibc-headers-2.3.4 合格
結果: "glibc-headers-2.3.4"のパッケージの存在チェックに合格しました

チェック: "gcc-c++-3.4.6"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 gcc-c++-4.1.2-48.el5 gcc-c++-3.4.6 合格
discus164 gcc-c++-4.1.2-48.el5 gcc-c++-3.4.6 合格
結果: "gcc-c++-3.4.6"のパッケージの存在チェックに合格しました

チェック: "libaio-devel-0.3.105 (i386)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libaio-devel-0.3.106-5 (i386) libaio-devel-0.3.105 (i386) 合格
discus164 libaio-devel-0.3.106-5 (i386) libaio-devel-0.3.105 (i386) 合格
結果: "libaio-devel-0.3.105 (i386)"のパッケージの存在チェックに合格しました

チェック: "libaio-devel-0.3.105 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libaio-devel-0.3.106-5 (x86_64) libaio-devel-0.3.105 (x86_64) 合格
discus164 libaio-devel-0.3.106-5 (x86_64) libaio-devel-0.3.105 (x86_64) 合格
結果: "libaio-devel-0.3.105 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "libgcc-3.4.6 (i386)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libgcc-4.1.2-48.el5 (i386) libgcc-3.4.6 (i386) 合格
discus164 libgcc-4.1.2-48.el5 (i386) libgcc-3.4.6 (i386) 合格
結果: "libgcc-3.4.6 (i386)"のパッケージの存在チェックに合格しました

チェック: "libgcc-3.4.6 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libgcc-4.1.2-48.el5 (x86_64) libgcc-3.4.6 (x86_64) 合格
discus164 libgcc-4.1.2-48.el5 (x86_64) libgcc-3.4.6 (x86_64) 合格
結果: "libgcc-3.4.6 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "libstdc++-3.4.6 (i386)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libstdc++-4.1.2-48.el5 (i386) libstdc++-3.4.6 (i386) 合格
discus164 libstdc++-4.1.2-48.el5 (i386) libstdc++-3.4.6 (i386) 合格
結果: "libstdc++-3.4.6 (i386)"のパッケージの存在チェックに合格しました

チェック: "libstdc++-3.4.6 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libstdc++-4.1.2-48.el5 (x86_64) libstdc++-3.4.6 (x86_64) 合格
discus164 libstdc++-4.1.2-48.el5 (x86_64) libstdc++-3.4.6 (x86_64) 合格
結果: "libstdc++-3.4.6 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "libstdc++-devel-3.4.6 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 libstdc++-devel-4.1.2-48.el5 (x86_64) libstdc++-devel-3.4.6 (x86_64) 合格
discus164 libstdc++-devel-4.1.2-48.el5 (x86_64) libstdc++-devel-3.4.6 (x86_64) 合格
結果: "libstdc++-devel-3.4.6 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "sysstat-5.0.5"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 sysstat-7.0.2-3.el5_5.1 sysstat-5.0.5 合格
discus164 sysstat-7.0.2-3.el5_5.1 sysstat-5.0.5 合格
結果: "sysstat-5.0.5"のパッケージの存在チェックに合格しました

チェック: "unixODBC-2.2.11 (i386)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 unixODBC-2.2.11-7.1 (i386) unixODBC-2.2.11 (i386) 合格
discus164 unixODBC-2.2.11-7.1 (i386) unixODBC-2.2.11 (i386) 合格
結果: "unixODBC-2.2.11 (i386)"のパッケージの存在チェックに合格しました

チェック: "unixODBC-2.2.11 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 unixODBC-2.2.11-7.1 (x86_64) unixODBC-2.2.11 (x86_64) 合格
discus164 unixODBC-2.2.11-7.1 (x86_64) unixODBC-2.2.11 (x86_64) 合格
結果: "unixODBC-2.2.11 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "unixODBC-devel-2.2.11 (i386)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 unixODBC-devel-2.2.11-7.1 (i386) unixODBC-devel-2.2.11 (i386) 合格
discus164 unixODBC-devel-2.2.11-7.1 (i386) unixODBC-devel-2.2.11 (i386) 合格
結果: "unixODBC-devel-2.2.11 (i386)"のパッケージの存在チェックに合格しました

チェック: "unixODBC-devel-2.2.11 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 unixODBC-devel-2.2.11-7.1 (x86_64) unixODBC-devel-2.2.11 (x86_64) 合格
discus164 unixODBC-devel-2.2.11-7.1 (x86_64) unixODBC-devel-2.2.11 (x86_64) 合格
結果: "unixODBC-devel-2.2.11 (x86_64)"のパッケージの存在チェックに合格しました

チェック: "pdksh-5.2.14"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 pdksh-5.2.14-36.el5 pdksh-5.2.14 合格
discus164 pdksh-5.2.14-36.el5 pdksh-5.2.14 合格
結果: "pdksh-5.2.14"のパッケージの存在チェックに合格しました

チェック: "expat-1.95.7 (x86_64)"のパッケージの存在
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 expat-1.95.8-8.3.el5_5.3 (x86_64) expat-1.95.7 (x86_64) 合格
discus164 expat-1.95.8-8.3.el5_5.3 (x86_64) expat-1.95.7 (x86_64) 合格
結果: "expat-1.95.7 (x86_64)"のパッケージの存在チェックに合格しました

UID値0を持つ複数のユーザーをチェック中
結果: UID値0を持つ複数のユーザーのチェックに合格しました

チェック: 現行のグループID
結果: 現行のグループIDチェックに合格しました
コア・ファイル名パターンの一貫性をチェック中...
コア・ファイル名パターンの一貫性チェックに合格しました。

ユーザー"grid"が"root"グループにないことを確認中
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus264 存在しません 合格
discus164 存在しません 合格
結果: ユーザー"grid"は"root"グループの一部ではありません。チェックに合格しました

デフォルトのユーザー・ファイル作成マスクのチェック
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus264 0022 0022 合格
discus164 0022 0022 合格
結果: デフォルトのユーザー・ファイル作成マスクのチェックに合格しました

ネットワーク・タイム・プロトコル(NTP)を使用してクロック同期のチェックを開始中...

NTP構成ファイルのチェックが開始されました...
NTP構成ファイル"/etc/ntp.conf"はすべてのノードで使用できます
NTP構成ファイルのチェックに合格しました

デーモン活性をチェック中...

チェック: "ntpd"の活性
ノード名 実行中ですか
------------------------------------ ------------------------
discus264 はい
discus164 はい
結果: "ntpd"の活性チェックに合格しました

NTPデーモンのコマンドラインのslewオプション"-x"をチェック中
チェック: NTPデーモン・コマンド・ライン
ノード名 Slewオプションが設定されているか
------------------------------------ ------------------------
discus264 はい
discus164 はい
結果:
NTPデーモンのslewオプションのチェックに合格しました

ファイル"/etc/sysconfig/ntpd"内のNTPデーモンのブート時構成のslewオプション"-x"をチェック中

チェック: NTPデーモンのブート時構成
ノード名 Slewオプションが設定されているか
------------------------------------ ------------------------
discus264 はい
discus164 はい
結果:
NTPデーモンのブート時構成のslewオプションのチェックに合格しました

NTP共通タイム・サーバーのチェックが開始されました...
NTPタイム・サーバー"210.173.160.86"は、NTPデーモンが実行されているすべてのノードで共通です
NTPタイム・サーバー"210.173.176.251"は、NTPデーモンが実行されているすべてのノードで共通です
PRVF-5408 : NTPタイム・サーバー"210.173.160.56"は、次のノード"discus264"でのみ共通です
共通NTPタイム・サーバーのチェックに合格しました

NTPタイム・サーバーからのクロック時間オフセットのチェックが開始されました...
ノード"[discus264, discus164]"をチェック中...
チェック: NTP タイム・サーバーからのクロック時間オフセット

タイム・サーバー: 210.173.160.86
時間オフセット制限: 1000.0 ミリ秒
ノード名 時間オフセット ステータス
------------ ------------------------ ------------------------
discus264 -428.02 合格
discus164 0.164 合格
タイム・サーバー"210.173.160.86"の時間オフセットは、ノード"[discus264, discus164]"の許容限界内です。

タイム・サーバー: 210.173.176.251
時間オフセット制限: 1000.0 ミリ秒
ノード名 時間オフセット ステータス
------------ ------------------------ ------------------------
discus264 -427.36 合格
discus164 0.417 合格
タイム・サーバー"210.173.176.251"の時間オフセットは、ノード"[discus264, discus164]"の許容限界内です。
クロック時間オフセットのチェックに合格しました

結果: ネットワーク・タイム・プロトコル(NTP)を使用したクロック同期のチェックに合格しました


クラスタ・サービス設定の事前チェックはすべてのノードで失敗しました。

「結果: グループ"dba"内のユーザー"grid"のメンバーシップ・チェックが失敗しました」という箇所は無視可能というかマニュアルにもGrid Infrastructureユーザをdbaグループに属させる必要があると記載されていないので無視でOK.


次に、H/WとOSの設定の事前チェック(RACを構成する全ノードのOracle Grid Infrastructureユーザで実施)

[grid@discus164 grid]$ pwd
/home/grid/software/oracle/grid
[grid@discus164 grid]$ ll
合計 76
drwxr-xr-x 9 grid oinstall 4096 8月 17 2009 doc
drwxr-xr-x 4 grid oinstall 4096 12月 3 11:05 install
drwxrwxr-x 2 grid oinstall 4096 8月 15 2009 response
drwxrwxr-x 2 grid oinstall 4096 8月 15 2009 rpm
-rwxr-xr-x 1 grid oinstall 3227 8月 15 2009 runInstaller
-rwxrwxr-x 1 grid oinstall 3795 1月 29 2009 runcluvfy.sh
drwxrwxr-x 2 grid oinstall 4096 8月 15 2009 sshsetup
drwxr-xr-x 14 grid oinstall 4096 8月 15 2009 stage
-rw-r--r-- 1 grid oinstall 4228 8月 18 2009 welcome.html
[grid@discus164 grid]$
[grid@discus164 grid]$
[grid@discus164 grid]$ ./runcluvfy.sh stage -post hwos -n discus164,discus264 -verbose

ハードウェアとオペレーティング・システム設定の事後チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus164"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus264 はい
discus164 はい
結果: ノード"discus164"からのノード到達可能性チェックに合格しました


ユーザー等価をチェック中...

チェック: ユーザー"grid"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus264 合格
discus164 合格
結果: ユーザー"grid"のユーザー等価チェックに合格しました

ノード接続性をチェック中...

ホスト構成ファイルをチェック中...
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus264 合格
discus164 合格

ホスト構成ファイルの検証に成功しました


ノード"discus264"のインタフェース情報
名前 IPアドレス サブネット ゲートウェイ デフォルト・ゲートウェイ HWアドレス MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.1.91 192.168.1.0 0.0.0.0 192.168.1.1 08:00:27:CC:3B:97 1500
eth1 192.168.3.91 192.168.3.0 0.0.0.0 192.168.1.1 08:00:27:2F:97:0D 1500
eth2 192.168.2.91 192.168.2.0 0.0.0.0 192.168.1.1 08:00:27:AD:F8:40 1500


ノード"discus164"のインタフェース情報
名前 IPアドレス サブネット ゲートウェイ デフォルト・ゲートウェイ HWアドレス MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.1.90 192.168.1.0 0.0.0.0 192.168.1.1 08:00:27:B1:38:96 1500
eth1 192.168.3.90 192.168.3.0 0.0.0.0 192.168.1.1 08:00:27:FC:A5:8E 1500
eth2 192.168.2.90 192.168.2.0 0.0.0.0 192.168.1.1 08:00:27:47:E9:2C 1500


チェック: サブネット"192.168.1.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus264:eth0 discus164:eth0 はい
結果: ノードdiscus264,discus164を持つサブネット"192.168.1.0"のノード接続性に合格しました


チェック: サブネット"192.168.1.0"のTCP接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus164:192.168.1.90 discus264:192.168.1.91 合格
結果: サブネット"192.168.1.0"のTCP接続性チェックに合格しました


チェック: サブネット"192.168.3.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus264:eth1 discus164:eth1 はい
結果: ノードdiscus264,discus164を持つサブネット"192.168.3.0"のノード接続性に合格しました


チェック: サブネット"192.168.3.0"のTCP接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus164:192.168.3.90 discus264:192.168.3.91 合格
結果: サブネット"192.168.3.0"のTCP接続性チェックに合格しました


チェック: サブネット"192.168.2.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus264:eth2 discus164:eth2 はい
結果: ノードdiscus264,discus164を持つサブネット"192.168.2.0"のノード接続性に合格しました


チェック: サブネット"192.168.2.0"のTCP接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus164:192.168.2.90 discus264:192.168.2.91 合格
結果: サブネット"192.168.2.0"のTCP接続性チェックに合格しました


VIPの候補となるサブネット"192.168.1.0"で見つかったインタフェースは次のとおりです:
discus264 eth0:192.168.1.91
discus164 eth0:192.168.1.90

プライベート・インターコネクトの候補となるサブネット"192.168.3.0"で見つかったインタフェースは次のとおりです:
discus264 eth1:192.168.3.91
discus164 eth1:192.168.3.90

プライベート・インターコネクトの候補となるサブネット"192.168.2.0"で見つかったインタフェースは次のとおりです:
discus264 eth2:192.168.2.91
discus164 eth2:192.168.2.90

結果: ノード接続性チェックに合格しました


UID値0を持つ複数のユーザーをチェック中
結果: UID値0を持つ複数のユーザーのチェックに合格しました

ハードウェアとオペレーティング・システム設定の事後チェックは成功しました。

次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13
VirtualBox de Oracle11g R2 RAC #14

| | | コメント (0) | トラックバック (0)

2011年1月 1日 (土)

VirtualBox de Oracle11g R2 RAC #14

VirtualBox de Oracle11g R2 RACのつづきです。

今回は、ASMlibのインストール及び構成です。(やっと半分w)

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成

[root@discus164 tmp]# uname -a
Linux discus164.macdeoracle.jp 2.6.18-194.17.1.el5 #1 SMP Wed Sep 29 12:50:31 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux


CentOS5.5 2.6.18-194.17.1.el5 x86_64なので、以下のasmパッケージをRACを構成する全ノードでインストール、構成する。

oracleasm-support-2.1.3-1.el5.x86_64.rpm
oracleasmlib-2.0.4-1.el5.x86_64.rpm
oracleasm-2.6.18-194.17.1.el5-2.0.5-1.el5.x86_64.rpm

ダウンロード(RACを構成する全ノードのrootユーザで)CentOS5.5 x86_64ですが、ダウンロードするのはrhel5 amd64版でOK

[root@discus164 tmp]# wget http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel5/amd64/2.1.3/oracleasm-support-2.1.3-1.el5.x86_64.rpm
--2010-11-24 16:19:15-- http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel5/amd64/2.1.3/oracleasm-support-2.1.3-1.el5.x86_64.rpm
oss.oracle.com をDNSに問いあわせています... 141.146.12.120
oss.oracle.com|141.146.12.120|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 90444 (88K) [application/x-rpm]
`oracleasm-support-2.1.3-1.el5.x86_64.rpm' に保存中

100%[=================================================================================================>] 90,444 105K/s 時間 0.8s

2010-11-24 16:19:17 (105 KB/s) - `oracleasm-support-2.1.3-1.el5.x86_64.rpm' へ保存完了 [90444/90444]

[root@discus164 tmp]# wget http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.4-1.el5.x86_64.rpm
--2010-11-24 16:19:30-- http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.4-1.el5.x86_64.rpm
download.oracle.com をDNSに問いあわせています... 203.77.186.253, 203.77.186.254
download.oracle.com|203.77.186.253|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 14176 (14K) [text/plain]
`oracleasmlib-2.0.4-1.el5.x86_64.rpm' に保存中

100%[=================================================================================================>] 14,176 --.-K/s 時間 0.01s

2010-11-24 16:19:30 (1.33 MB/s) - `oracleasmlib-2.0.4-1.el5.x86_64.rpm' へ保存完了 [14176/14176]

[root@discus164 tmp]# wget
http://oss.oracle.com/projects/oracleasm/dist/files/RPMS/rhel5/amd64/2.0.5/2.6.18-194.17.1.el5/oracleasm-2.6.18-194.17.1.el5-2.0.5-1.el5.x86_64.rpm
--2010-11-24 16:19:44-- http://oss.oracle.com/projects/oracleasm/dist/files/RPMS/rhel5/amd64/2.0.5/2.6.18-194.17.1.el5/oracleasm-2.6.18-194.17.1.el5-2.0.5-1.el5.x86_64.rpm
oss.oracle.com をDNSに問いあわせています... 141.146.12.120
oss.oracle.com|141.146.12.120|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 137417 (134K) [application/x-rpm]
`oracleasm-2.6.18-194.17.1.el5-2.0.5-1.el5.x86_64.rpm' に保存中

100%[=================================================================================================>] 137,417 161K/s 時間 0.8s

2010-11-24 16:19:46 (161 KB/s) - `oracleasm-2.6.18-194.17.1.el5-2.0.5-1.el5.x86_64.rpm' へ保存完了 [137417/137417]

[root@discus164 tmp]#

インストール(RACを構成する全ノードのrootユーザで)

[root@discus164 tmp]# rpm -ivh oracleasm-2.6.18-194.17.1.el5-2.0.5-1.el5.x86_64.rpm oracleasm-support-2.1.3-1.el5.x86_64.rpm oracleasmlib-2.0.4-1.el5.x86_64.rpm
警告: oracleasm-2.6.18-194.17.1.el5-2.0.5-1.el5.x86_64.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 1e5e0159
準備中... ########################################### [100%]
1:oracleasm-support ########################################### [ 33%]
2:oracleasm-2.6.18-194.17########################################### [ 67%]
3:oracleasmlib ########################################### [100%]
[root@discus164 tmp]#


構成(RACを構成する全ノードのrootユーザで)

[root@discus164 ˜]# /usr/sbin/oracleasm configure
ORACLEASM_ENABLED=false
ORACLEASM_UID=
ORACLEASM_GID=
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
[root@discus164 ˜]# /usr/sbin/oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@discus164 ˜]#
[root@discus164 ˜]# /usr/sbin/oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@discus164 ˜]#

ASMディスクの作成(RACを構成する1ノードのrootユーザで実行する)
iSCSIとして作成したデバイスへ作成する。

[root@discus164 iscsi]# ls -l /dev/iscsi/*
/dev/iscsi/openfiler:asm1:
合計 0
lrwxrwxrwx 1 root root 9 11月 24 10:39 part -> ../../sdb
lrwxrwxrwx 1 root root 10 11月 24 10:39 part1 -> ../../sdb1

/dev/iscsi/openfiler:asm2:
合計 0
lrwxrwxrwx 1 root root 9 11月 24 10:39 part -> ../../sdf
lrwxrwxrwx 1 root root 10 11月 24 10:39 part1 -> ../../sdf1

/dev/iscsi/openfiler:asm3:
合計 0
lrwxrwxrwx 1 root root 9 11月 24 10:39 part -> ../../sde
lrwxrwxrwx 1 root root 10 11月 24 10:39 part1 -> ../../sde1

/dev/iscsi/openfiler:asm4:
合計 0
lrwxrwxrwx 1 root root 9 11月 24 10:39 part -> ../../sdd
lrwxrwxrwx 1 root root 10 11月 24 10:39 part1 -> ../../sdd1

/dev/iscsi/openfiler:crs1:
合計 0
lrwxrwxrwx 1 root root 9 11月 24 10:39 part -> ../../sdg
lrwxrwxrwx 1 root root 10 11月 24 10:39 part1 -> ../../sdg1

/dev/iscsi/openfiler:crs2:
合計 0
lrwxrwxrwx 1 root root 9 11月 24 10:39 part -> ../../sdc
lrwxrwxrwx 1 root root 10 11月 24 10:39 part1 -> ../../sdc1
[root@discus164 iscsi]#
[root@discus164 iscsi]# /usr/sbin/oracleasm createdisk CRSVOL1 /dev/iscsi/openfiler:crs1/part1
Writing disk header: done
Instantiating disk: done
[root@discus164 iscsi]# /usr/sbin/oracleasm createdisk CRSVOL2 /dev/iscsi/openfiler:crs2/part1
Writing disk header: done
Instantiating disk: done
[root@discus164 iscsi]# /usr/sbin/oracleasm createdisk DATAVOL1 /dev/iscsi/openfiler:asm1/part1
Writing disk header: done
Instantiating disk: done
[root@discus164 iscsi]# /usr/sbin/oracleasm createdisk DATAVOL2 /dev/iscsi/openfiler:asm2/part1
Writing disk header: done
Instantiating disk: done
[root@discus164 iscsi]# /usr/sbin/oracleasm createdisk FRAVOL1 /dev/iscsi/openfiler:asm3/part1
Writing disk header: done
Instantiating disk: done
[root@discus164 iscsi]# /usr/sbin/oracleasm createdisk FRAVOL2 /dev/iscsi/openfiler:asm4/part1
Writing disk header: done
Instantiating disk: done
[root@discus164 iscsi]#

ASMディスクを確認(RACを構成する全ノードのrootユーザで)
ASMディスクを作成したノード以外で scandisksコマンドを実行して認識させる。

[root@discus264 ˜]# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "FRAVOL2"
Instantiating disk "FRAVOL1"
Instantiating disk "DATAVOL1"
Instantiating disk "CRSVOL2"
Instantiating disk "DATAVOL2"
Instantiating disk "CRSVOL1"
[root@discus264 ˜]#

listdisksコマンドでASMディスクが認識されたか確認!

[root@discus164 ˜]# 
[root@discus164 ˜]#
[root@discus164 ˜]# /usr/sbin/oracleasm listdisks
CRSVOL1
CRSVOL2
DATAVOL1
DATAVOL2
FRAVOL1
FRAVOL2
[root@discus164 ˜]#

[root@discus264 ˜]# 
[root@discus264 ˜]#
[root@discus264 ˜]# /usr/sbin/oracleasm listdisks
CRSVOL1
CRSVOL2
DATAVOL1
DATAVOL2
FRAVOL1
FRAVOL2
[root@discus264 ˜]#

次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12
VirtualBox de Oracle11g R2 RAC #13

| | | コメント (0) | トラックバック (0)

2010年12月31日 (金)

VirtualBox de Oracle11g R2 RAC #13

VirtualBox de Oracle11g R2 RACのつづきです。

RACを構成する各ノードの構成ファイルを確認しておきま〜す。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle RACノード構成ファイルの確認

RACを構成する各ノードの構成ファイルをざっと確認。ここまでの作業でRACを構成する各ノードの構成ファイルは以下のようになっているはず…

/etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
#::1 localhost6.localdomain6 localhost6

#for public network
192.168.1.90 discus164.macdeoracle.jp discus164
192.168.1.91 discus264.macdeoracle.jp discus264
192.168.1.92 arowana2.macdeoracle.jp arowana2

#for Oracle Interconnect private network
192.168.3.90 discus164-priv.macdeoracle.jp discus164-priv
192.168.3.91 discus264-priv.macdeoracle.jp discus264-priv

#for iSCSI private network
192.168.2.92 arowana2-priv.macdeoracle.jp arowana2-priv
192.168.2.90 discus164-iscsi.macdeoracle.jp discus164-iscsi
192.168.2.91 discus264-iscsi.macdeoracle.jp discus264-iscsi

#for virtual public network
192.168.1.190 discus164-vip.macdeoracle.jp discus164-vip
192.168.1.191 discus264-vip.macdeoracle.jp discus264-vip

192.168.1.2 lampeye.macdeoracle.jp lampeye


/etc/security/limits.conf

[root@discus164 security]# diff -u limits.conf.org limits.conf
--- limits.conf.org 2010-03-12 02:24:15.000000000 +0900
+++ limits.conf 2010-11-24 11:10:30.000000000 +0900
@@ -48,3 +48,11 @@
#@student - maxlogins 4

# End of file
+grid soft nproc 2047
+grid hard nproc 16384
+grid soft nofile 1024
+grid hard nofile 65536
+oracle soft nproc 2047
+oracle hard nproc 16384
+oracle soft nofile 1024
+oracle hard nofile 65536
[root@discus164 security]#


/etc/pam.d/login

[root@discus164 pam.d]# diff -u login.org login
--- login.org 2010-01-20 19:36:29.000000000 +0900
+++ login 2010-11-24 11:16:33.000000000 +0900
@@ -12,3 +12,4 @@
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session optional pam_keyinit.so force revoke
+session required pam_limits.so
[root@discus164 pam.d]#


/etc/profile

[root@discus164 etc]# diff -u profile.org profile
--- profile.org 2009-09-22 08:27:09.000000000 +0900
+++ profile 2010-11-24 11:21:27.000000000 +0900
@@ -56,3 +56,12 @@

unset i
unset pathmunge
+if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
+ if [ $SHELL = "/bin/ksh" ]; then
+ ulimit -p 16384
+ ulimit -n 65536
+ else
+ ulimit -u 16384 -n 65536
+ fi
+ umask 022
+fi
[root@discus164 etc]#


/etc/sysctl.conf

[root@discus164 ˜]# sysctl -a | grep -E '(se|sh)m|file-max|aio-max-nr|ip_local_port_range|(w|r)mem_(default|max)'
net.ipv4.ip_local_port_range = 32768 61000
net.core.rmem_default = 129024
net.core.wmem_default = 129024
net.core.rmem_max = 131071
net.core.wmem_max = 131071
vm.hugetlb_shm_group = 0
kernel.sem = 250 32000 32 128
kernel.shmmni = 4096
kernel.shmall = 4294967296
kernel.shmmax = 68719476736
fs.aio-max-nr = 65536
fs.file-max = 371217
[root@discus164 ˜]#


/etc/udev/rules.d/55-openiscsi.rules

[root@discus164 ˜]# cat /etc/udev/rules.d/55-openiscsi.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+="iscsi/%c/part%n"
[root@discus164 ˜]#


/etc/udev/scripts

[root@discus164 ˜]# cd /etc/udev/scripts
[root@discus164 scripts]# cat iscsidev.sh
#!/bin/sh

# FILE: /etc/udev/scripts/iscsidev.sh

BUS=${1}
HOST=${BUS%%:*}
[ -e /sys/class/iscsi_host ] || exit 1

file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetname"

target_name=$(cat ${file})

# This is not an open-scsi drive
if [ -z "${target_name}" ]; then
exit 1
fi

echo "${target_name##*.}"
[root@discus164 scripts]#

/etc/ntp.conf

[root@discus164 ˜]# cat /etc/ntp.conf
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
#restrict -6 ::1

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).

#broadcast 192.168.1.255 key 42 # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 key 42 # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 key 42 # manycast client

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
#server 127.127.1.0
#fudge 127.127.1.0 stratum 10

# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8
server 192.168.1.2
server 192.168.1.2
server 192.168.1.2
restrict 192.168.1.2 mask 255.255.255.255 nomodify notrap noquery
[root@discus164 ˜]#


/etc/sysconfig/ntpd

[root@discus164 ˜]# cat /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes

# Additional options for ntpdate
NTPDATE_OPTIONS="-B"
[root@discus164 ˜]#

/etc/host.conf

[root@discus164 ˜]$ cat /etc/host.conf
order hosts,bind

Oracle Grid Infrastructureユーザや、Oracle所有者の確認はこちら

念のためにuserとgroupのスナップショットを乗せておきますね。

Users

Groups


Openfier側構成(ゾンビセッション抑止などは以前の記事参照のこと)


次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11
VirtualBox de Oracle11g R2 RAC #12

| | | コメント (0) | トラックバック (0)

2010年12月26日 (日)

VirtualBox de Oracle11g R2 RAC #12

VirtualBox de Oracle11g R2 RACのつづきです。

今回はRACノード構成ファイルの確認という予定だったのですが、DNSの構成を別建てにして置く事にします。量が多いので (^^;;

構成するDNSは、ローカルネットワークかつRACを構成するノードの管理さえできればいいので、ローカルネームサーバとして機能すれば十分。
ということで、RAC向けローカルネームサーバを構成することにします。(DNSは素人なので調べるほうが大変だったw)


では、さっそくやってみましょう。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

DNSの構成

悩んだのが、DNSをどこにたてるかということ。いろいろ悩んでいたんですが、元ネタの1つからいいアイデアもらいました。
それは、DNSをOpenfiler上に構成するということ。ストレージサーバなのでRACを構成する各ノードより先に起動していますし。:)

最初にやるのはDNSサーバを最新版にアップデートすること。でもでもでもですね。以前痛い目にあっていたのでOpenfilerというかrPath Linuxのパッケージ管理は無効化していたんです。このままじゃDNSの最新パッケージを使えないので一時的に使えるようにします。

Openfilerのパッケージ管理は、conaryというrPath Linux由来のものが利用されています。/etc/conaryrcの内容をすべてコメントアウトして利用できないようしてあります。

[root@arowana2 ˜]# cat /etc/conaryrc
#installLabelPath openfiler.rpath.org@ofns:2 conary.rpath.com@rpl:1
#pinTroves (kernel|linux-image-2\.6\.[0-9]+-[0-9]+(-[a-z]+)?)([:-].*|$)
#autoResolve True
#includeConfigFile /etc/conary/config.d/*
[root@arowana2 ˜]#

コメントアウトしていただけなのですぐに利用できるように戻せるのだ! :)

[root@arowana2 ˜]# cat /etc/conaryrc
installLabelPath openfiler.rpath.org@ofns:2 conary.rpath.com@rpl:1
pinTroves (kernel|linux-image-2\.6\.[0-9]+-[0-9]+(-[a-z]+)?)([:-].*|$)
autoResolve True
includeConfigFile /etc/conary/config.d/*
[root@arowana2 ˜]#

conaryをつかってbindを最新版にアップデート!!

[root@arowana2 ˜]# conary update bind:runtime

Conary

確認! 最新版になりました!

[root@arowana2 ˜]# conary q bind
bind=9.4.3_P5-1.1-1

再び、conaryを無効化しておく。(トラウマなだけで今は安定しているかもしれんw だけど止めとくw)

[root@arowana2 ˜]# cat /etc/conaryrc
#installLabelPath openfiler.rpath.org@ofns:2 conary.rpath.com@rpl:1
#pinTroves (kernel|linux-image-2\.6\.[0-9]+-[0-9]+(-[a-z]+)?)([:-].*|$)
#autoResolve True
#includeConfigFile /etc/conary/config.d/*
[root@arowana2 ˜]#


Openfiler(host名:arowana2)で、DNSの構成を始めるにあたって参考にしたサイトを書いておきますね。

Oracle Grid Infrastructureインストレーション・ガイド 11gリリース2(11.2)for Linux - 2.7.4 グリッド・ネーミング・サービスの構成例
Openfiler側にDNSを立てるというアイデアを頂いたサイト。元ネタの1つでもある。
DNSの素人なりにいろいろググって見つけたすげー参考になったサイト「月刊NetworkWorld連載『DNSの仕組み完全解説』」(ありがとうございます!)


今回構築するRACのネットワーク構成は以前の書いたが以下のように構成する。

RACを構成するノード1 (hostname=discus164.macdeoracle.jp)
Hostname タイプ IP address 名前解決方法
discus164 Public 192.168.1.90 hostsおよびDNS
discus164-iscsi Private 192.168.2.90
discus164-priv Private 192.168.3.90
discus164-vip Virtual 192.168.1.190
RACを構成するノード2 (hostname=discus264.macdeoracle.jp)
Hostname タイプ IP address 名前解決方法
discus264 Public 192.168.1.91 hostsおよびDNS
discus264-iscsi Private 192.168.2.91
discus264-priv Private 192.168.3.91
discus264-vip Virtual 192.168.1.191
SCAN VIP1/2/3
Hostname タイプ IP address 名前解決方法
discus-rac64-scan Virtual 192.168.1.200 DNS
discus-rac64-scan 192.168.1.201
discus-rac64-scan 192.168.1.202
Openfiler2.3(iSCSI) - (hostname=arowana2.macdeoracle.jp)
Hostname タイプ IP address 名前解決方法
arowana2 Public 192.168.1.92 hostsおよびDNS
arowana2-priv Private 192.168.2.92

・DNSの構成

/etc/resolv.confの構成は以下の通り。ローカルipアドレスを利用しているRACの各ノードやOpenfilerは/etc/hostsとdnsで解決できるようにしておきます。ipアドレスはすべて固定です。
[root@arowana2 ˜]# cat /etc/resolv.conf
search macdeoracle.jp
nameserver 192.168.1.92

; Forward Lookup Zone
discus164 IN A 192.168.1.90
discus264 IN A 192.168.1.91
discus164-priv IN A 192.168.3.90
discus264-priv IN A 192.168.3.91
discus164-iscsi IN A 192.168.2.90
discus264-iscsi IN A 192.168.2.91
discus164-vip IN A 192.168.1.190
discus264-vip IN A 192.168.1.191
arowana2 IN A 192.168.1.92
arowana2-priv IN A 192.168.2.92
discus-rac64-scan IN A 192.168.1.200
discus-rac64-scan IN A 192.168.1.201
discus-rac64-scan IN A 192.168.1.202

; Reverse Lookup Zone
90 IN PTR discus164.macdeoracle.jp.
91 IN PTR discus264.nacdeiracle,jp.
190 IN PTR discus164-vip.macdeoracle.jp.
191 IN PTR discus264-vip.macdeoracle.jp.
200 IN PTR discus-rac64-scan.macdeoracle.jp.
201 IN PTR discus-rac64-scan.macdeoracle.jp.
202 IN PTR discus-rac64-scan.macdeoracle.jp.
[root@arowana2 ˜]#


/etc/named.confの構成。(逆引き/正引きのゾーン設定や上位DNSへの回送設定)
逆引きの設定で、RACで利用しているローカルipアドレス以外はダーミーゾーンに設定しているところがポイント。気になっていたところなのでググってよい参考サイト見つけられてよかった。ほんと感謝、感謝。

[root@arowana2 ˜]# cat /etc/named.conf
# DNS configuration file for Oracle RAC 11g release 2

options {


// FORWARDERS: Forward any name this DNS can't resolve to my router.
forwarders { 192.168.1.1; };

// DIRECTORY: Directory where named will look for zone files.
directory "/srv/named/data";

//allow query requests
allow-query { 192.168.0.0/22; };
};

# ----------------------------------
# Forward Zone
# ----------------------------------

zone "macdeoracle.jp" IN {
type master;
file "macdeoracle.jp.zone";
allow-update { none; };
};

# ----------------------------------
# Reverse Zone
# ----------------------------------

zone "1.168.192.in-addr.arpa" IN {
type master;
file "1.168.192.in-addr.arpa.zone";
allow-update { none; };
};

zone "168.192.in-addr.arpa" IN {
type master;
file "dummy.zone";
notify no;
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "0.0.127.in-addr.arpa.zone";
notify no;
};

# ----------------------------------
# private addresses dummy Zone
# ---------------------------------

zone "10.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "16.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "17,172,in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "18.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "19.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "20.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "21.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "22.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "23.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "24.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "25.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "26.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "27.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "28.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "29.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "30.172.in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

zone "31.172,in-addr.arpa" {
type master;
file "dummy.zone";
notify no;
};

[root@arowana2 ˜]#


・以下、正引き/逆引き用ゾーンファイルの作成
/srv/named/data/macdeoracle.jp.zoneの作成(正引き用ゾーンファイル)

[root@arowana2 ˜]# cat /srv/named/data/macdeoracle.jp.zone
; +-------------------------------------------------------------------+
; | /srv/named/data/macdeoracle.jp.zone |
; | |
; | Forward zone definition file for macdeoracle.jp zone |
; +-------------------------------------------------------------------+

$ORIGIN macdeoracle.jp.

$TTL 86400 ; time-to-live - (1 day)

@ IN SOA arowana2.macdeoracle.jp. discus.lampeye.macdeoracle.jp. (
201011021 ; serial number - (yyyymmdd+s)
7200 ; refresh - (2 hours)
300 ; retry - (5 minutes)
604800 ; expire - (1 week)
60 ; minimum - (1 minute)
)
IN NS arowana2.macdeoracle.jp.
localhost IN A 127.0.0.1

; Oracle RAC Nodes
discus164 IN A 192.168.1.90
discus264 IN A 192.168.1.91
discus164-priv IN A 192.168.3.90
discus264-priv IN A 192.168.3.91
discus164-iscsi IN A 192.168.2.90
discus264-iscsi IN A 192.168.2.91
discus164-vip IN A 192.168.1.190
discus264-vip IN A 192.168.1.191

; Network Storage Server
arowana2 IN A 192.168.1.92
arowana2-priv IN A 192.168.2.92

; Single Client Access Name (SCAN) virtual IP
discus-rac64-scan IN A 192.168.1.200
discus-rac64-scan IN A 192.168.1.201
discus-rac64-scan IN A 192.168.1.202

; Miscellaneous Nodes
lampeye IN A 192.168.1.2
[root@arowana2 ˜]#


/srv/named/data/168.192.in-addr.arpa.zon(逆引き用ゾーンファイル)の作成

[root@arowana2 data]# cat 168.192.in-addr.arpa.zone
; +-------------------------------------------------------------------+
; | /srv/named/data/168.192.in-addr.arpa.zone |
; | |
; | Reverse zone definition file for 168.192.in-addr.arpa.zone |
; +-------------------------------------------------------------------+

$ORIGIN 168.192.in-addr.arpa.

$TTL 86400 ; time-to-live - (1 day)

@ IN SOA arowana2.macdeoracle.jp. discus.lampeye.macdeoracle.jp. (
201011021 ; serial number - (yyyymmdd+s)
7200 ; refresh - (2 hours)
300 ; retry - (5 minutes)
604800 ; expire - (1 week)
60 ; minimum - (1 minute)
)
IN NS arowana2.macdeoracle.jp.

; Oracle RAC Nodes
90 IN PTR discus164.macdeoracle.jp.
91 IN PTR discus264.macdeoracle.jp.
190 IN PTR discus164-vip.macdeoracle.jp.
191 IN PTR discus264-vip.macdeoracle.jp.

; Network Storage Server
92 IN PTR arowana2.macdeoracle.jp.

; Single Client Access Name (SCAN) virtual IP
200 IN PTR discus-rac64-scan.macdeoracle.jp.
201 IN PTR discus-rac64-scan.macdeoracle.jp.
202 IN PTR discus-rac64-scan.macdeoracle.jp.

; Miscellaneous Nodes
2 IN PTR lampeye.macdeoracle.jp.
[root@arowana2 data]#


ローカルホスト(127.0.0.1)の逆引きゾーンの定義

[root@arowana2 ˜]# cat /srv/named/data/0.0.127.in-addr.arpa.zone
; +-------------------------------------------------------------------+
; | /srv/named/data/0.0.127.in-addr.arpa.zone |
; | |
; | Reverse zone definition file for 0.0.127.in-addr.arpa.zone |
; +-------------------------------------------------------------------+

$ORIGIN 0.0.127.in-addr.arpa.

$TTL 86400 ; time-to-live - (1 day)

@ IN SOA arowana2.macdeoracle.jp. discus.lampeye.macdeoracle.jp. (
201011021 ; serial number - (yyyymmdd+s)
7200 ; refresh - (2 hours)
300 ; retry - (5 minutes)
604800 ; expire - (1 week)
60 ; minimum - (1 minute)
)
IN NS arowana2.macdeoracle.jp.

; localhost
1 IN PTR localhost.
[root@arowana2 ˜]#


/srv/named/data/dummy.zone(ダミーゾーンファイル)の作成
「月刊NetworkWorld連載『DNSの仕組み完全解説』」の記事を参考にローカルipアドレスの逆引きの問い合わせが外部のDNSに発生しないようにするために利用するダミーゾーンファイルの定義を以下のように作成した。

[root@arowana2 ˜]# cat /srv/named/data/dummy.zone
; +-------------------------------------------------------------------+
; | /srv/named/data/dummy.zone |
; +-------------------------------------------------------------------+


$TTL 86400 ; time-to-live - (1 day)

@ IN SOA arowana2.macdeoracle.jp. discus.lampeye.macdeoracle.jp. (
201011021 ; serial number - (yyyymmdd+s)
28800 ; refresh - (2 hours)
2700 ; retry - (5 minutes)
604800 ; expire - (1 week)
3600 ; minimum - (1 minute)
)
IN NS arowana2.macdeoracle.jp.
[root@arowana2 ˜]#


構成できたらnamedを自動起動設定にしてnamedを起動

[root@arowana2 ˜]# chkconfig named on
[root@arowana2 ˜]# chkconfig --list named
named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@arowana2 ˜]# service named start
Starting named: [ OK ]

ここまでてdnsの設定はおしまい。前述の作業はすべてOpenfilerを乗せているサーバ上で行った。


つづいて、RACを構成する各ノードでOpenfiler上に構成したローカルネームサーバを参照させるように設定する。
/etc/host.confの構成(RACを構成する全ノード及び、Openfilerを構成したノード)

/etc/hostsを優先させる。/etc/hostsを見てもらうとわかるけど、dnsと重複定義している。無駄と言えばむだだと思うけど。SCAN VIPだけdns管理すればOKなのかってとこまでは見えてないからそれはそれで別途確認だな→TODO
[oracle@discus164 ˜]$ cat /etc/host.conf
order hosts,bind


/etc/hostsの構成(RACを構成する全ノード及び、Openfilerを構成したノード)

[oracle@discus164 ˜]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
#::1 localhost6.localdomain6 localhost6

#for public network
192.168.1.90 discus164.macdeoracle.jp discus164
192.168.1.91 discus264.macdeoracle.jp discus264
192.168.1.92 arowana2.macdeoracle.jp arowana2

#for Oracle Interconnect private network
192.168.3.90 discus164-priv.macdeoracle.jp discus164-priv
192.168.3.91 discus264-priv.macdeoracle.jp discus264-priv

#for iSCSI private network
192.168.2.92 arowana2-priv.macdeoracle.jp arowana2-priv
192.168.2.90 discus164-iscsi.macdeoracle.jp discus164-iscsi
192.168.2.91 discus264-iscsi.macdeoracle.jp discus264-iscsi

#for virtual public network
192.168.1.190 discus164-vip.macdeoracle.jp discus164-vip
192.168.1.191 discus264-vip.macdeoracle.jp discus264-vip


192.168.1.2 lampeye.macdeoracle.jp lampeye
[oracle@discus164 ˜]$

これで準備OK.続いて動作確認!

・正引きテスト

最初に外部サイトが引けるか確認…OK.

[root@discus164 ˜]# nslookup openfiler.com
Server: 192.168.1.92
Address: 192.168.1.92#53

Non-authoritative answer:
Name: openfiler.com
Address: 84.45.94.236

[root@discus164 ˜]#

次に内部…
[root@discus164 ˜]# nslookup lampeye 
Server: 192.168.1.92
Address: 192.168.1.92#53

Name: lampeye.macdeoracle.jp
Address: 192.168.1.2

[root@discus164 ˜]# nslookup discus164
Server: 192.168.1.92
Address: 192.168.1.92#53

Name: discus164.macdeoracle.jp
Address: 192.168.1.90

[root@discus164 ˜]# nslookup discus164-vip
Server: 192.168.1.92
Address: 192.168.1.92#53

Name: discus164-vip.macdeoracle.jp
Address: 192.168.1.190

[root@discus164 ˜]# nslookup discus264
Server: 192.168.1.92
Address: 192.168.1.92#53

Name: discus264.macdeoracle.jp
Address: 192.168.1.91

[root@discus164 ˜]# nslookup discus264-vip
Server: 192.168.1.92
Address: 192.168.1.92#53

Name: discus264-vip.macdeoracle.jp
Address: 192.168.1.191

[root@discus164 ˜]# nslookup discus-rac64-scan
Server: 192.168.1.92
Address: 192.168.1.92#53

Name: discus-rac64-scan.macdeoracle.jp
Address: 192.168.1.201
Name: discus-rac64-scan.macdeoracle.jp
Address: 192.168.1.202
Name: discus-rac64-scan.macdeoracle.jp
Address: 192.168.1.200

[root@discus164 ˜]# nslookup localhost
Server: 192.168.1.92
Address: 192.168.1.92#53

Name: localhost.macdeoracle.jp
Address: 127.0.0.1


・逆引きテスト

[root@discus164 ˜]# nslookup 192.168.1.200
Server: 192.168.1.92
Address: 192.168.1.92#53

200.1.168.192.in-addr.arpa name = discus-rac64-scan.macdeoracle.jp.

[root@discus164 ˜]# nslookup 192.168.1.201
Server: 192.168.1.92
Address: 192.168.1.92#53

201.1.168.192.in-addr.arpa name = discus-rac64-scan.macdeoracle.jp.

[root@discus164 ˜]# nslookup 192.168.1.202
Server: 192.168.1.92
Address: 192.168.1.92#53

202.1.168.192.in-addr.arpa name = discus-rac64-scan.macdeoracle.jp.

[root@discus164 ˜]# nslookup 192.168.1.90
Server: 192.168.1.92
Address: 192.168.1.92#53

90.1.168.192.in-addr.arpa name = discus164.macdeoracle.jp.

[root@discus164 ˜]# nslookup 192.168.1.91
Server: 192.168.1.92
Address: 192.168.1.92#53

91.1.168.192.in-addr.arpa name = discus264.macdeoracle.jp.

[root@discus164 ˜]# nslookup 192.168.1.190
Server: 192.168.1.92
Address: 192.168.1.92#53

190.1.168.192.in-addr.arpa name = discus164-vip.macdeoracle.jp.

[root@discus164 ˜]# nslookup 192.168.1.191
Server: 192.168.1.92
Address: 192.168.1.92#53

191.1.168.192.in-addr.arpa name = discus264-vip.macdeoracle.jp.


[root@discus164 ˜]# nslookup 127.0.0.1
Server: 192.168.1.92
Address: 192.168.1.92#53

1.0.0.127.in-addr.arpa name = localhost.

[root@discus164 ˜]#

これでOK次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10
VirtualBox de Oracle11g R2 RAC #11

| | | コメント (0) | トラックバック (0)

2010年12月25日 (土)

VirtualBox de Oracle11g R2 RAC #11

VirtualBox de Oracle11g R2 RACのつづきです。

今回は、RACノード間リモートアクセスの構成です。
Oracle11g R2 11.2.0.2.0ではパスフレーズなしでSSHを構成する必要があるのですが、OUIが自動構成してくれるということ、また、インストレーションガイドでもOUIの自動構成を利用するよう推奨されているんですが、今回はちょっと意地悪なことをしてみます。事前にパスワード付きでSSHを構成しておき、OUIがパスワードなしのSSH構成行われていないと認識しちゃんと自動構成してくれるか見てみます。

Oracle Grid Infrastructureインストレーション・ガイド 11gリリース2(11.2)for Linux - 2.13 インストール時におけるSSHの自動構成
Oracle Grid Infrastructureインストレーション・ガイド 11gリリース2(11.2)for Linux - E.1 すべてのクラスタ・ノードでの手動によるSSHの構成

では、さっそくやってみましょう。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle RACノード間リモートアクセスの構成
念のために行った、多分、実施しなくても大丈夫だと思うけど…ちょいと意地悪な実験をしてみた)

sshパッケージの確認。(RACを構成する全ノードで)

[root@discus164 etc]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"| grep ssh
openssh-server-4.3p2-41.el5_5.1 (x86_64)
openssh-askpass-4.3p2-41.el5_5.1 (x86_64)
openssh-clients-4.3p2-41.el5_5.1 (x86_64)
openssh-4.3p2-41.el5_5.1 (x86_64)
[root@discus164 etc]#


Oracle11g R2 11.2.0.2.0以降ではSSHのユーザの等価化ではパスフレーズなしのみサポートされているのだとか。なんなく面白そうなので、今回は手動でユーザの等価化をわざわざサポートされていないというパスフレーズ付きで実施してみた(ユーザの等価化チェックでエラーとなりOUI側で自動的にパスフレーズなしのユーザ等価化が行われるはず、なのでどうなるか楽しみ!!!)

RACを構成する全ノードのgrid infrastrucreユーザと/oracle所有者で実施する。(Oracle11g 11.2.0.2.0において手動でSSHのユーザ等価化を行う場合、パスフレーズを入力する箇所でパスフレーズを入力せず、[ENTER]キーをタイプすればOKなのですが、今回は、あえてパスフレーズを入力してあります。ログ上ではパスフレーズを入力していないように見えますが.)

[root@discus164 ˜]# su - grid
[grid@discus164 ˜]$
[grid@discus164 ˜]$ mkdir ˜/.ssh
[grid@discus164 ˜]$ chmod 700 ˜/.ssh
[grid@discus164 ˜]$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/grid/.ssh/id_dsa.
Your public key has been saved in /home/grid/.ssh/id_dsa.pub.
The key fingerprint is:
ba:bb:09:72:94:94:d6:29:99:12:7f:d2:a6:a6:60:0a grid@discus164.macdeoracle.jp
[grid@discus164 ˜]$

[root@discus164 ˜]#
[root@discus164 ˜]# su - oracle
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ mkdir ˜/.ssh
[oracle@discus164 ˜]$ chmod 700 ˜/.ssh
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
88:5d:b0:ec:80:8c:59:ed:22:f7:d8:88:6d:6c:41:1a oracle@discus164.macdeoracle.jp
[oracle@discus164 ˜]$


以下の操作はRAC上の1ノードから行えばOK。ただ、gid infrastructureユーザとOracle所有者の両ユーザで行う必要があるのでご注意を。11.2.0.2.0以降では以前のリリースのように神経質にならなくてもいいかもね。sshの構成に関しては……
Oracle Grid Infrastructureユーザから…

[root@discus164 ˜]# su - grid
[grid@discus164 ˜]$
[grid@discus164 ˜]$
[grid@discus164 ˜]$ touch ˜/.ssh/authorized_keys
[grid@discus164 ˜]$ cd ˜/.ssh
[grid@discus164 .ssh]$ ls -l *.pub
-rw-r--r-- 1 grid oinstall 619 11月 24 13:11 id_dsa.pub
[grid@discus164 .ssh]$ ssh discus164 cat ˜/.ssh/id_dsa.pub >> ˜/.ssh/authorized_keys
The authenticity of host 'discus164 (192.168.1.90)' can't be established.
RSA key fingerprint is 15:90:e9:89:98:8e:ed:3f:67:7b:d4:e7:97:6b:58:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'discus164,192.168.1.90' (RSA) to the list of known hosts.
grid@discus164's password:
[grid@discus164 .ssh]$ ssh discus264 cat ˜/.ssh/id_dsa.pub >> ˜/.ssh/authorized_keys
The authenticity of host 'discus264 (192.168.1.91)' can't be established.
RSA key fingerprint is 55:80:d3:23:4f:82:44:4b:b8:89:02:d8:69:31:7e:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'discus264,192.168.1.91' (RSA) to the list of known hosts.
grid@discus264's password:
[grid@discus164 .ssh]$ scp ˜/.ssh/authorized_keys discus264:.ssh/authorized_keys
grid@discus264's password:
authorized_keys 100% 1238 1.2KB/s 00:00
[grid@discus164 .ssh]$ chmod 600 ˜/.ssh/authorized_keys
[grid@discus164 .ssh]$
[grid@discus164 ˜]$ ssh discus164 hostname
Enter passphrase for key '/home/grid/.ssh/id_dsa':
discus164.macdeoracle.jp
[grid@discus164 ˜]$ ssh discus264 hostname
Enter passphrase for key '/home/grid/.ssh/id_dsa':
discus264.macdeoracle.jp
[grid@discus164 ˜]$


次はOracle所有者で… 11.2.0.2.0以降パスブレーズなしにする必要があるのですがわざと入れてます (^^)

[root@discus164 ˜]# su - oracle
[oracle@discus164 ˜]$ touch ˜/.ssh/authorized_keys
[oracle@discus164 ˜]$ cd ˜/.ssh
[oracle@discus164 .ssh]$ ls -l *.pub
-rw-r--r-- 1 oracle oinstall 621 11月 24 13:14 id_dsa.pub
[oracle@discus164 .ssh]$ ssh discus164 cat ˜/.ssh/id_dsa.pub >> ˜/.ssh/authorized_keys
The authenticity of host 'discus164 (192.168.1.90)' can't be established.
RSA key fingerprint is 15:90:e9:89:98:8e:ed:3f:67:7b:d4:e7:97:6b:58:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'discus164,192.168.1.90' (RSA) to the list of known hosts.
oracle@discus164's password:
[oracle@discus164 .ssh]$ ssh discus264 cat ˜/.ssh/id_dsa.pub >> ˜/.ssh/authorized_keys
The authenticity of host 'discus264 (192.168.1.91)' can't be established.
RSA key fingerprint is 55:80:d3:23:4f:82:44:4b:b8:89:02:d8:69:31:7e:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'discus264,192.168.1.91' (RSA) to the list of known hosts.
oracle@discus264's password:
[oracle@discus164 .ssh]$ scp ˜/.ssh/authorized_keys discus264:.ssh/authorized_keys
oracle@discus264's password:
authorized_keys 100% 1242 1.2KB/s 00:00
[oracle@discus164 .ssh]$ chmod 600 ˜/.ssh/authorized_keys
[oracle@discus164 .ssh]$ cd
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ ssh discus164 hostname
Enter passphrase for key '/home/oracle/.ssh/id_dsa':
discus164.macdeoracle.jp

[oracle@discus164 ˜]$ ssh discus264 hostname
Enter passphrase for key '/home/oracle/.ssh/id_dsa':
discus264.macdeoracle.jp
[oracle@discus164 ˜]$


確認! gird infrastructureユーザとOracle所有者の両方で。

[oracle@discus164 ˜]$ 
[oracle@discus164 ˜]$ exec /usr/bin/ssh-agent $SHELL
[oracle@discus164 ˜]$ /usr/bin/ssh-add
Enter passphrase for /home/oracle/.ssh/id_dsa:
Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ ssh discus164 hostname
discus164.macdeoracle.jp
[oracle@discus164 ˜]$ ssh discus264 hostname
discus264.macdeoracle.jp
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ exit
exit
[root@discus164 ˜]# su - grid
[grid@discus164 ˜]$ exec /usr/bin/ssh-agent $SHELL
[grid@discus164 ˜]$ /usr/bin/ssh-add
Enter passphrase for /home/grid/.ssh/id_dsa:
Identity added: /home/grid/.ssh/id_dsa (/home/grid/.ssh/id_dsa)
[grid@discus164 ˜]$ ssh discus164 hostname
discus164.macdeoracle.jp
[grid@discus164 ˜]$ ssh discus264 hostname
discus264.macdeoracle.jp
[grid@discus164 ˜]$


最後に、sttyコマンドよるインストールエラーメッセージ抑止(全ノードの grid/oracleユーザで実施)

参考:Oracle Grid Infrastructureインストレーション・ガイド 11gリリース2(11.2)for Linux - 2.14.5 インストール中にsttyコマンドによって発生するエラーの防止

[grid@discus164 ˜]$ su - oracle
パスワード:
[oracle@discus164 ˜]$ vi .bashrc
[oracle@discus164 ˜]$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific aliases and functions
if [ -t 0 ]; then
stty intr ^C
fi
[oracle@discus164 ˜]$


ここで、やる予定ではなかったのですが、次いでなのでNTPの設定もついでにやっちゃいました。

Host OS側で公開NTPサーバと同期、VirtualBox上に作成したRACを構成する各Guest OSは、Host OSをNTPサーバとして同期する。
このようにしておけば公開NTPサーバを参照するのはHost OSだけなので余計な問い合わせを押さえることができますよね。


RACを構成する全ノード及び、iSCSIでも同じ構成にしてあります。ちなみに、192.168.1.2がHost OS

/etc/ntp.confと/etc/sysconfig/ntpdで構成します。ntpはslewモードで調整するよう設定します。

[root@discus164 ˜]# cat /etc/ntp.conf
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
#restrict -6 ::1

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).

#broadcast 192.168.1.255 key 42 # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 key 42 # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 key 42 # manycast client

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
#server 127.127.1.0
#fudge 127.127.1.0 stratum 10

# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8
server 192.168.1.2
server 192.168.1.2
server 192.168.1.2
restrict 192.168.1.2 mask 255.255.255.255 nomodify notrap noquery
[root@discus164 ˜]#

[root@discus164 ˜]# cat /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes

# Additional options for ntpdate
NTPDATE_OPTIONS="-B"
[root@discus164 ˜]#


HostOS側は公開NTPサーバと同期するので以下のような設定にしてあります。

[root@lampeye ˜]# cat /etc/ntp.conf
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1

# Hosts on local network are less restricted.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server -4 ntp.nict.jp minpoll 8 maxpoll 12
server -4 ntp.nict.jp minpoll 8 maxpoll 12
server -4 ntp.nict.jp minpoll 8 maxpoll 12

#broadcast 192.168.1.255 key 42 # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 key 42 # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 key 42 # manycast client

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10

# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8
restrict ntp.nict.jp mask 255.255.255.255 nomodify notrap noquery
[root@lampeye ˜]#

[root@lampeye ˜]# cat /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes

# Additional options for ntpdate
NTPDATE_OPTIONS="-B"
[root@lampeye ˜]#


service ntpd restart で再起動。しばらくしてから…

Host OSがntpサーバと同期できているか確認!!

[root@lampeye ˜]# ntpq -np
remote refid st t when poll reach delay offset jitter
==============================================================================
*210.171.226.40 .NICT. 1 u 38 1024 377 10.447 59.103 9.904
127.127.1.0 .LOCL. 10 l 22 64 377 0.000 0.000 0.001
[root@lampeye ˜]#

公開NTPサーバと同期できています。:)


次はRACを構成する各ノードでHost OSと同期しているか確認します。"*"が表示されているのでうまくいっているようですね。 :)

[root@discus164 ˜]# ntpq -np
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.1.2 210.171.226.40 2 u 95 128 377 0.179 121.450 39.443
[root@discus164 ˜]#

[root@discus264 ˜]# ntpq -np
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.1.2 210.171.226.40 2 u 5 128 377 0.288 214.652 43.610
[root@discus264 ˜]#

[root@arowana2 ˜]# ntpq -np
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.1.2 210.171.226.40 2 u 35 128 377 0.278 -83.188 0.087
[root@arowana2 ˜]#

ということで次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9
VirtualBox de Oracle11g R2 RAC #10

| | | コメント (0) | トラックバック (0)

2010年12月21日 (火)

VirtualBox de Oracle11g R2 RAC #10

VirtualBox de Oracle11g R2 RACのつづきです。

今回は、カーネルパラメータの調整、その他。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

Oracle Databaseインストレーション・ガイド 11gリリース2(11.2) for Linux - 2.8 Oracleインストール所有者のシェル制限の構成

前述のマニュアルに従い各構成ファイルを設定します。(RACを構成する全ノードで実施します。)

/etc/security/limits.confの設定(差分を載せています)

[root@discus164 security]# diff -u limits.conf.org limits.conf
--- limits.conf.org 2010-03-12 02:24:15.000000000 +0900
+++ limits.conf 2010-11-24 11:10:30.000000000 +0900
@@ -48,3 +48,11 @@
#@student - maxlogins 4

# End of file
+grid soft nproc 2047
+grid hard nproc 16384
+grid soft nofile 1024
+grid hard nofile 65536
+oracle soft nproc 2047
+oracle hard nproc 16384
+oracle soft nofile 1024
+oracle hard nofile 65536
[root@discus164 security]#


/etc/pam.d/loginの設定(差分のみ載せています)

[root@discus164 pam.d]# diff -u login.org login
--- login.org 2010-01-20 19:36:29.000000000 +0900
+++ login 2010-11-24 11:16:33.000000000 +0900
@@ -12,3 +12,4 @@
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session optional pam_keyinit.so force revoke
+session required pam_limits.so
[root@discus164 pam.d]#


/etc/profileの設定(差分のみ載せています)

[root@discus164 etc]# diff -u profile.org profile
--- profile.org 2009-09-22 08:27:09.000000000 +0900
+++ profile 2010-11-24 11:21:27.000000000 +0900
@@ -56,3 +56,12 @@

unset i
unset pathmunge
+if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
+ if [ $SHELL = "/bin/ksh" ]; then
+ ulimit -p 16384
+ ulimit -n 65536
+ else
+ ulimit -u 16384 -n 65536
+ fi
+ umask 022
+fi
[root@discus164 etc]#


メモリ及びスワップの要件確認(RACを構成する全ノードで実施)
Oracle Databaseインストレーション・ガイド 11gリリース2(11.2) for Linux - 2.2.1 メモリー要件

[root@discus264 ~]# 
[root@discus264 ~]# cat /proc/meminfo | grep MemTotal
MemTotal: 4051640 kB
[root@discus264 ~]# cat /proc/meminfo | grep SwapTotal
SwapTotal: 6094840 kB
[root@discus264 ~]#


カーネルパラメータの設定(RACを構成する全ノードで実施)
Oracle Databaseインストレーション・ガイド 11gリリース2(11.2) for Linux - 2.9 カーネル・パラメータの構成

[root@discus164 ~]# sysctl -a | grep -E '(se|sh)m|file-max|aio-max-nr|ip_local_port_range|(w|r)mem_(default|max)'
net.ipv4.ip_local_port_range = 32768 61000
net.core.rmem_default = 129024
net.core.wmem_default = 129024
net.core.rmem_max = 131071
net.core.wmem_max = 131071
vm.hugetlb_shm_group = 0
kernel.sem = 250 32000 32 128
kernel.shmmni = 4096
kernel.shmall = 4294967296
kernel.shmmax = 68719476736
fs.aio-max-nr = 65536
fs.file-max = 371217
[root@discus164 ~]#

変更の必要があるのはsem/file-max/aio-max-nr/ip_local_port_range/rmem/wmenね。マニュアルの推奨値に設定します。
(以下、差分だけ載せています。)

[root@discus164 etc]# diff -u sysctl.conf.org sysctl.conf
--- sysctl.conf.org 2010-11-24 12:17:12.000000000 +0900
+++ sysctl.conf 2010-11-24 12:17:48.000000000 +0900
@@ -33,3 +33,12 @@

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
+# parameter setting for oracle
+net.ipv4.ip_local_port_range = 9000 65500
+kernel.sem = 250 32000 100 128
+fs.aio-max-nr = 1048576
+fs.file-max = 6815744
+net.core.rmem_default = 262144
+net.core.rmem_max = 4194304
+net.core.wmem_default = 262144
+net.core.wmem_max = 1048576
[root@discus164 etc]#
[root@discus164 etc]#
[root@discus164 etc]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.ip_local_port_range = 9000 65500
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
[root@discus164 etc]#


次回は、RACノード間リモートアクセスの構成へ続きます!(本場のミソカツ食べたお)






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8
VirtualBox de Oracle11g R2 RAC #9

| | | コメント (0) | トラックバック (0)

2010年12月19日 (日)

VirtualBox de Oracle11g R2 RAC #9

VirtualBox de Oracle11g R2 RACのつづきです。

さて、やっと、Oracle所有者と関連ディレクトリの作成及び環境変数の設定作業まできました〜。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2その3
  6. Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

・Oracle所有者、Oracle Grid Infrastructureユーザの作成と関連ディレクトリの作成及び環境変数の設定


Oracle11g R2からOracle Grid Infrastructure(以前はOracle Clusterwareって言われていたやつにASMが組み込まれたと思えばいいのかな?)となり、Oracle所有者以外にOracle Grid Infrastructreユーザの作成が推奨されるようになったので、今回からはOracle所有者に加えてOracle Grid Infrastructureユーザも作成します。

さらに、asmadminやasmdbaといった新顔のグループも必要になり以前より手間が増えてる。 :)

グループの追加方法や、ユーザの作成方法はコマンドでやるもよし、GUIでやるもよし。好きなのを選べばよいと思います。
ノード数が多いとGUIではやらないと思いますけど2ノードですから気にする事ないと思いますよ。:)

で、フループも必要最低限で、oinstall/dba/asmadmin/asmdbaの4グループを作成します。

グループやユーザをコマンドで作成する方法はマニュアルにも記載されていので省略します。
参考:
http://download.oracle.com/docs/cd/E16338_01/install.112/b56271/prelinux.htm#CFIJDFIB
http://download.oracle.com/docs/cd/E16338_01/install.112/b56273/pre_install.htm#BABHHEJD
http://download.oracle.com/docs/cd/E16338_01/install.112/b56271/prelinux.htm#BABBIDCF


以下完成した状態、以下のようになっていればOK. 
[root@discus164 ˜]# 
[root@discus164 ˜]# cat /etc/group | grep -E '(oinstall|dba|asm*)'
oinstall:x:601:oracle,grid
dba:x:602:oracle
asmadmin:x:603:grid
asmdba:x:604:oracle,grid
[root@discus164 ˜]#
[root@discus164 ˜]# cat /etc/passwd | grep -E '(oracle|grid)'
oracle:x:601:601:oracle:/home/oracle:/bin/bash
grid:x:602:601:grid:/home/grid:/bin/bash
[root@discus164 ˜]#
[root@discus164 ˜]# id -a grid
uid=602(grid) gid=601(oinstall) 所属グループ=601(oinstall),603(asmadmin),604(asmdba) context=user_u:system_r:unconfined_t
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# id -a oracle
uid=601(oracle) gid=601(oinstall) 所属グループ=601(oinstall),602(dba),604(asmdba) context=user_u:system_r:unconfined_t


・ORACLE_BASE及びORACLE_HOMEディレクトリの作成

Oracle Grid InfrastructureユーザのORACLE_BASE/ORACLE_HOMEディレクトリ及び、Oracleソフトウェア所有者のORACLE_BASEディレクトリを作成しておきます。

Oracle Grid InfrastrucreユーザのORACLE_BASE=/u01/app/grid、ORACLE_HOME=/u01/app/11.2.0/grid、そして、Oracleソフトウェア所有者のORACLE_BASE=/u01/app/oracle となるように作成しておきます。

RACを構成する全ノードで実施します。

[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# mkdir -p /u01/app/grid
[root@discus164 ˜]# mkdir -p /u01/app/11.2.0/grid
[root@discus164 ˜]# chown -R grid:oinstall /u01
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# mkdir -p /u01/app/oracle
[root@discus164 ˜]# chown -R oracle:oinstall /u01/app/oracle
[root@discus164 ˜]# chmod -R 755 /u01
[root@discus164 ˜]#

[root@discus264 ˜]#
[root@discus264 ˜]#
[root@discus264 ˜]# mkdir -p /u01/app/grid
[root@discus264 ˜]# mkdir -p /u01/app/11.2.0/grid
[root@discus264 ˜]# chown -R grid:oinstall /u01
[root@discus264 ˜]#
[root@discus264 ˜]#
[root@discus264 ˜]# mkdir -p /u01/app/oracle
[root@discus264 ˜]# chown -R oracle:oinstall /u01/app/oracle
[root@discus264 ˜]# chmod -R 755 /u01
[root@discus264 ˜]#
[root@discus264 ˜]#


・環境変数


インストールの際には必要最低限の環境変数でいいんだけどね。設定してても問題になった事は、いまのところないのでこの時点で設定しちゃってます。

参考:
http://download.oracle.com/docs/cd/E16338_01/server.112/b56317/admin_ora.htm#i46652

ところで、Oracle11g だけど、ORA_NLS10なんだね。

でも、http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05816-01/app_initparam.htm#BABGIEFDというGateways系のパラメータではORA_NLS11で同じパスをさすんだけど、紛らわしいから環境変数もORA_NLS11にしちゃえばわかりやすいのにと思うのは私だけ?…


・Oracle Grid Infrastructureユーザの環境変数の例(RACを構成する全ノードのOracle Grid Infrastructureユーザに設定します)

Oracleソフトウェア所有者とはORACLE_SID、ORACLE_BASE環境変数の値が異なっていることに注意!
Oracle Grid InfrastructureユーザはASM管理者でもあるので。

この辺の設定も以前より手間が増えた部分ですね〜。

なお、ついでなので2.14.5 インストール中にsttyコマンドによって発生するエラーの防止対応を行っています。


[grid@discus164 ˜]$  cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific aliases and functions
if [ -t 0 ]; then
stty intr ^C
fi
[grid@discus164 ˜]$
[grid@discus164 ˜]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ˜/.bashrc ]; then
. ˜/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

#for Oracle Grid Infrastructure Owner
#for Grid Infrastructure Owner
# ORACLE_SID : discus164では+ASM1 , discus264では+ASM2をセット
export ORACLE_SID=+ASM1
# ORACLE_BASE/ORACLE_HOME: Grid InfrastructreユーザとOracleソフトウェア所有者では異なるので要注意
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_PATH=.:/u01/app/oracle/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
umask 022
[grid@discus164 ˜]$
[grid@discus164 ˜]$

[grid@discus264 ˜]$  cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific aliases and functions
if [ -t 0 ]; then
stty intr ^C
fi
[grid@discus264 ˜]$
[grid@discus264 ˜]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ˜/.bashrc ]; then
. ˜/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

#for Grid Infrastructure Owner
# ORACLE_SID : discus164では+ASM1 , discus264では+ASM2をセット
export ORACLE_SID=+ASM2
# ORACLE_BASE/ORACLE_HOME: Grid InfrastructreユーザとOracleソフトウェア所有者では異なるので要注意
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_PATH=.:/u01/app/oracle/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
umask 022
[grid@discus264 ˜]$
[grid@discus264 ˜]$

・Oracleソフトウェア所有者の環境変数の例(RACを構成する全ノードのOracleソフトウェア所有者に設定します)


以下、全ノードの設定内容。Oracleソフトウェア所有者の役割はいままで通り。今回作成するデータベースのSIDプリフィックスを orcl にするので
各ノードのORACLE_SID環境変数は orcl1/orcl2 に設定してあります。
[oracle@discus164 ˜]$  cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific aliases and functions
if [ -t 0 ]; then
stty intr ^C
fi
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ˜/.bashrc ]; then
. ˜/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

#for Oracle Owner
# ORACLE_SID : discus164ではorcl1 , discus264ではorcl2をセット
export ORACLE_SID=orcl1
# ORACLE_BASE/ORACLE_HOME: Grid InfrastructreユーザとOracleソフトウェア所有者では異なるので要注意
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_PATH=.:$ORACLE_BASE/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
# enterprise manager向け (作成するデータベースユニーク名は:orclなのでorclを設定しておく)
export ORACLE_UNQNAME=orcl
umask 022
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$

[oracle@discus264 ˜]$  cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific aliases and functions
if [ -t 0 ]; then
stty intr ^C
fi
[oracle@discus264 ˜]$
[oracle@discus264 ˜]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ˜/.bashrc ]; then
. ˜/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

#for Oracle Owner
# ORACLE_SID : discus164ではorcl1 , discus264ではorcl2をセット
export ORACLE_SID=orcl2
# ORACLE_BASE/ORACLE_HOME: Grid InfrastructreユーザとOracleソフトウェア所有者では異なるので要注意
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_PATH=.:$ORACLE_BASE/common/oracle/sql
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:$CLASSPATH
export NLS_LANG=Japanese_japan.al32utf8
export PATH=.:$ORACLE_HOME/bin:$PATH
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export TNS_ADMIN=$ORACLE_HOME/network/admin
umask 022
[oracle@discus264 ˜]$

ということで次回カーネルパラメータなどの設定へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7
VirtualBox de Oracle11g R2 RAC #8

| | | コメント (0) | トラックバック (0)

2010年12月18日 (土)

VirtualBox de Oracle11g R2 RAC #8

VirtualBox de Oracle11g R2 RACのつづきです。

前回はiSCSI targetにローカルデバイス名をマッピングしたとこまででした。今回は前回iSCSIターゲットをマッピングしたローカルデバイスにパーティションを作成します。(
手順は前回と同じなので、そちらも参考に。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1その2、その3
  6. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成(念のために行った、多分、実施しなくても大丈夫だと思うけど。別途確認する予定)
  9. Oracle RACノード構成ファイルの確認
  10. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  11. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  12. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  13. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  14. Oracle11g R2 11.2.0.1.0 examplesのインストール
  15. Oracle Cluster databaseの作成
  16. Net Serviceの確認
  17. Oralce Grid InsfastructureとDatabase構成の確認
  18. Clusterの開始と停止の確認
  19. 簡単なTransparent Application Failover (TAF)の確認

・パーティション

iSCSIターゲットを対応づけたローカルデバイスへfdiskコマンドでパーティションを作成します。

今回は、/dev/iscsi/openfiler:asm1/part、/dev/iscsi/openfiler:asm2/part、/dev/iscsi/openfiler:asm3/part、/dev/iscsi/openfiler:asm4/part、/dev/iscsi/openfiler:crs1/part、/dev/iscsi/openfiler:crs2/partに対して1パーティションを作成し利用可能な全シリンダを割り当てる。
尚、この操作はRACを構成するノードの1ノードからrootユーザとして実施する。

手順は前回の記事を参照のこと。ということで省略します。

最終的に以下の赤字部分の6パーティションが追加されることになります。RACを構成する全ノードで実施。

[root@discus164 ˜]# partprobe
[root@discus164 ˜]# fdisk -l

Disk /dev/sda: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 6527 52323705 8e Linux LVM

Disk /dev/sde: 2147 MB, 2147483648 bytes
67 heads, 62 sectors/track, 1009 cylinders
Units = シリンダ数 of 4154 * 512 = 2126848 bytes

デバイス Boot Start End Blocks Id System
/dev/sde1 1 1009 2095662 83 Linux

Disk /dev/sdc: 22.5 GB, 22548578304 bytes
64 heads, 32 sectors/track, 21504 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes

デバイス Boot Start End Blocks Id System
/dev/sdc1 1 21504 22020080 83 Linux

Disk /dev/sdd: 22.5 GB, 22548578304 bytes
64 heads, 32 sectors/track, 21504 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes

デバイス Boot Start End Blocks Id System
/dev/sdd1 1 21504 22020080 83 Linux

Disk /dev/sdf: 22.5 GB, 22548578304 bytes
64 heads, 32 sectors/track, 21504 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes

デバイス Boot Start End Blocks Id System
/dev/sdf1 1 21504 22020080 83 Linux

Disk /dev/sdg: 2147 MB, 2147483648 bytes
67 heads, 62 sectors/track, 1009 cylinders
Units = シリンダ数 of 4154 * 512 = 2126848 bytes

デバイス Boot Start End Blocks Id System
/dev/sdg1 1 1009 2095662 83 Linux

Disk /dev/sdb: 22.5 GB, 22548578304 bytes
64 heads, 32 sectors/track, 21504 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes

デバイス Boot Start End Blocks Id System
/dev/sdb1 1 21504 22020080 83 Linux
[root@discus164 ˜]#
[root@discus164 ˜]#


・確認
パーティションの作成が済んだらRACの全ノードでrootユーザとしてパーティションが認識されているか確認する。RACを構成する全ノードで。

[root@discus164 ˜]# 
[root@discus164 ˜]#
[root@discus164 ˜]# cd /dev/disk/by-path; ls -l *openfiler* | awk '{print $9 " " $10 " " $11}'
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm1-lun-0 -> ../../sdb
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm1-lun-0-part1 -> ../../sdb1
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm2-lun-0 -> ../../sdc
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm2-lun-0-part1 -> ../../sdc1
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm3-lun-0 -> ../../sdd
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm3-lun-0-part1 -> ../../sdd1
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm4-lun-0 -> ../../sdf
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:asm4-lun-0-part1 -> ../../sdf1
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:crs1-lun-0 -> ../../sde
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:crs1-lun-0-part1 -> ../../sde1
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:crs2-lun-0 -> ../../sdg
ip-192.168.2.92:3260-iscsi-iqn.2006-01.com.openfiler:crs2-lun-0-part1 -> ../../sdg1
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# ls -l /dev/iscsi/*/*
lrwxrwxrwx 1 root root 9 12月 18 13:40 /dev/iscsi/openfiler:asm1/part -> ../../sdb
lrwxrwxrwx 1 root root 10 12月 18 13:40 /dev/iscsi/openfiler:asm1/part1 -> ../../sdb1
lrwxrwxrwx 1 root root 9 12月 18 13:40 /dev/iscsi/openfiler:asm2/part -> ../../sdc
lrwxrwxrwx 1 root root 10 12月 18 13:40 /dev/iscsi/openfiler:asm2/part1 -> ../../sdc1
lrwxrwxrwx 1 root root 9 12月 18 13:40 /dev/iscsi/openfiler:asm3/part -> ../../sdd
lrwxrwxrwx 1 root root 10 12月 18 13:40 /dev/iscsi/openfiler:asm3/part1 -> ../../sdd1
lrwxrwxrwx 1 root root 9 12月 18 13:40 /dev/iscsi/openfiler:asm4/part -> ../../sdf
lrwxrwxrwx 1 root root 10 12月 18 13:40 /dev/iscsi/openfiler:asm4/part1 -> ../../sdf1
lrwxrwxrwx 1 root root 9 12月 18 13:40 /dev/iscsi/openfiler:crs1/part -> ../../sde
lrwxrwxrwx 1 root root 10 12月 18 13:40 /dev/iscsi/openfiler:crs1/part1 -> ../../sde1
lrwxrwxrwx 1 root root 9 12月 18 13:40 /dev/iscsi/openfiler:crs2/part -> ../../sdg
lrwxrwxrwx 1 root root 10 12月 18 13:40 /dev/iscsi/openfiler:crs2/part1 -> ../../sdg1
[root@discus164 ˜]#


2010/12//20追記
忘れてた、前回気づいたCentOS5.5でのiscsidの問題。これに対処しておかないと、Openfiler側に多数のゾンビセッションが残ってしまうので要注意!

ということで次回へつづく。






これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5
VirtualBox de Oracle11g R2 RAC #6
VirtualBox de Oracle11g R2 RAC #7


| | | コメント (0) | トラックバック (0)

2010年12月10日 (金)

VirtualBox de Oracle11g R2 RAC #6

VirtualBox de Oracle11g R2 RACのつづきです。

前回はOpenfiler側でその準備をしたところまででした。今回はOracle RACの各ノードでiSCSIボリュームの構成です。

今回も以前行ったCentOS5.2(x86)内容と同じ手順なのでそちらの記事も参考してくださいね。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成 その1
  6. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

・RACを構成する全ノードでiscsi-initiator-utilsがインストールされていることを確認。

インストールされていなかったらyumでインストールしてね。

[root@discus164 ˜]# 
[root@discus164 ˜]#
[root@discus164 ˜]# yum list installed iscsi-initiator-utils | grep installed
iscsi-initiator-utils.x86_64 6.2.0.871-0.16.el5 installed
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# ssh discus264 "yum list installed iscsi-initiator-utils | grep installed"
root@discus264's password:
iscsi-initiator-utils.x86_64 6.2.0.871-0.16.el5 installed
[root@discus164 ˜]#
[root@discus164 ˜]#

・iscsiの起動確認、起動してなかったら service iscsi startで起動.

[root@discus164 ˜]# 
[root@discus164 ˜]# service iscsi status
iscsid (pid 1998) を実行中...
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# ssh discus264 "service iscsi status"
root@discus264's password:
iscsid (pid 1996) を実行中...
[root@discus164 ˜]#
[root@discus164 ˜]#

・自動起動の確認、自動起動になってなかったら chkconfig iscsi on で設定.

[root@discus164 ˜]# chkconfig --list iscsi
iscsi 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@discus164 ˜]#
[root@discus164 ˜]# ssh discus264 "chkconfig --list iscsi"
root@discus264's password:
iscsi 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@discus164 ˜]#
[root@discus164 ˜]#

以下、CentOS5.5では iscsiを起動・停止すればiscsidも起動・停止されるので前述のようになっていればOK.
[root@discus164 ˜]#
[root@discus164 ˜]# cat /etc/rc.d/init.d/iscsi | grep iscsid
status iscsid
/etc/init.d/iscsid start
/etc/init.d/iscsid stop
status iscsid
[root@discus164 ˜]#
[root@discus164 ˜]#

/etc/iscsi/initiatorname.iscsiの設定.わかりやすいIQNにするといいですよん。

[root@discus164 ˜]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2010-10.jp.macdeoracle.discus1
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# ssh root@discus264 "cat /etc/iscsi/initiatorname.iscsi"
root@discus264's password:
InitiatorName=iqn.2010-10.jp.macdeoracle.discus2
[root@discus164 ˜]#

・iscsi-targetの検出
OpenfilerとRACの各ノードは、VirtualBoxの内部ネットワークアダプタ(VM間でしか通信できない)を利用してprivateネットワークで繋いでおり、Openfiler側で許可したipアドレスからの接続しか受け付けないよう設定していましたよね?、覚えてます?
で、Openfiler側のprivateネットワークのipアドレスは、192.168.2.92と設定したので、 iscsi-targetの検出先は前述のipアドレスということにまります。

なので iscsiadmコマンドの -p パラメータに設定する ipアドレスは 192.168.2.92となっているわけです。

iscsi-targetが検出されました〜! 検出されたiscsi-targetへの接続確認、自動接続設定へと続きます。

[root@discus164 ˜]# 
[root@discus164 ˜]# cat /etc/hosts | grep arowana2-priv
192.168.2.92 arowana2-priv.macdeoracle.jp arowana2-priv
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# iscsiadm -m discovery -t sendtargets -p 192.168.2.92
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm1
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm2
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm4
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:crs2
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm3
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:crs1
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# ssh discus264 "iscsiadm -m discovery -t sendtargets -p 192.168.2.92"
root@discus264's password:
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm3
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:crs2
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm1
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm2
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:asm4
192.168.2.92:3260,1 iqn.2006-01.com.openfiler:crs1
[root@discus164 ˜]#
[root@discus164 ˜]#

・iscsi-targetへの手動接続(RACを構成する全ノードで試してください。以下、discus164からの例。)

[root@discus164 ˜]# 
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:crs1 -p 192.168.2.92 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:crs2 -p 192.168.2.92 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]: successful
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm1 -p 192.168.2.92 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]: successful
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm2 -p 192.168.2.92 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]: successful
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm3 -p 192.168.2.92 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]: successful
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm4 -p 192.168.2.92 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]: successful
[root@discus164 ˜]#

ちなみに…手動ログアウトする場合は -l の部分を -u に変えて実行すればOK.

[root@discus164 ˜]# 
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:crs1 -p 192.168.2.92 -u
Logging out of session [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Logout of [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
[root@discus164 ˜]#
[root@discus164 ˜]#

iscsi-targetへの自動接続設定(RACを構成する全ノードで実施します。以下discus164からの例)

[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:crs1 -p 192.168.2.92 --op update -n node.startup -v automatic
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:crs2 -p 192.168.2.92 --op update -n node.startup -v automatic
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm1 -p 192.168.2.92 --op update -n node.startup -v automatic
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm2 -p 192.168.2.92 --op update -n node.startup -v automatic
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm3 -p 192.168.2.92 --op update -n node.startup -v automatic
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:asm4 -p 192.168.2.92 --op update -n node.startup -v automatic
[root@discus164 ˜]
[root@discus164 ˜]#

ちなみに…手動接続に戻す場合は automatic の部分を manual に変えて実行すればOK.(多分、使う事ないと思いますけど、念のため)

[root@discus164 ˜]# 
[root@discus164 ˜]#
[root@discus164 ˜]# iscsiadm -m node -T iqn.2006-01.com.openfiler:crs1 -p 192.168.2.92 --op update -n node.startup -v manual
[root@discus164 ˜]#
[root@discus164 ˜]#

自動接続設定がうまく言っているか確認しましょう。
これまでの手順通りに操作していれば、RACを構成する各ノードから各iscsi-targetへ接続されている状態になっているはずです。

まず、サービスを停止してiscsi-targetからログアウトされるか確認してみます。

[root@discus164 ˜]# 
[root@discus164 ˜]#
[root@discus164 ˜]# service iscsi stop
Logging out of session [sid: 1, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]
Logging out of session [sid: 2, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]
Logging out of session [sid: 3, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]
Logging out of session [sid: 4, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]
Logging out of session [sid: 5, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]
Logging out of session [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Logout of [sid: 1, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]: successful
Logout of [sid: 2, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]: successful
Logout of [sid: 3, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]: successful
Logout of [sid: 4, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]: successful
Logout of [sid: 5, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]: successful
Logout of [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
Stopping iSCSI daemon:
[root@discus164 ˜]# [ OK ]
[root@discus164 ˜]#
[root@discus164 ˜]# ssh discus264 "service iscsi stop"
root@discus264's password:
Logging out of session [sid: 1, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]
Logging out of session [sid: 2, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]
Logging out of session [sid: 3, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]
Logging out of session [sid: 4, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]
Logging out of session [sid: 5, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]
Logging out of session [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Logout of [sid: 1, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]: successful
Logout of [sid: 2, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]: successful
Logout of [sid: 3, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]: successful
Logout of [sid: 4, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]: successful
Logout of [sid: 5, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]: successful
Logout of [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
Stopping iSCSI daemon:
[root@discus164 ˜]#

うまくいきました。次はiscsiサービスを起動して各iscsi-targetへ自動接続されるか確認します。

[root@discus164 ˜]# service iscsi start
iscsid が停止していますが PID ファイルが残っています
Starting iSCSI daemon: [ OK ]
[ OK ]
iSCSI ターゲットを設定中: Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
[ OK ]
[root@discus164 ˜]#
[root@discus164 ˜]#
[root@discus164 ˜]# ssh discus264 "service iscsi start"
root@discus264's password:
iscsid が停止していますが PID ファイルが残っています
[ OK ] iSCSI daemon: [ OK ]
[ OK ]
iSCSI ターゲットを設定中: Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
[ OK ]
[root@discus164 ˜]#
[root@discus164 ˜]#

うまく接続できたようです。

最後にOpenfilerの管理画面で接続状態を確認してみます。

20101210_150418

今日はこの辺で。





これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4
VirtualBox de Oracle11g R2 RAC #5

| | | コメント (0) | トラックバック (0)

2010年12月 9日 (木)

VirtualBox de Oracle11g R2 RAC #5

VirtualBox de Oracle11g R2 RACのつづきです。

Openfiler2.3のインストールとiSCSIボリュームの構成なのですが、VMでもリアルなマシンへのインストールとの違いは無いので詳しくは書きません。以前の記事を参考にしてくださいね。(ネットワーク関連は前回の記事もあわせてご覧ください

なお、今回Openfier2.3 (x86)向けに作成したVM (x86 red hat linux)は、CPU*2/RAM:2GB/DISK:100GBとしてあります。
Openfiler2.3 (x86)インストール時のパーティションは/bootに100MB、/に4GB、swapにメモリサイズの倍で4GBを配分し、残りの91.9GBを未割当としました。
未割当とした91.9GBをiSCSIボリュームで利用することになります。(この未割当分が大切。この時点ではパーティションに割り当てないで残しておいてね)

NOTE:
この時点では/etc/hostsファイルだけで、DNSは利用していません。Oracle11g R2 11.2.0.1.0 RACインストール事前作業Oracle RACノード間リモートアクセスの構成が終わったあとでDNSの構成を行います。(OpenfilerにDNSを構成することにしたので、このタイミングでDNSの構成とhostsファイルの構成を行うほうがよいとは思うのですが…


Openfiler2.3によるiSCSIボリュームの構成はこちらを参考に…
Mac de Oracle - 10万円未満 de RAC (11g編)#4 - 4. Openfiler2.3によるiSCSIボリュームの構成

以前と違う点は、Oracle11g R2からVoting diskとOCRがASM管理可能となったので全ボリュームをASM管理で行うことにしました。

という1点だけ。(iSCSIボリュームで利用する残り91.9GBをどのような割合で論理ボリュームへ配分したかは後述)

以前までOracleの共有ディスク・クラスタ・ファイルシステム(ocfs2)をインストールしていましたが今回は利用しません。Oracle11g R2でもVoting diskとOCRの共有ディスク・クラスタ・ファイルシステム管理は可能なようですが…)

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成
  6. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認

以前の記事参照ください…ばかりだと、今回書く事がなくなってしまうのでiSCSIのボリューム構成で今回変えたところを書いておきますね。
(今回はすべてASM管理下に置くので…)

Openfiler2.3(x86)インストール完了後、/etc/hostsに設定した内容は以下の通り。

[root@arowana2 ˜]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost

192.168.1.92 arowana2.macdeoracle.jp arowana2
192.168.1.90 discus164.macdeoracle.jp discus164
192.168.1.91 discus264.macdeoracle.jp discus264

192.168.2.92 arowana2-priv.macdeoracle.jp arowana2-priv
192.168.2.90 discus164-iscsi.macdeoracle.jp discus164-iscsi
192.168.2.91 discus264-iscsi.macdeoracle.jp discus264-iscsi

192.168.1.2 lampeye.macdeoracle.jp lampeye
[root@arowana2 ˜]#


今回作成するiSCSI論理ボリュームおよびターゲット名などは以下の通り。
(Openfilerの構成手順はMac de Oracle - 10万円未満 de RAC (11g編)#4を参照のこと。)

・ネットワークアクセスの構成

前回の書いた通り、iSCSI専用の経路でアクセスできるようdiscus164-iscsiおよびdiscus264-iscsiからのみOpenfilerへ接続できるよう設定した。
Network_access_configuration_2


・Partitionの作成および、Volume groupの作成

91.9GBの未割当領域を/dev/sda4としてパーティション割当を行った後、rac1というVolume Groupを作成し/dev/sda4を割り当てる。

Block_device_management

Volume_group_management


・論理ボリュームの割当

rac1(前述の操作で作成したVolume Group)を選択し、論理ボリュームを追加する。今回はcrs向けに2GBの論理ボリューム2つ、OracleのData向けに21GBの論理ボリューム2つ、そして、Fast Recovory Area向けに21GBの論理ボリュームを2つを追加作成する。(91.9GBのうち、88GBを利用したので3.9GBほど残っちゃいましたけどね)

Volume_management


・iSCSI Target Qualified Name(IQN)の設定

crs向けに2つ、Oracle data file向けに2つ、Oralce Fast Recovery Area向けに2つのボリュームグループを作成したので、それぞれにiSCSI Target Qualified Nameを割り当てた。

CRS向け - iqn.2006-01.com.openfiler:crs1 および crs2
Oracle Data file向け - iqn.2006-01.com.openfiler:asm1 および asm2
Oracle Fast Recovery Area向け - iqn.2006-01.com.openfiler:asm3 および asm4

asm1〜4より、data1/2とか fra1/2にしたほうがわかりやすかったですね〜…後から反省。


Iscsi_target


・Network ACLの設定

RACを構成する2ノードのiscsi用privateネットワーク(discus164-iscsiおよび、discus264-iscsi(からのアクセスを許可するよう設定した。

Network_acl


・LUNマッピング

iSCSI Target Qualified Name(IQN)の設定で作成した各IQNをLUNへマッピングする。
マッピング内容は以下の通り。

Lun_iqn_mapping

ここまでくればiSCSIの準備は終了!

次回へつづく。





これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…
VirtualBox de Oracle11g R2 RAC #3
VirtualBox de Oracle11g R2 RAC #4

| | | コメント (0) | トラックバック (0)

2010年12月 4日 (土)

VirtualBox de Oracle11g R2 RAC #3

VirtualBox de Oracle11g R2 RACのつづきです。

以下のような内容で進めていきます。ほぼ元ネタに近いですけどね :)

前々回前回と少々構成もあるあるていど書いてますが、全体像をまとめて書いておきますね。

  1. ハードウェア構成(VMなのでVMの構成も含めて)、ソフトウェア構成など
  2. Linux (CentOS 5.5 x86_64)のインストール
  3. Openfiler2.3 x86のインストール
  4. Openfiler2.3 x86によるiSCSIボリュームの構成
  5. Oracle RACノードでのiSCSIボリュームの構成
  6. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  7. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  8. Oracle RACノード間リモートアクセスの構成とntpの構成
    sshの構成は念のために行った、多分、実施しなくても大丈夫だと思うけど…ついでなので、ちょいと意地悪な実験をしてみた)
  9. ローカルネームサーバの構成
  10. Oracle RACノード構成ファイルの確認
  11. Oracle Automatic Storage Management(ASMLib 2.0.5 x84_64)のインストール及び構成
  12. Oracle11g R2 11.2.0.1.0 RACインストール事前作業
  13. Oracle11g R2 11.2.0.1.0 Grid Infrastractureのインストール
  14. Oracle11g R2 11.2.0.1.0 Database softwareのインストール
  15. Oracle11g R2 11.2.0.1.0 examplesのインストール
  16. Oracle Cluster databaseの作成
  17. Net Serviceの確認
  18. Oralce Grid InsfastructureとDatabase構成の確認
  19. Clusterの開始と停止の確認
  20. 簡単なTransparent Application Failover (TAF)の確認



・Hardware

・CPU - Intel Core i7-980X Extreme Edition 3.33Ghz (6 core / 12 thread) * 1
・Memory - 12GB (2GB * 6)
・Disk - S-ATA2 1TB * 2
・NIC - on board Gbit NIC * 1
グラフィックカードは気にしてなかったので安めの、 NVIDIA GeForce GTS 250 (512MB)

上記PCで3つのVMを起動するので結構いっぱいいっぱいなのでクライアントはいつものようにMacを使います。
MacProの12-Core (2.66GHz 6コア Intel Xeon"Westmere" * 2)ってお化けPCがもうちょっと早く発表されてたらな〜、Mac上でVM作って楽しめたんだがタイミングの問題なのでしかたない 
><


・Software

・Host OS - CentOS5.5 (kernel 2.6.18-194.17.1.el5) x86_64
・System virtual machine software - VirtualBox 3.2.8 x86_64 for Linux

・Guest OS (for iSCSI) - Openfiler2.3 x86 (rPath Linux)
・DNS - bind9.4.3_P5-1.1-1 (rPath Linuxのソフトウェア管理ツールであるconaryを利用してインストールします)

・Guest OS (for RAC) - CentOS5.5 x86_64 (kernel 2.6.18-194.17.1.el5)

VMの構成は前回の通りなのだが、一応書いておくと

・Openfiler2.3 x86向けVMの構成
ネットワークアダプタ1をブリッジアダプタで定義してPublicネットワーク用に利用し、ネットワークアダプタ1は内部ネットワークとして定義しPrivateネットワーク用(iSCSIのアクセス用)に利用する。
ちなみに、VirtualBoxの内部ネットワークは、VM間でのみ通信できるアダプタなのでInterConnectなどのPrivateネットワーク向きなんじゃないかと思っている。

・OSタイプ - Red Hat (32bit仮想マシン)
・メインメモリ - 2GB (ちょいと少なめ)
・プロセッサ数 - 2
・SATAポート0 - 100GB
・ネットワークアダプタ1 - Intel PRO/1000 MT Desktop (ブリッジアダプタ - eth0)
・ネットワークアダプタ2 - Intel PRO/1000 MT Desktop (内部ネットワーク - intnet)

・各RACノードのCentOS5.5 x86_64向けVMの構成
Openfiler向けVMと同様にネットワークアダプタ1はブリッジアダプタとして定義して、Publicネットワークとして利用し、ネットワーク2は内部ネットワークで定義してiSCSI用のPrivateネットワーク。ネットワークアダプタ3も内部ネットワークとして定義し、Interconnect用Privateネットワークとして使う。

・OSタイプ - Red Hat (64bit仮想マシン)
・メインメモリ - 4GB
・プロセッサ数 - 4
・SATAポート0 - 50GB
・ネットワークアダプタ1 - Intel PRO/1000 MT Desktop (ブリッジアダプタ - eth0)
・ネットワークアダプタ2 - Intel PRO/1000 MT Desktop (内部ネットワーク - intnet)
・ネットワークアダプタ3 - Intel PRO/1000 MT Desktop (内部ネットワーク - intnet)


ということで次回へつづく。





これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2



VirtualBox de Oracle11g R2 RAC #1
VirtualBox de Oracle11g R2 RAC #2 - 事前調査など…

| | | コメント (0) | トラックバック (0)

2010年11月30日 (火)

VirtualBox de Oracle11g R2 RAC #1

前回VirtualBoxでOracle11g R1 RACを試したので今回はOracle11g R2 2ノードRACをVirtualBox上に構築してみた。

Oracle11g R1 RACをVirtualBox上に構築した際にも発生したdbcaの最後に表示される確認ダイアログを表示したまま固まるという状況があったものの今回もデータベースは作成されていた。
前回はdbcaの最後に表示される確認ダイアログで固まった後に強制終了させ、dbcaでデータベースの作成/削除を数度行い時間を要したもののハング?したような状態から正常に復帰したためそれ以外はなにも行わなかったのだが、今回はハング状態からVMを強制終了/起動してみた。
結果オーライという感じなのだが、dbcaの処理は終わっていたようで問題なくインスタンスが起動したのにはニッコリ!

[oracle@discus164 ˜]$ 
[oracle@discus164 ˜]$
[oracle@discus164 ˜]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 火 11月 29 21:54:50 2010

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

SQL> conn system@orcl
パスワードを入力してください:
接続されました。
SQL>
SQL>
SQL> select * from gv$version;

INST_ID BANNER
---------- --------------------------------------------------------------------------------
1 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
1 PL/SQL Release 11.2.0.1.0 - Production
1 CORE 11.2.0.1.0 Production
1 TNS for Linux: Version 11.2.0.1.0 - Production
1 NLSRTL Version 11.2.0.1.0 - Production
2 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
2 PL/SQL Release 11.2.0.1.0 - Production
2 CORE 11.2.0.1.0 Production
2 TNS for Linux: Version 11.2.0.1.0 - Production
2 NLSRTL Version 11.2.0.1.0 - Production

10行が選択されました。

SQL>


20101130_161324


以下、前回よりもさらに適当に書いてしまった感じのする配置図。(雰囲気が伝われば問題ないのでこんなところで勘弁して〜w)

Virtualbox_de_rac_11g_r2_2


Oracle11g R2からGrid Infrastructure (Oracle11g R1までのOracle ASM + Oracle Clusterware)になりDNSまたはGNS(Grid Naming Service)が必要だってことで、iSCSIで利用しているOpenfiler上でDNSを構成したこと、および、RACを構成するノードごとVNICを3つ作成し、1つはPublicネットワーク用、1つはInterconnect専用、そしてもう1つは、iSCSIストレージアクセス専用としたところがポイント。(ちなみに、InterconnectとiSCSIはprivateネットワークとしてVirtualBoxの内部ネットワークアダプタを利用した)

参考にしたブログでは、nslookupを改造しちゃってDNSを使わない方法なんかもあったが今回はDNSを利用した。(普段やらないからDNSの構成ファイルの記述方法調べんのが一番めんどくさかったw)
SCAN (Single Client Access Name)を利用するのにDNSかGNSが必須なんですよー。新しい用語増え過ぎw

参考:

・SCANの解説でわかりやすい資料はこれかも↓
http://www.oracle.com/technology/global/jp/products/database/clustering/pdf/scan.pdf

・インストールおよび構成で参考にした記事
http://www.oracle.com/technetwork/articles/hunter-rac11gr2-iscsi-088677.html
http://www.idevelopment.info/data/Oracle/DBA_tips/Oracle11gRAC/CLUSTER_12.shtml





これまでのあらすじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1
VirtualBox de RAC (Oracle11g R1編) #2

| | | コメント (0) | トラックバック (0)

2010年10月31日 (日)

VirtualBox de RAC (Oracle11g R1編)#2

VirtualBox de RAC (Oracle11g R1編)の続きです。
試していて気付いた問題点やハマった点が幾つかあったので備忘録として残しておきますね。

まず最初はCentOS5.5でのiscsidの問題。

この問題、iscsiデバイスを利用しているCentOS5.5をshutdown/rebootすると停止時に以下のようなメッセージを表示した後、いきなりHALTしてしまう。Openfiler側が起動しっぱなりしの場合は、大量のゾンビセッションが残ってしまい 気付かないと大変なことになってしまうという、なかなかスリリングな事象なのでご用心を。

私の場合、停止時のエラーメッセージに気付き、Openfiler側のセッションがゾンビだらけで驚いた!〜っていうとこで気付いた。

ググってみたら、これは、Red hat Linux/CentOS 5.5でのバグということが判明。
暫定的な対処方法はいつくかあるが、私の環境では、/etc/init.d/iscsiを書き換え、run level 0/1/6でなにもしないで抜ける部分をコメントアウトして対処した。

ちなみに、run level 0/1/6以外ならiscsiは正しく動作してます。以下、stop/startで正しくiscsiが実行されてLogout/Logonが成功している状態。

[root@discus164  ˜]# service iscsi stop
Logging out of session [sid: 1, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]
Logging out of session [sid: 2, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]
Logging out of session [sid: 3, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]
Logging out of session [sid: 4, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]
Logging out of session [sid: 5, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]
Logging out of session [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Logout of [sid: 1, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]: successful
Logout of [sid: 2, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]: successful
Logout of [sid: 3, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]: successful
Logout of [sid: 4, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]: successful
Logout of [sid: 5, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]: successful
Logout of [sid: 6, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
Stopping iSCSI daemon:
[root@discus164 ˜]# service iscsi start
iscsid が停止していますが PID ファイルが残っています
Starting iSCSI daemon: [ OK ]
[ OK ]
iSCSI ターゲットを設定中: Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm1, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm2, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm4, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs2, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:asm3, portal: 192.168.2.92,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:crs1, portal: 192.168.2.92,3260]: successful
[ OK ]
[root@discus164 ˜]#


この場合はなんの問題もないわけです。が…

Status_ok


Iscsi_stop


Iscsi_after_stop


Iscsi_start


Iscsi_after_start



ところが、対処前のCentOS5.5では、shutdown/reboot時に以下のログが表示されLogoutできずOpenfiler側のセッションがゾンビ化する。

Unmounting pipe file systems:                              [  OK  ]
connection2:0: ping timeout of 5 secs expired, recv timeout 5, last rx 4300342437, last ping 4300347437, now 4300352437
connection2:0: detected conn error (1011)
connection1:0: ping timeout of 5 secs expired, recv timeout 5, last rx 4300342437, last ping 4300347437, now 4300352439
connection1:0: detected conn error (1011)
connection4:0: ping timeout of 5 secs expired, recv timeout 5, last rx 4300342437, last ping 4300347437, now 4300352449
connection4:0: detected conn error (1011)
connection3:0: ping timeout of 5 secs expired, recv timeout 5, last rx 4300342437, last ping 4300347437, now 4300352463
connection3:0: detected conn error (1011)
connection5:0: ping timeout of 5 secs expired, recv timeout 5, last rx 4300342437, last ping 4300347437, now 4300352472
connection5:0: detected conn error (1011)
connection6:0: ping timeout of 5 secs expired, recv timeout 5, last rx 4300342437, last ping 4300347437, now 4300352474
connection6:0: detected conn error (1011)
Unmounting file systems: [ OK ]
Halting system...

スクリーンショットは以下
Iscsi_eror



前述の問題の対処として/etc/init.d/iscsiを修正する方法を選択した。diffは以下のとおり。

[root@discus164 ˜]# diff -u /etc/init.d/iscsi.org /etc/init.d/iscsi
--- /etc/init.d/iscsi.org 2010-03-31 22:26:39.000000000 +0900
+++ /etc/init.d/iscsi 2010-10-31 01:33:12.000000000 +0900
@@ -35,10 +35,10 @@

# If this is a final shutdown/halt, do nothing since
# lvm/dm, md, power path, etc do not always handle this
- if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
- success
- return
- fi
+ #if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
+ # success
+ # return
+ #fi

# don't turn off iscsi if root is possibly on a iscsi disk
rootopts=$(awk '{ if ($1 !˜ /^[ \t]*#/ && $2 == "/") { print $4; }}' /etc/mtab)

修正後は以下のとおり問題なくiscsiのセッションがlogoutされている ;)
Iscsi_ok



参考:

Stray Penguin - Linux Memo (iSCSi) - シャットダウン/リブート時のSCSI cache エラー
Red Hat Bugzilla – Bug 583218





これまでのあらずじ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

VirtualBox de RAC (Oracle11g R1編) #1

| | | コメント (0) | トラックバック (0)

2010年10月23日 (土)

Dashboard de Aquarium v1.5

Dashboard de Aquarium v1.5 の動画あるといいな〜なんて事言われててずーっと放置プレイだったので、Quicktime XのScreen recording、iMovieとGarageBandで。

PCの音量は控えめに (^^;;

さて、次はなにをするかちょいとネタ探し中。

| | | コメント (0) | トラックバック (0)

2010年10月18日 (月)

Mac de Oracle - 10万円未満 de RAC (11g編)改め、 VirtualBox de RAC (Oracle11g R1編) #1

いままでいろいろと遊んでいたPCやうちの奥さんのPCがじゃまになってきたのでCore i7 980x (6 core / ハイパースレッディングを使って12CPU)というやつ1台に集約!

さすがに"10万円未満 de"はとは言えなくなった(購入金額をVM数で割ってもちょいと足がでるが、電気代とか占有スペースとか必要に応じてVM作って遊べるのでお得だ。)ので、VirtualBox de RACと改名いたしましたw

とは言っても、Oracle11g R1 EE for Linux x86でiSCSIを使うというのは同じで、違うのは全部VMっていうところだけ。
手順もMac de Oracle - 10万円未満 de RAC (11g編)と同じ(OCFS2やASMlibのバージョンはCentOSのバージョンに対応する最新のものを利用しています。)なのでVM使ってて悩んだ所などを中心に書く予定。


・CPU - Intel Core i7-980X Extreme Edition 3.33Ghz (6 core / 12 thread) * 1
・Memory - 12GB (2GB * 6)
・Disk - S-ATA2 1TB * 2
・NIC - on board Gbit NIC
グラフィックカードは気にしてなかったので安めの、 NVIDIA GeForce GTS 250 (512MB)



Screenshotvirtualbox


Screenshotoracle_vm_virtualbox1_2


Screenshotoracle_vm_virtualbox_2


Screenshotoracle_vm_virtualbox2_2

ソフトウェアは以下の通り。

ホストOS等
・CentOS5.5 x86_64 (Kernel:2.6.18-194.17.1.e15)
・VirtualBox3.2.8 x86_64


ゲストOS等
・CentOS5.5 x86 (kernel:2.6.18-194.17.1.e15PAE)
・Openfiler2.3 x86
・Oracle11g 11.1.0.6.0 EE for Linux x86
 など…

以下、適当に書いた配置図。
VNICの設定では、外部ネットワークにも行けるようにBridge Adapterを使ったこととInterconnect向けにInternal Networkを使った(VirtualBoxのInternal NetworkはGestOS間でのみ通信できHostOSからも見えない)
Virtualbox_de_rac_11g_r1

という案で、VMごとクラッシュさせたりいろいろ悩みながらなんとかインスコ&構築done。現在は以下ような状態! :)
Oem1

Virtualbox_de_rac_11g_r1_2


次回へつづく。



関連エントリ
Mac de Oracle - 10万円未満 de RAC (11g編)#28

| | | コメント (0) | トラックバック (0)

2010年10月11日 (月)

MacOSXでCD-RWやDVD-RWに記録した内容を全て消去する方法(Unix/Linux使いだけど、MacOS Xは初心者って方向けの方法)

さて、さて、MacOS XのTerminalからいろいろと初心者向けじゃないことを続けて書いちゃおーかなーということで。

今回は、CD-RWととかDVD-RWとか追記可能な光ディスクに記録したデータなど不要になり全部消去したい場合の方法。
quickはオプションなので時間がかかってもよい場合はquickなしでいいよ!

discus:˜ discus$ diskutil -help
Disk Utility Tool
Utility to manage local disks and volumes.
Most options require root access to the device

Usage: diskutil <verb> <options>
<verb> is one of the following:
list (List the partitions of a disk)
information | info (Get information on a disk or volume)

unmount (Unmount a single volume)
unmountDisk (Unmount an entire disk (all volumes))
eject (Eject a disk)
mount (Mount a single volume)
mountDisk (Mount an entire disk (all mountable volumes))
rename (Rename a volume)

enableJournal (Enable HFS+ journaling on a mounted HFS+ volume)
disableJournal (Disable HFS+ journaling on a mounted HFS+ volume)

verifyVolume (Verify the structure of a volume)
repairVolume (Repair the structure of a volume)

verifyPermissions (Verify the permissions of a volume)
repairPermissions (Repair the permissions of a volume)
repairOS9Permissions (Repair the permissions for the current
Classic boot volume)

eraseDisk (Erase an existing disk, removing all volumes)
eraseVolume (Erase an existing volume)
reformat (Reformat an existing volume)
eraseOptical (Erase an optical media (CD/RW, DVD/RW, etc.))
zeroDisk (Erase a disk, writing zeros to the media)
randomDisk (Erase a disk, writing random data to the media)
secureErase (Securely erase a disk or freespace on a volume)
resizeVolume (resize a volume, increasing or decreasing its size)

partitionDisk ((re)Partition a disk, removing all volumes)

createRAID (Create a RAID set on multiple disks)
destroyRAID (Destroy an existing RAID set)
checkRAID (Check a RAID set for errors)
enableRAID (Convert a disk to a degraded RAID mirror set)
convertRAID (Convert a RAID 1.x (pre-Tiger) to a RAID 2.x (Tiger))
updateRAID (Update the settings of an existing RAID)
addToRAID (Add a spare or member disk to an existing RAID)
removeFromRAID (Remove a spare or member disk from an existing RAID)
repairMirror (Repair a damaged RAID mirror set)

diskutil <verb> with no options will provide help on that verb

discus:˜ discus$ diskutil eraseOptical -help
Disk Utility Tool
Usage: diskutil eraseOptical [quick]
[Mount Point|Disk Identifier|Device Node]
Completely erase an existing optical disk. Ownership of the affected disk is required.
Example: diskutil eraseOptical quick /dev/disk2
discus:˜ discus$

消去したいCD-RWやDVD-RWを挿入後、デバイス名を確認! この例の場合、/dev/disk1ですね。

discus:˜ discus$ mount | grep discus_cd_img
/dev/disk1s1s3 on /Volumes/discus_cd_img (hfs, local, nodev, nosuid, read-only, noowners)
discus:˜ discus$

以下の例ではquickオプション付けてます!

discus:˜ discus$
discus:˜ discus$ diskutil eraseOptical quick /dev/disk1
Started erase on disk disk1
[ + 0%..10%..20%..30%..40%..50%..60%..70%..80%..90%..100% ]
Finished erase on disk disk1
discus:˜ discus$

終了!!!

まっさらになったDISCなので以下のようなダイアログが表示される.「取り出す」ボタンをクリックして取り出しましょ!
Diskutil_quick_eraseing_cd

| | | コメント (0) | トラックバック (0)

MacOSXでCDやDVDを焼く方法 #2(Unix/Linux使いだけど、MacOS Xは初心者って方向けの方法)

前回は、isoイメージをshell commandで焼く方法だったけど、ついでなのでdisk imageを焼く方法をdisk imageの作成、disk imageへのファイルコピー、最後にCDを焼くという流れでも書いておきますね。 :)

コマンドの詳細はhelpをどうぞ。沢山オプションあるけど。(^^;;;

G5Server:/tmp discus$ hdiutil create -help

hdiutil create: create a disk image image
Usage: hdiutil create <sizespec> <imagepath>
Size specifiers:
-size < ?? | ??b | ??k | ??m | ??g | ??t | ??p | ??e >
(mkfile(8) plus terabytes, petabytes, & exabytes)
-sectors <count>
-megabytes <count>

Image options:
-layout <layout> [SPUD unless -fs -> NONE]
SPCD - single partition CD/DVD
SPUD - 単一パーティション
UNIVERSAL CD - CD/DVD
NONE - パーティションマップなし
UNIVERSAL HD - ハードディスク
-partitionType <partitionType> [Apple_HFS or per -fs]
-align <sector alignment> [4 aka 2K]
-ov

Filesystem options:
-fs <filesystem>
Case-sensitive HFS+ - Mac OS Extended (Case-sensitive)
Journaled HFS+ - Mac OS Extended (Journaled)
Case-sensitive Journaled HFS+ - Mac OS Extended (Case-sensitive, Journaled)
HFS+ - Mac OS Extended
HFS - Mac OS Standard
MS-DOS FAT32 - MS-DOS File System (FAT32)
MS-DOS FAT16 - MS-DOS File System (FAT16)
MS-DOS - MS-DOS File System
MS-DOS FAT12 - MS-DOS File System (FAT12)
UFS - UNIX File System
-volname <volumename> ["untitled"]
-stretch < ?? | ?b | ??k | ??m | ??g | ??t | ??p | ??e > (HFS+)

New Blank Image options:
-type <image type> [UDIF]
UDIF - 読み込み/書き込みディスクイメージ
SPARSE - スパースディスクイメージ

Image from Folder options:
-srcfolder <source folder>
-(no)anyowners do (not) attempt to preserve owners
-(no)skipunreadable do (not) skip unreadable files/directories [no]
-format <image type> [UDZO]
DC42 - Disk Copy 4.2
RdWr - NDIF 読み込み/書き込み
Rdxx - NDIF 読み込み専用
ROCo - NDIF 圧縮
Rken - NDIF 圧縮(KenCode)
UDRO - 読み込み専用
UDCO - 圧縮(ADC)
UDZO - 圧縮
UDBZ - 圧縮(bzip2)
UFBI - 装置全体
IPOD - iPod イメージ
UDxx - UDIF スタブ
UDRW - 読み込み/書き込み
UDTO - DVD/CD マスター
UDSP - スパース
UDIF - 読み込み/書き込みディスクイメージ
SPARSE - スパースディスクイメージ

Image from Device options:
-srcdevice <source dev node, e.g. disk1, disk2s1>
-format <image type> [UDZO]
DC42 - Disk Copy 4.2
RdWr - NDIF 読み込み/書き込み
Rdxx - NDIF 読み込み専用
ROCo - NDIF 圧縮
Rken - NDIF 圧縮(KenCode)
UDRO - 読み込み専用
UDCO - 圧縮(ADC)
UDZO - 圧縮
UDBZ - 圧縮(bzip2)
UFBI - 装置全体
IPOD - iPod イメージ
UDxx - UDIF スタブ
UDRW - 読み込み/書き込み
UDTO - DVD/CD マスター
UDSP - スパース
-segmentSize < ?? | ??b | ??k | ??m | ??g | ??t | ??p | ??e >
(blocks, bytes, kilobytes, megabytes, gigabytes, terabytes, petabytes, exabytes)

Attach options:
-attach attach image after creation

Common options:
-encryption <crypto method>
-stdinpass
-certificate <path-to-cert-file>
-imagekey <key>=<value>
-tgtimagekey <key>=<value>
-plist return results in plist format
-puppetstrings
-verbose
-debug
-quiet
G5Server:/tmp discus$

disk imageの作成例)

CD用に500MBのdisk imageを1パーティションかつ、HFS+で、discus_cd_imgというボリューム名作成します。ファイル名は、discus.dmgというファイル名にしておきます。
disk imageが作成されたらマウントさせるように -attachオプションも付けて!

G5Server:/tmp discus$ hdiutil create -size 500m -layout SPCD -fs HFS+ -volname discus_cd_img -attach discus
...........................................................................................................
/dev/disk3 Apple_partition_scheme
/dev/disk3s1 Apple_partition_map
/dev/disk3s2 Apple_Driver_ATAPI
/dev/disk3s3 Apple_HFS /Volumes/discus_cd_img
created: /private/tmp/discus.dmg
G5Server:/tmp discus$

作成したdisk imageへファイルをコピーして、マウントしていたdisk imageをアンマウント。

G5Server:/tmp discus$
G5Server:/tmp discus$ cp -pr /Users/discus/Pictures/DesktopPics/* /Volumes/discus_cd_img
G5Server:/tmp discus$
G5Server:/tmp discus$ hdiutil detach -help
hdiutil detach: detach disk image from system
Usage: hdiutil detach <devname>

Note: you can specify a mount point (e.g. /Volumes/MyDisk)
instead of a dev node (e.g. /dev/disk1)

Options:
-force forcibly detach

Common options:
-verbose
-debug
-quiet
G5Server:/tmp discus$
G5Server:/tmp discus$
G5Server:/tmp discus$ hdiutil detach /Volumes/discus_cd_img
"disk3" unmounted.
"disk3" ejected.
G5Server:/tmp discus$


焼き方は、isoイメージの場合と同じ。

注)

hdiutil: burn: “ディスクイメージファイル名”not recognized - リソースが一時的に使用できません。
hdiutil: burn failed - リソースが一時的に使用できません。

というエラーになった場合は、burn前に、ディスクイメージをdetachしてからburnすればOKですよ〜ん。MacOS X 10.4ではattachしたままでも焼けたけど、MacOS 10.5以降では前述のエラーを返すのでご注意を!
G5Server:/tmp discus$
G5Server:/tmp discus$ hdiutil burn discus.dmg
Please insert a disc:
ディスクに書き込むデータを準備中
セッションを開いています
トラックを開いています
トラックを書き込み中
...........................................................................................................
トラックを閉じています
............................................................................................................
セッションを閉じています
ディスクの作成を終了中
ディスク作成の検証中...
検証
.............................................................................................................
ディスクの作成は問題なく完了しました
.............................................................................................................
hdiutil: burn: completed
G5Server:/tmp discus$




MacOSXでCDやDVDを焼く方法(初心者でも分かり易い方法)
MacOSXでCDやDVDを焼く方法(Unix/Linux使いだけど、MacOS Xは初心者って方向けの方法)

| | | コメント (0) | トラックバック (0)

2010年10月10日 (日)

MacOSXでCDやDVDを焼く方法(Unix/Linux使いだけど、MacOS Xは初心者って方向けの方法)

最近、Macユーザが多くなってきた影響か、MacOSXでCDやDVDを焼く方法(初心者でも分かり易い方法)ってエントリがよくググられているので、PC初心者向きではないけど、Linux使いな方でMacは初心者って方向け、terminalからcommandでisoイメージのCDやDVDを焼く方法。

hdiutilというコマンドで焼く事ができます!
オプションはhelp参照のこと。(尚、以下のログはMacOS X 10.4なのですが、10.6でも同じです。暗号化に指定できる暗号化方法は増えてたかな。その程度の差だったはず。)

G5Server:/tmp discus$
G5Server:/tmp discus$ hdiutil burn -help

hdiutil burn: burn an image to optical media
Usage: hdiutil burn <image>
Options:
-speed <speed e.g. 1, 2, 4, 8, ... max>
-device <OpenFirmware path>
-sizequery just calculate size of disc required
-testburn don't turn on laser

Toggles:
-noeject don't eject disc after burning
-noverifyburn don't verify disc contents after burn
-noaddpmap don't add partition map
-noskipfinalfree don't skip burning final free partition
-optimizeimage optimize filesystem for burning
-forceclose close disc after burning
-nounderrun disable buffer underrun protection
-[no]synth synthesize new filesystem from volume

Common options:
-encryption <crypto method>
-stdinpass
-srcimagekey <key>=<value> (-imagekey is a synonym)
-shadow <shadowfile>
-insecurehttp
-cacert <file|dir>
-puppetstrings
-verbose
-debug
-quiet

Related actions:
-erase erase disc (quickly)
-fullerase completely erase disc
-list list all burning devices, for -device
G5Server:/tmp discus$

早速、簡単な例を1つ。CentOS5.5のLiveCDのisoイメージをMacOS X上にダウンロード後、isoイメージCDを焼いちゃいます。
MacOSXの場合、Linuxと違って、wgetじゃなくてcurlなんですよ、プログラミング言語のCurlとと勘違いしちゃう人もたまにいますけどw

※まず、curlでCentOS5.5 LiveCD isoイメージのダウンロードから!

G5Server:/tmp discus$ curl -O http://ftp.osuosl.org/pub/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-LiveCD.iso

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 694M 100 694M 0 0 384k 0 0:30:47 0:30:47 --:--:-- 395k

G5Server:/tmp discus$
G5Server:/tmp discus$ ll CentOS-5.5-x86_64-LiveCD.iso
-rw-r--r-- 1 discus wheel 728184832 Oct 10 10:28 CentOS-5.5-x86_64-LiveCD.iso

G5Server:/tmp discus$

※hdiutilコマンドでburnしちゃいます。簡単。コマンドを実行するとCD/DVDトレイにDISCを挿入するように要求されるので、指示通りにDISCを挿入すれば後は、勝ってにやいてくれて、焼き終わったらEjectしてくれます。

G5Server:/tmp discus$ hdiutil burn CentOS-5.5-x86_64-LiveCD.iso
Please insert a disc:
ディスクに書き込むデータを準備中
セッションを開いています
トラックを開いています
トラックを書き込み中
............................................................................................................
トラックを閉じています
............................................................................................................
セッションを閉じています
............................................................................................................
ディスクの作成を終了中
ディスク作成の検証中...
検証
.............................................................................................................
ディスクの作成は問題なく完了しました
.............................................................................................................
hdiutil: burn: completed
G5Server:/tmp discus$



MacOSXでCDやDVDを焼く方法(初心者でも分かり易い方法)
MacOSXでCDやDVDを焼く方法 #2(Unix/Linux使いだけど、MacOS Xは初心者って方向けの方法)

| | | コメント (0) | トラックバック (0)

2010年9月30日 (木)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #8

前回の続きです。pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2も今回で一旦終了。

今回は、最後に残った、Oracle11g EE R2 11.2.0.1.0 for Linux x86-64で再確認。64bit版のOracle11g R21と同じ結果になるに違いねぇ。とまた、決めつけてるw

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 100M
SQL>
SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 104857600 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 100
aggregate PGA auto target 58.6582031
global memory bound 20

SQL>

pga_aggregate_targetを10MB/50MB/1GB/5GB/10GB/100GB/4095GBと、いつものように増加させながらv$pgastatビューのGlobal memory boundでpgaサイズを確認してみます!

SQL> alter system set pga_aggregate_target=10m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10485760 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SQL> alter system set pga_aggregate_target=50m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 52428800 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 50
aggregate PGA auto target 13.6582031
global memory bound 10

SQL> alter system set pga_aggregate_target=1g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 214732800 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1073741824 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 890.314453
global memory bound 102.392578

SQL> alter system set pga_aggregate_target=5g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073725440 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 5368709120 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 5120
aggregate PGA auto target 4576.67578
global memory bound 511.992188

SQL> alter system set pga_aggregate_target=10g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147471360 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10737418240 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10240
aggregate PGA auto target 9184.63184
global memory bound 1023.99414

SQL> alter system set pga_aggregate_target=100g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147483648 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 107374182400 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 102400
aggregate PGA auto target 92126.127
global memory bound 1024

SQL> alter system set pga_aggregate_target=4095g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147483648 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 4396972769280 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773909.9
global memory bound 1024

SQL>


結果は、予想通り、Oracle11g EE R1 11.1.0.7.0 for Linux x86-64と全く同じでした〜

やっと、もやもやしてたOracle10g R2以降のpga回りの動きが掴めたので、ゆっくーり、寝れそうw (ほんとうはパラレル版もやりたいけど〜それはまた。)


前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #7

| | | コメント (0) | トラックバック (0)

2010年9月29日 (水)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #7

前回の続きです。

今回は、Oracle11g EE R2 11.2.0.1.0 for Linux x86で再確認。32bit版です。32bit版のOracle11g R1と同じ結果になるに違いねぇ。(決めつけてるw)


SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 100M
SQL>
SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 104857600 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 100
aggregate PGA auto target 62.5078125
global memory bound 20

pga_aggregate_targetを10MB/50MB/1GB/5GB/10GB/100GB/4095GBと、いつものように増加させながらv$pgastatビューのGlobal memory boundでpgaサイズを確認してみます!

SQL> alter system set pga_aggregate_target=10m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10485760 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SQL> alter system set pga_aggregate_target=50m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 52428800 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 50
aggregate PGA auto target 16.59375
global memory bound 10

SQL> alter system set pga_aggregate_target=1g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 214732800 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1073741824 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 893.197266
global memory bound 102.392578

SQL> alter system set pga_aggregate_target=5g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073725440 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 5368709120 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 5120
aggregate PGA auto target 4580.46387
global memory bound 511.992188

SQL> alter system set pga_aggregate_target=10g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073741824 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10737418240 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10240
aggregate PGA auto target 9188.41992
global memory bound 512

SQL> alter system set pga_aggregate_target=100g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073741824 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 107374182400 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 102400
aggregate PGA auto target 92130.6797
global memory bound 512

SQL> alter system set pga_aggregate_target=4095g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073741824 TRUE
_pgactx_cap_stacks FALSE TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 4396972769280 FALSE

9行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773915.44
global memory bound 512

SQL>


結果は、予想通り、Oracle11g EE R1 11.1.0.7.0 for Linux x86と全く同じでした〜


次回、Oracle11g R2 64bit版へつづく。



前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #6

| | | コメント (0) | トラックバック (0)

2010年9月28日 (火)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #6

前回の続きです。

今回は、Oracle11g EE R1 11.1.0.7.0 for Linux x86-64で再確認してみます。前回は、32bit版でしたが今回は同バージョンの64bit版です。何か違いがあるでしょうか?(多分、Oracle10g R2 MacOS X x86-64と同じなんじゃないかと予想してます。)

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

SQL> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 100M
SQL>
SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 104857600 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 100
aggregate PGA auto target 57.7529297
global memory bound 20

pga_aggregate_targetを10MB/50MB/1GB/5GB/10GB/100GB/4095GBと、いつものように増加させながらv$pgastatビューのGlobal memory boundでpgaサイズを確認してみます!

SQL> alter system set pga_aggregate_target=10m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10485760 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SQL> alter system set pga_aggregate_target=50m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 52428800 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 50
aggregate PGA auto target 12.7177734
global memory bound 10

SQL> alter system set pga_aggregate_target=1g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 214732800 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1073741824 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 889.3125
global memory bound 102.392578

SQL> alter system set pga_aggregate_target=5g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073725440 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 5368709120 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 5120
aggregate PGA auto target 4575.68262
global memory bound 511.992188

SQL> alter system set pga_aggregate_target=10g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147471360 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10737418240 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10240
aggregate PGA auto target 9183.62988
global memory bound 1023.99414

SQL> alter system set pga_aggregate_target=100g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147483648 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 107374182400 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 102400
aggregate PGA auto target 92126.0039
global memory bound 1024

SQL> alter system set pga_aggregate_target=4095g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147483648 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 4396972769280 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773910.37
global memory bound 1024

SQL>

結果は、予想通り、Oracle10g EE R2 10.2.0.4.0 for MacOS X x86-64と全く同じ。:)


次回、Oracle11g R2 32bit版へつづく。



前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #5

| | | コメント (0) | トラックバック (0)

2010年9月27日 (月)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #5

前回の続きです。

今回は、Oracle11g EE R1 11.1.0.7.0 for Linux x86で再確認してみます。前回は、64bitのOracle10g R2でしたが今回は32bitのOracle11g R1です。さて何か違いがあるでしょうか?

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

SQL> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 100M
SQL>
SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 104857600 FALSE

7行が選択されました。

pga_aggregate_targetを10MB/50MB/1GB/5GB/10GB/100GB/4095GBと、いつものように増加させながらv$pgastatビューのGlobal memory boundでpgaサイズを確認してみます!

SQL> alter system set pga_aggregate_target=10m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10485760 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SQL> alter system set pga_aggregate_target=50m;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 52428800 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 50
aggregate PGA auto target 10.7929688
global memory bound 10

SQL> alter system set pga_aggregate_target=1g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 214732800 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1073741824 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 895.368164
global memory bound 102.392578

SQL> alter system set pga_aggregate_target=5g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073725440 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 5368709120 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 5120
aggregate PGA auto target 4581.67676
global memory bound 511.992188

SQL> alter system set pga_aggregate_target=10g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073741824 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10737418240 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10240
aggregate PGA auto target 9190.125
global memory bound 512

SQL> alter system set pga_aggregate_target=100G;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073741824 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 107374182400 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 102400
aggregate PGA auto target 92132.8242
global memory bound 512

SQL> alter system set pga_aggregate_target=4095g;

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

SQL> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
__pga_aggregate_target 134217728 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073741824 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 4396972769280 FALSE

7行が選択されました。

SQL> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773917.11
global memory bound 512

SQL>


お〜っ!。 Oracle10g R2のように_pga_max_sizeが自動調整されて増加しているのがわかります。ただ、Oracle10g R2 (64bit)と割当ルールはほぼ同じなようなのですが、1箇所だけ違うようですね。
それは 自動調整される _pga_max_sizeの上限値が、512MBであること。Oracle10g R2 (64bit)では、1GBまで増加したはず!。

このエントリに載せていない確認内容も含めてまとめると…


  1. Oracle11g R1(32bit)で_pga_max_sizeの値が、1000MBを超えると動的に変化し始める。
    - Oracle10g R2 (64bit)と同じ。

  2. pga_aggregate_targetが1GB近くまでだと、pga_aggregate_targetの20%。
    - Oracle10g R2 (64bit)と同じ。

  3. pga_aggregate_targetが1GB以上になると、_pga_max_sizeが、pga_aggregate_targetの19.999%程度の値に自動設定され、さらにその値の50%。結果的として、pga_aggregate_target値の10%をほんの少し下回る値が設定される。pga_aggregate_targetが5GBである場合、512MBをほんの少し下回るのサイズがpgaとして割り当てられる。

  4. pga_aggretate_targetが5GBを超えた場合、_pga_max_sizeが1GBで頭打ちとなり、結果的として512MBがPGAとして割り当てられる。つまり自動PGA管理における最大PGAサイズは512MBということになる。(32bit版ではね)


前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #4

| | | コメント (0) | トラックバック (0)

2010年9月26日 (日)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #4

Oracle10g R2 EE 10.2.0.4.0 for MacOS X x86-64で再確認の続き。

pga_aggregate_targetがどの程度になると、_pga_max_sizeが200MBをこえるんでしょうねぇ。調べてみましょう。わくわくです。

SYS> alter system set pga_aggregate_target=150m;

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

SYS>
SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 157286400 FALSE

SYS> alter system set pga_aggregate_target=200m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 209715200 FALSE

SYS> alter system set pga_aggregate_target=500m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 524288000 FALSE

SYS> alter system set pga_aggregate_target=1023m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 214528000 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1072693248 FALSE

SYS> alter system set pga_aggregate_target=1010m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 211804160 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1059061760 FALSE

SYS> alter system set pga_aggregate_target=1000m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1048576000 FALSE

SYS> alter system set pga_aggregate_target=1001m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209920000 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1049624576 FALSE

SYS>

ということで、pga_aggreate_target=1000MBまでは、元々の値である200MBを維持しているようです。
1001MB以上で、_pga_max_sizeの値が動的に変化し始め、実際の値は、pga_aggregate_targetの19.999%程度になるようです。
丸めてしまえば、pga_aggregate_targetの20%なので、pga_aggregate_targetが1001MB以上の場合、その値の20%が、_pga_max_sizeに設定されるとしちゃっても特に問題ないかもしれませんけどね。

前回の結果も含めてまとめると、

  1. Oracle10g R2になると、10g R1までとは異なり_pga_max_sizeの値が、1000MBを超えると動的に変化し始める。
  2. pga_aggregate_targetが1GB近くまでだと、pga_aggregate_targetの20%。
  3. pga_aggregate_targetが1GB以上になると、_pga_max_sizeが、pga_aggregate_targetの19.999%程度の値に自動設定され、さらにその値の50%。結果的として、pga_aggregate_target値の10%をほんの少し下回る値が設定される。pga_aggregate_targetが10GBである場合、1GBをほんの少し下回るのサイズがpgaとして割り当てられる。
  4. pga_aggretate_targetが10GBを超えた場合、_pga_max_sizeが2GBで頭打ちとなり、結果的として1GBがPGAとして割り当てられる。つまり自動PGA管理における最大PGAサイズは1GBということになる。(64bit版ではね)

意図せず、_pga_max_sizeが固定化されてしまっていた以前のテストとは大きく異なる結果となってしまったが、_pga_max_sizeが動的に変化し最大2GBまで増えるってところを除けば仕組みは同じだよね。と :)

次回は、Oracle11g R1 EE 11.1.0.6.0 (x86) 32bit版で同様に再確認。次回へつづく。


前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #3

| | | コメント (0) | トラックバック (0)

2010年9月25日 (土)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #3

前回でOracle10g R1の再確認は終わり、今回はOracle10g R2 EE 10.2.0.4.0 for MacOS X x86_64で再確認。


pga_aggregate_targetパラメータを10MB/50MB/1GB/5GB/10GB/100GB/4095GBと変化させた場合、pgaに使用されるサイズがどのように変化するかv$pgastatビューのglobal memory boundを見て確認。


_pga_max_sizeパラメータがデフォルト値となっているか確認。問題なさそうですね :)

SYS> 
SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 100M
SYS>
SYS> @pgastat.sql

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 100
aggregate PGA auto target 73.6699219
global memory bound 20

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 104857600 FALSE

では、早速、確認してみましょう!


pga_aggregate_targetをどんどん増加させ、あるサイズ以上になると、_pga_max_sizeパラメータが動的に増加し始めます。
これをキッカケにして、global memory boundも増加していき、最終的には、1024MBつまり1GBで頭打ちになります。まあ、ないとはおもいますけど、1セッションで1GBを超えるPGAが必要な場合は、_pga_max_sizeをセットしちゃうか、自動PGA管理をOFFにするんでしょうね。多分後者の方がいいように思いますね。やるなら。(^^:::

SYS> alter system set pga_aggregate_target=10m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10485760 FALSE

SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SYS> alter system set pga_aggregate_target=50m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 52428800 FALSE

SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 50
aggregate PGA auto target 28.6611328
global memory bound 10

SYS> alter system set pga_aggregate_target=1G;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 214732800 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1073741824 FALSE

SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 905.255859
global memory bound 102.392578

SYS> alter system set pga_aggregate_target=5G;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 1073725440 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 5368709120 FALSE

SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 5120
aggregate PGA auto target 4591.6084
global memory bound 511.992188

SYS> alter system set pga_aggregate_target=10g;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147471360 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10737418240 FALSE

SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10240
aggregate PGA auto target 9199.56445
global memory bound 1023.99414

SYS> alter system set pga_aggregate_target=100g;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147483648 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 107374182400 FALSE

SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 102400
aggregate PGA auto target 92142.4834
global memory bound 1024

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 2147483648 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 4396972769280 FALSE

SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773926.51
global memory bound 1024


ということで、Oracle10g R2 EE 10.2.0.4.0 for MacOS X x86_64での再確認パート1は終了。Oracle10g R1の頃と違い、PGAサイズって自動的に1GBまで多きくなるんですね。

次回は、_pga_max_sizeが元々の値である200MBから値が変化し始めるpga_aggregate_targetパラメータのサイズっていくつ? ってところをチェックしておこうと思います。


前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #2

| | | コメント (0) | トラックバック (0)

2010年9月24日 (金)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #2

前回からのつづきです。Oracle10g R1 10.1.0.3.0 (32bit)で _pga_max_sizeパラメータ値がデフォルトの場合、pga_aggregate_targetパラメータ値を10MB/50MB/1GB/5GB/10GB/4095GBと変化させ、pgaに使用されるサイズがどのように変化するか、v$pgastatビューのglobal memory boundを見て確認していく。

結果は見ての通り。Oracle10g R1では、_pga_max_sizeパラメータはpga_aggregate_targetには影響されず、常に200MBで固定されている。従ってOracle10g R1では、以前のテスト結果の通り
pga_aggregate_targetの5%又は、_pga_max_size(200MB)の50%でいづれかの小さいサイズが利用されるというのは正しいようだ。

SYS> alter system set pga_aggregate_target=10m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10485760 FALSE

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound .5

SYS> alter system set pga_aggregate_target=50m;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 52428800 FALSE

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 50
aggregate PGA auto target 31.7548828
global memory bound 2.5


SYS> alter system set pga_aggregate_target=1g;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 1073741824 FALSE

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 908.358398
global memory bound 51.1992188

SYS> alter system set pga_aggregate_target=5g;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 5368709120 FALSE

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 5120
aggregate PGA auto target 4594.71973
global memory bound 100

SYS> alter system set pga_aggregate_target=10g;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 10737418240 FALSE

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 10240
aggregate PGA auto target 9202.67578
global memory bound 100

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 4396972769280 FALSE

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773929.69
global memory bound 100

SYS>


Oracle10g R2で再確認へつづく。



前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

| | | コメント (0) | トラックバック (0)

2010年9月23日 (木)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

前回のネタ振りから随分間があいてしまいました。m(_ _)m

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? 」シリーズで_pga_max_sizeが固定値の様に見えてしまっているのですが、そのようになってしまった、"大きなミス"ってどこかわかりますか?

ってところ、わかりますかね。

実は、行く先々で pga_aggregate_targetとか _pga_max_sizeの値を覗いてみてて、あれ、自分のMacやPCで確かめた値と違う???何故ってことが数回あって、あ、そういことかと気付いたわけです。

答えから先に言うと、

Oracle10g R1までは確かに _pga_max_sizeは200MBで固定値だった。ところが、Oracle10g R2以降は、Oracleが内部で動的に変更する隠しパラメータになったということ。

そして、_pga_max_sizeをalter system文で変更してしまうと、Oracle10g R2以降では、その値は動的に変更されず、ユーザが設定した値で固定されてしまう。


ということ。


この影響で、私が実施したテストケースでは全て_pga_max_sizeは200MBのままで固定値のように見えていたということ。。

orz... まあ、隠しパラメータですから、どんな仕様変更があっても文句はいいません。>< はい。


では、早速、alter system文で値を設定してしまった _pga_max_sizeパラメータを元の状態に戻しましょう!

手順としては、Oracleインスタンス起動、spfileからpfileを作り、pfileから_pga_max_sizeの部分を削除、インスタンス停止、pfileでOracleインスタンス起動、spfile作って再起動って感じです。

とりあえず、Oracle10g R1で。

SYS> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE 10.1.0.3.0 Production
TNS for MacOS X Server: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 100M

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 100
aggregate PGA auto target 76.1923828
global memory bound 5

SYS>
SYS> create pfile from spfile;

ファイルが作成されました。

SYS> !cat $ORACLE_HOME/dbs/initxtiger.ora

・・・中略・・・

xtiger.__large_pool_size=4194304
xtiger.__shared_pool_size=104857600
*._pga_max_size=209715200
*.background_dump_dest='/Volumes/Discus/4oracle/oracle/u01/app/oracle/admin/xtiger/bdump'
*.compatible='10.1.0.2.0'

・・・中略・・・

SYS> edit $ORACLE_HOME/dbs/initxtiger.ora



*._pga_max_sizeの行を削除!
SYS> !cat $ORACLE_HOME/dbs/initxtiger.ora

・・・中略・・・

xtiger.__large_pool_size=4194304
xtiger.__shared_pool_size=104857600
*.background_dump_dest='/Volumes/Discus/4oracle/oracle/u01/app/oracle/admin/xtiger/bdump'
*.compatible='10.1.0.2.0'

・・・中略・・・

SYS> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SYS>
SYS> startup pfile=$ORACLE_HOME/dbs/initxtiger.ora
ORACLEインスタンスが起動しました。

Total System Global Area 293601280 bytes
Fixed Size 778888 bytes
Variable Size 120331640 bytes
Database Buffers 171966464 bytes
Redo Buffers 524288 bytes
データベースがマウントされました。
データベースがオープンされました。

SYS> create spfile from pfile;

ファイルが作成されました。

SYS> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

SYS> startup
ORACLEインスタンスが起動しました。

Total System Global Area 293601280 bytes
Fixed Size 778888 bytes
Variable Size 120331640 bytes
Database Buffers 171966464 bytes
Redo Buffers 524288 bytes
データベースがマウントされました。
データベースがオープンされました。

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
pga_aggregate_target big integer 100M

SYS> @pgastat

NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 100
aggregate PGA auto target 76.3242188
global memory bound 5

SYS> @show_hidden_pga_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 104857600 FALSE

SYS>


戻った〜。 show parameter pgaで 隠しパラメータである_pga_max_sizeパラメータが表示されているということは、その値がデフォルト値と同じ値であっても、そのパラメータの値は、ユーザがセットした値ということ。show parameterで _pga_max_sizeが表示されなくなったらOK。

ちなみに、 show_hidden_pga_param.sqlは以下のようなクエリ。

select
a.ksppinm
,b.ksppstvl
,b.ksppstdf
from
x$ksppi a join x$ksppcv b
on a.indx = b.indx
where
a.ksppinm like '%pga%'
order by
a.ksppinm
/

次回へつづく。


前回までのあらすじ・・・
Mac De Oracle なんですが、Windows(32bit)でのOracleな話
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
_pga_max_sizeってOracle11gではどうなったっけ? という確認。
_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2

| | | コメント (0) | トラックバック (0)

2010年8月 1日 (日)

VM環境が整うまでのつなぎ

LinuxとWindowsをインストールしていた環境を全面的にVM環境に移行して64bitマシン1台にWindows(32bit)とLinux(64bit/32bit)環境を6台分を集約しちゃうまでのつなぎしとしてPowerMac G5 dual 2.7GhzのVirtualPC上にCentOS5.5(x86)環境を構築。Windows環境は無いけどいまはWindows触ってないから影響ゼロってことで。VirtualPCはもう使う事はないだろうけど、CentOS5.5をインストールする場合はテキストインストールして、xorg.confのDefaultDepthを書き換える - http://www.nbrains.net/php/pukiwiki/index.php?Microsoft%20VirtualPC%202004を参考にさせてもらった。ありがとう。

Img_0100

| | | コメント (0) | トラックバック (0)

2010年7月21日 (水)

Dashboard de Aquarium v1.5 - 39位↑ :)



なんと〜ここまでがんばるとは、Top50ランク外予想だったのに、うれしい誤算だ :)

39位



| | | コメント (0) | トラックバック (0)

2010年7月14日 (水)

Dashboard de Aquarium v1.5 - 40位↑↑↑ 



うひょ〜、10ランクジャンプアップ なDashboard de Aquarium v1.5 ;)

21


| | | コメント (0) | トラックバック (0)

2010年7月12日 (月)

Dashboard de Aquarium v1.5 - 50位↓ ほんとギリギリ



首の皮一枚でTop50ぎりな、Dashboard de Aquarium v1.5 (^^;;;

20



| | | コメント (0) | トラックバック (0)

2010年7月 9日 (金)

Dashboard de Aquarium v1.5 - 48位↑



お〜、ワンランクアップ。踏ん張りますね〜Dashboard de Aquarium v1.5

19



| | | コメント (0) | トラックバック (0)

Dashboard de Aquarium v1.5 - 49位↓ お〜っ



Dashboard de Aquarium v1.5 なんとかTop50に残ってます〜。:) 18


| | | コメント (0) | トラックバック (0)

2010年7月 5日 (月)

Dashboard de Aquarium v1.5 - かな〜りがんばってる46位

46位、かな〜りがんばってますね〜 :) Dashboard de Aquarium v1.5
13


| | | コメント (0) | トラックバック (0)

2010年7月 2日 (金)

Dashboard de Aquarium v1.5 - 43位↓ がんばれ〜

ワンランクダウンの43位だけど、がんばってるな〜。
9


| | | コメント (0) | トラックバック (0)

2010年6月30日 (水)

Dashboard de Aquarium v1.5 - 42位↓↓


今日は42位にランクダウンなう。がんばってるな〜

42位


| | | コメント (0) | トラックバック (0)

2010年6月25日 (金)

Dashboard de Aquarium v1.5 - ずいぶん久々だな33位↑

35位以内ってかなり久々だと思います。みなさんのおかげでございます。 Thank you. ;)
33位


| | | コメント (0) | トラックバック (0)

2010年6月24日 (木)

Dashboard de Aquarium v1.5 - がんばってる38位↑↑

いや、突然38位にジャンプアップなDashboard de Aquarium v1.5


| | | コメント (0) | トラックバック (0)

Dashboard de Aquarium v1.5 - ほんとにがんばってた、50位↓

なんか50位ギリギリでがんばってますw Dashboard de Aquarium v1.5 :)

5

| | | コメント (0) | トラックバック (0)

2010年6月23日 (水)

Dashboard de Aquarium v1.5 - 昨日は49位↓ 

昨日は、ギリギリTop50入りで、49位。>< がんばれるか〜?
4


| | | コメント (0) | トラックバック (0)

2010年6月19日 (土)

Dashboard de Aquarium v1.5 - 47位です〜

Top50以内にはなんとかとどまってる感じのDashboard de Aquarium v1.5 (^^;;;

10

| | | コメント (0) | トラックバック (0)

2010年6月18日 (金)

Dashboard de Aquarium v1.5 - 44位に↓ 

もうちょいがんばってよ〜 Dashboard de Aquarium v1.5 (^^;;; ということで44位までダウン。

4

| | | コメント (0) | トラックバック (0)

2010年6月16日 (水)

Dashboard de Aquarium v1.5 - 38位〜

ちょっとだけランクアップ!で38位。

38位

| | | コメント (0) | トラックバック (0)

2010年6月11日 (金)

Dashboard de Aquarium v1.5 / 42位変わらず。

おお、今日も42位でがんばってまっす。 :)

3

| | | コメント (0) | トラックバック (0)

2010年6月 9日 (水)

Dashboard de Aquarium v1.5 - Top50入り

とりあえずなんとかTop50入りで42位ね。 :)

2

| | | コメント (0) | トラックバック (0)

2010年6月 3日 (木)

Dashboard de Aquarium v1.5 Apple(US)でも公開

更新依頼した翌営業日にはリリースされる仕事の早さ。(Apple Japanのほうは多分月一ぐらいなので2週間ぐらい先だと思われ)

17

| | | コメント (0) | トラックバック (0)

2010年6月 2日 (水)

Dashboard de Aquarium v1.5 released!

Dashboard de Aquarium v1.5をリリースしました。いくつかの問題点の修正と、アフリカン・ランプアイを追加しました。
(Dashboard de Aquarium v1.5 released.
What's new in this version : Fixed some bugs and added African Lampeye.)

Picture_2_2

Download Dashboard De Aquarium v1.5 Now!

Download! v1.5 dashboard_de_aquarium.zip (996KB)

Dashboard de Aquarium v1.6 released. (v1.6をリリースしました 2012/01/01)

日本語(Japanese):
"Mac OS X 10.4 Tiger以降が必要です。ダウンロードにSafariを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。Safari以外のブラウザを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、解凍したウィジェットを /ライブラリ/Widgets/ フォルダに配置してください。ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。"

English:
"Mac OS X 10.4 Tiger or later is required. If you’re using Safari, click the download link. When the widget download is complete, show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it. If you’re using a browser other than Safari, click the download link. When the widget download is complete, unarchive it and place it in /Library/Widgets/ in your home folder. show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it."


動作確認した機種とMacOSXのバージョンは以下の通り。
(H/W models and the version of MacOSX that I checked the operation as follows.)

System Requirements : MacOSX Tiger 10.4 or later -- Freeware.

PowerBook G4 1Ghz - MacOSX 10.5.8 (Leopard)
PowerMac G5 Dual 2.7Ghz - MacOSX 10.4.11 (Tiger)
MacBook Pro 2.2Ghz Core 2 Duo - MacOSX 10.6 (Snow Leopard)

Note: 国際化対応しています。言語環境が日本語であればメニューやボタンのテキストは日本語で表示されます。
Screen_shot_20100601_at_221756 Screen_shot_20100601_at_221810
Screen_shot_20100601_at_221821 Screen_shot_20100601_at_221832
Screen_shot_20100601_at_221840 Screen_shot_20100601_at_221915
Screen_shot_20100601_at_221936 Screen_shot_20100601_at_221946_2
Screen_shot_20100601_at_221750
Screen_shot_20100601_at_221741

| | | コメント (0) | トラックバック (0)

2010年6月 1日 (火)

IEって遅いんだよー。てことをあまり気にしてない方へ。のおまけ

昨日、「IEって遅いんだよー。ってことをあまり気にしない方へ」ってエントリを書いたんだけど、その遅さも影響しているだろうと思われるニュースもあるね。原文はこちら。

以下の部分がそう。(techcrunch japanより引用)

Google AppsはChromeでは快調だが市職員の多くが今はMicrosoftのInternet ExplorerまたはFirefoxを使用していることが挙げられる。

実は私も経験したことがある。信じられないようなホントの話なんだけど、Core2 Duo 3GhzぐらいのPCでChrome/Safariなら0.3秒ぐらいで実行できるjavascriptの処理が、同じPCのIE6/7だと9倍ぐらい遅いという経験をしたこともある。それぐらいインパクトのある話なんですよん。パフォーマンス命またはそこそこ命なサービスではね。
なので、クライアントPCのスペック(ブラウザは何を使ってるとか、ブラウザの縛りはあるかとかも)を事前に確認しないでそーゆーサービスを作ってしまうと、もーたーいへん。

| | | コメント (0) | トラックバック (0)

2010年5月31日 (月)

IEって遅いんだよー。ってことをあまり気にしてない方へ。

speed/validity selectors test for frameworks.っていう有名なサイトがあるんだけど、具体的にどのぐらいの差になんの? なんてあまり情報が載ってるところはないので自分で確認できる範囲で新旧CPUとブラウザで比較してみました。なにかの参考になるとは思います。jQueryでだけですけどね。


12


IE6/7のデータを載せてないのですが、jQuery1.2.6(Slicktestのオリジナルでテストされてるやつね)で、他のプラウザと処理結果の違うところがいくつか発生するので載せるかどうか考えてるところ。注釈付きで載せるかな〜。まあ、IE8ですらこの遅さだからIE6/7はもっと遅いんだけどね。 2010/5/31追記
8-Jun-2010:Safari5及びChrome5リリースされたのでデータ追記。また、Safari5はMacOS X 10.5以上でリリースされたためMacOS X 10.4では同時期のWebkitで計測したでたを追加
9-Jun-2010:MacOS X 10.6.3/Chrome5.0.375.70にアップデートされたので結果を追加。
9-Jun-2010:Intel MacOS X Safari5がインストール直後にSafari4より遅かったが、cacheクリア、resetで早くなったので追記


注)各ブラウザで同テストを10回実行して、最大値、最小値を除いた平均値を載せてあります。

CPU毎にいろいろなブラウザでSlickSpeed TestのjQueryのライブラリを1.3以降にして比較してみた。
IEは8.0でもダントツで遅いのがはっきり分かりますね。またOSの影響よりCPUのクロック数での違いが大きい事も分かりますよね。
1CPUのクロック数が早いほうが処理速度がいいって結果からも分かります。実際、Windowsだと、IEでテスト中にタスクマネージャを見ると1CPUが100%になるのが確認できますよー。(ネタが集まったらまた情報を載せる予定。)

CPU/OS Browser Version jQuery1.3.2 jQuery1.4.2
Intel Core2 Duo 2Ghz /
WindowsXP
4.0.5 36ms 43ms
3.6.3 61ms 80ms
10.52 50ms 50ms
8.0 277ms 375ms
IBM PowerPC G4 1Ghz /
MacOS X 10.5.8
4.0.5 102ms 148ms
5.0 81ms 99ms
3.6.3 139ms 131ms
10.52 127ms 124ms
Intel Core2 duo 2.2Ghz /
MacOS X 10.6.3
4.0.5 35ms 44ms
5.0
(6533.16)
Install直後
40ms 49ms
5.0
(6533.16)
clear cache and reset後
34ms 38ms
5.0beta 39ms 40ms
5.0.375.55 49ms 47ms
5.0.375.70 39ms 38ms
3.6.3 63ms 63ms
10.52 57ms 54ms
IBM PowerPC G5 2.7Ghz /
MacOS X 10.4.11
4.0.5 42ms 54ms
Webkit r60742(5-Jun) 38ms 43ms
3.6.3 52ms 48ms
10.52 45ms 46ms
AMD Athlon XP 2200+ /
Windows XP
4.0.5 96ms 114ms
5.0 85ms 110ms
4.1 64ms 60ms
5.0 67ms 66ms
3.6.3 95ms 95ms
10.52 65ms 63ms
8.0 255ms 238ms
AMD Athlon MP 2800+ /
Windows XP
4.0.5 73ms 89ms
5.0 68ms 84ms
4.1 49ms 46ms
5.0 47ms 45ms
3.6.3 73ms 72ms
10.52 56ms 53ms
8.0 240ms 255ms
Intel Pentium M 1Ghz /
CentOS 5.4
3.6.3 101ms 100ms
10.10 118ms 117ms

| | | コメント (0) | トラックバック (0)

2010年5月22日 (土)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その19回目、


そして、あっという間に、Oracle11g R2の自動メモリー管理を無効、自動PGAメモリー管理有効状態での確認も最終回!
前回、_pga_max_sizeの50%になってしまったpga_aggregate_targetを16GB/4095GBに設定した場合のテストを_pga_max_sizeを調整してpga_aggregate_targetの20%が利用される状態にして再び確認して終わりにしたいと思います。

SYS> alter system set "_pga_max_size"=6554m;

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

SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 6554M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14721.3281
global memory bound 3276.7998

SYS> alter system set "_pga_max_size"=1677313m;

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

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 1677313M
pga_aggregate_target big integer 4095G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773918.79
global memory bound 838656

SYS>


・・・中略・・・

SCOTT> @test4

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 30000 SORT (v2) 1171.63
0 order by code

SCOTT>

Oracle10g R2以降は32bitでも64bitでも、自動メモリー管理が無効で、自動PGAメモリー管理が有効ならば、かつNon parallelならば、LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5)とう条件で作業域を割り当てているのは確からしい。

次回は、ちょっと別の角度から。ということで次回へつづく。


前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18

| | | コメント (0) | トラックバック (0)

2010年5月21日 (金)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その18回目、


Oracle11g R2での検証の続き。まいどおなじみ、_pga_max_sizeを大きな値にして、pga_aggregate_targetの20%がglobal memory boundに設定されるようにして確認。

SYS> alter system set "_pga_max_size"=3840m;

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

SYS> alter system set pga_aggregate_target=256m;

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

SYS> alter system flush shared_pool;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 256M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 256
aggregate PGA auto target 206.173828
global memory bound 51.1992188

SYS>
SYS> alter system set pga_aggregate_target=512m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 512M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 512
aggregate PGA auto target 436.869141
global memory bound 102.399414

SYS> alter system set pga_aggregate_target=768m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 768M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 768
aggregate PGA auto target 667.212891
global memory bound 153.599609

SYS>
SYS> alter system set pga_aggregate_target=1g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 1G
SYS> @pgastat


NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 897.591797
global memory bound 204.799805

SYS> alter system set pga_aggregate_target=2g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 2G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1820.0127
global memory bound 409.599609

SYS>
SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 4G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3662.25293
global memory bound 819.199219

SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 8G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7349.43164
global memory bound 1638.39941

やはりここで変化あり!

SYS> 
SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14722.1543
global memory bound 1920

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 4095G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773917.1
global memory bound 1920

SYS>

Oracle11g R1と同じ結果になりましたね。LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5) ということね。Oracle11g R2でも。
次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17

| | | コメント (0) | トラックバック (0)

2010年5月20日 (木)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その17回目、


Oracle11g R2 自動メモリー管理は無効、自動PGAメモリー管理は有効な状態での検証スタート!

いつものように、_pga_max_sizeはデフォルトの200MBで、pga_aggregate_targetを10MBから4095MBまで増加させてglobal memory boundがどのように変化するか確認します!

SYS> alter system set pga_aggregate_target=10m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 10M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SYS> alter system set pga_aggregate_target=20m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 20M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 20
aggregate PGA auto target 4
global memory bound 4

SYS> alter system set pga_aggregate_target=40m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 40M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 40
aggregate PGA auto target 12.8583984
global memory bound 8

SYS> alter system set pga_aggregate_target=256m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 256M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 256
aggregate PGA auto target 207.263672
global memory bound 51.1992188

SYS> alter system set pga_aggregate_target=512m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 512M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 512
aggregate PGA auto target 436.851563
global memory bound 100

SYS>

お、変化ありました。Oracle11g R2でも自動PGAメモリー管理の動きは同じみたいね。

どんどんやっつけちゃいましょー

SYS> alter system set pga_aggregate_target=768m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 768M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 768
aggregate PGA auto target 667.283203
global memory bound 100

SYS> alter system set pga_aggregate_target=1g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 1G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 897.688477
global memory bound 100

SYS> alter system set pga_aggregate_target=2g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 2G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1819.87207
global memory bound 100

SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3662.25293
global memory bound 100

SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 8G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7349.43164
global memory bound 100

SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14721.3457
global memory bound 100

SYS> alter system set pga_aggregate_target=2095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 2095G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2145280
aggregate PGA auto target 1930719.63
global memory bound 100

SYS>


そして、念のため実際にソート! glolbal memory boundに設定されたサイズになってますね〜。

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT (v2) 100.02 409993216 409993216
0 order by code

SCOTT>


次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16

| | | コメント (0) | トラックバック (0)

2010年5月19日 (水)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その16回目、

今回からOracle11g R2 for Windows 32bit環境での検証です。なお、自動メモリー管理(AMM)はOFFで自動SGAメモリー管理(ASMM)、自動PGAメモリー管理(APMM)は有効になっています。
この状態でOracle11g R1までと動きに違いがないかみてみることにします。

SYS> select * from v$version;

BANNER
----------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SYS>

ダブルアンダースコアの隠しパラメータがが気味悪いw ですが、たぶん影響しないんじゃないかと。もともとOracle側で制御しているパラメータだし。

SYS> @show_param

KSPPINM KSPPSTVL KSPPSTDF
-------------------------------- -------------------------------- --------------------------------
_4031_sga_dump_interval 3600 TRUE
_4031_sga_max_dumps 10 TRUE
__pga_aggregate_target 79691776 TRUE
__sga_target 239075328 TRUE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_ldr_pga_lim 0 TRUE
_lock_sga_areas 0 TRUE
_memory_imm_mode_without_autosga TRUE TRUE
_memory_initial_sga_split_perc 60 TRUE
_memory_nocancel_defsgareq FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_pgactx_cap_stacks FALSE TRUE
_sga_clear_dump FALSE TRUE
_sga_early_trace 0 TRUE
_sga_locking none TRUE
_use_ism_for_pga TRUE TRUE
lock_sga FALSE TRUE
memory_max_target 0 TRUE
memory_target 0 TRUE
pga_aggregate_target 78643200 FALSE
pre_page_sga FALSE TRUE
sga_max_size 239075328 TRUE
sga_target 239075328 FALSE

25行が選択されました。

SYS>
SYS> show parameter workarea_size_policy

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
workarea_size_policy string AUTO
SYS>


次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15

| | | コメント (0) | トラックバック (0)

2010年5月18日 (火)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その15回目、

さて、Oracle11g R1での検証もいよいよ最終回。 
前回、_pga_max_sizeが3840MBで、pga_aggregate_targetを16GB/4095GBとしたところで、_pga_max_sizeの50%がglobal memory boundとして設定されていました。
じゃ、最後の2でもpga_aggregate_targetの20%をglobal memory boundとして利用するようにしちゃえ!

ということで、_pga_max_sizeを6554MB/1677313MB、pga_aggregate_targetを16GB/4096GBとしてギリギリでpga_aggregate_targetの20%が利用されるように設定してみました。
以下の通り、global memory boundは、pga_aggregate_targetの20%である、3276.8MB/838656MBになってます!

SYS> alter system set "_pga_max_size"=6554m;

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

SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 6554M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14720.7744
global memory bound 3276.7998

SYS>


SYS> alter system set "_pga_max_size"=1677313m;

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

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 1677313M
pga_aggregate_target big integer 4095G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773917.72
global memory bound 838656

SYS>

最後に、実メモリ768MBしか積んでないマシンなのに無理矢理、1GB越えのPGAを利用してもらっちゃいます。
当然ですが、swapしまくりなので、普通の時間でレスポンスなんて戻ってきませんから真似しないようにw swapを使ってDISKガリガリいってましたがOracle上ではちゃんとOPTIMALとなっておりますはい!。

SCOTT> @test4

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 30000 SORT (v2) 1171.63
0 order by code

SCOTT>


ということで、次回、Oracle11g R2 for Linux x86の自動メモリー管理(AMM)下でどうなるか確認と、思ったのですが、ちょうど Oracle11g R2 for Windows (32bit)がダウンロードできるようになっていたので、急遽、Oracle11g R2 for Windows(32bit)かつ、自動メモリー管理をオフにした状態ではどうなるか確認してみましょう。なを32bitのWindowsなのでSGA/PGA合わせて2GB超えないような範囲で遊びマッス!。

なんか久々に1ヶ月ものぐらいのネタに膨らまそうか考えてたりして・・・・。

次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14

| | | コメント (0) | トラックバック (0)

2010年5月17日 (月)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

_pag_max_sizeに大きな値を設定し、LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5)という条件で割り当てられていることを確認してみます!

SYS> alter system flush shared_pool;

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

SYS> alter system set "_pga_max_size"=3840m;

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

SYS> alter system set pga_aggregate_target=256m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 256M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 256
aggregate PGA auto target 205.734375
global memory bound 51.1992188

SYS> alter system set pga_aggregate_target=512m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 512M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 512
aggregate PGA auto target 435.700195
global memory bound 102.399414

SYS> alter system set pga_aggregate_target=768m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 768M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 768
aggregate PGA auto target 666.518555
global memory bound 153.599609

SYS> alter system set pga_aggregate_target=1g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 1G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 896.52832
global memory bound 204.799805

SYS> alter system set pga_aggregate_target=2g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 2G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1818.44824
global memory bound 409.599609

SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 4G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3735.43555
global memory bound 819.199219

SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 8G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7347.50684
global memory bound 1638.39941



まちがいなく、pga_aggregate_targetの20%がglobal memory boundに設定されてます!

さて、pga_aggregate_targetを16GB以上に設定すると、_pga_max_sizeの50%より、pga_aggregate_targetの20%の方が大きくなるため、_pga_max_sizeパラメータの50%のサイズがglobal memory boundに設定されるはず! ではやってみよう!

SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 15023.2441
global memory bound 1920

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 4095G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773917.55
global memory bound 1920

SYS>

予想通り、_pga_max_sizeの50%がglobal memory boundに設定されてますね。
Oracle11g R1での検証もいよいよ次回が最終回。ということで、次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13

| | | コメント (0) | トラックバック (0)

2010年5月16日 (日)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その13回目、

_pga_max_sizeはデフォルトのままで、pga_aggregate_targetを増加させていくと、Oracle10g R2と同様に、LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5)という条件で割り当てられてるようだ。ということでその確認のつづき。

pga_aggregate_targetが512MBになったところで、_pga_max_sizeの200MBの50%のサイズがglobal memory boundとして設定されるようになった。さらに増加させてその割合に変化がないか確認していく。

SYS> alter system set pga_aggregate_target=768m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 768M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 768
aggregate PGA auto target 666.720703
global memory bound 100

SYS> alter system set pga_aggregate_target=1g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 1G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 896.677734
global memory bound 100

SYS> alter system set pga_aggregate_target=2g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 2G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1818.26367
global memory bound 100

SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3661.89258
global memory bound 100

SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 8G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7348.25391
global memory bound 100

SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14720.5371
global memory bound 100

pga_aggregate_targetを16GBにしても、_pga_max_sizeの50%のサイズである100MBがglobal memory boundに設定されていますね。

最後に、pga_aggregate_targetを4095GBにしてみると〜

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4095G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773918.45
global memory bound 100

SYS>

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT (v2) 100.02 409993216 409993216
0 order by code

SCOTT>

やはり、global memory boundは、_pga_max_sizeの50%のままですね。_pga_max_sizeを大きなサイズにし、pga_aggregate_targetの20%が利用されるかを確認しますよ〜。ということで次回へつづく。


前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12

| | | コメント (0) | トラックバック (0)

2010年5月15日 (土)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その12回目、

さて、Oracle11g R1 for Linux x86を利用した検証を始めるよ〜 :)

これまでと同様に、まず、_pga_max_sizeはデフォルトの200MBのままで、pga_aggregate_targetを10MB/20MB/40MB/256MB/512MBと増加させてglobal memory boundがどう変化するか確認していく。

SYS> alter system set pga_aggregate_target=10m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 10M
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SYS> alter system set pga_aggregate_target=20m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 20M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 20
aggregate PGA auto target 4
global memory bound 4

SYS> alter system set pga_aggregate_target=40m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 40M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 40
aggregate PGA auto target 11.3720703
global memory bound 8

SYS>

ここまでのところ、 pga_aggregate_targetの20%がglobal memory boundとして設定されている。

次ぎいってみよー!

SYS> alter system set pga_aggregate_target=256m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 256M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 256
aggregate PGA auto target 205.479492
global memory bound 51.1992188

SYS> alter system set pga_aggregate_target=512m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 512M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 512
aggregate PGA auto target 436.31543
global memory bound 100

お、やはり、変化しました。 512MBの20%は、102.4MBですが、global memory boundに設定された値は、100MB。 _pga_max_sizeの50%ですね〜。
おそらく、Oracle10g R1と同じ割当条件なんでしょうね。

次回はpga_aggregate_targetパラメータをさらに増加させてみますよ。。つづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11

| | | コメント (0) | トラックバック (0)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その11回目、

さて、Oracle10g R2までは試したので、今回からはOracle11g R1で試します。利用したのはOracle11g R1 for Linux x86.

いつものように現状確認と、登録済みデータの確認から。自動メモリー管理が有効は無効にしてあります。自動SGA管理と自動PGA管理は有効になってますよー。
というか少なくとも自動PGA管理は有効にしておかないとこの検証自体が・・・・w

dSYS> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

SYS>
SYS> @show_param

KSPPINM KSPPSTVL KSPPSTDF
-------------------------------- ------------------------------ ------------------------------
_4031_sga_dump_interval 3600 TRUE
_4031_sga_max_dumps 10 TRUE
__pga_aggregate_target 104857600 FALSE
__sga_target 352321536 FALSE
_kdli_sio_pga FALSE TRUE
_kdli_sio_pga_top FALSE TRUE
_lock_sga_areas 0 TRUE
_memory_initial_sga_split_perc 60 TRUE
_memory_nocancel_defsgareq FALSE TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 FALSE
_sga_clear_dump FALSE TRUE
_sga_early_trace 0 TRUE
_sga_locking none TRUE
_use_ism_for_pga TRUE TRUE
lock_sga FALSE TRUE
memory_max_target 0 TRUE
memory_target 0 TRUE
pga_aggregate_target 104857600 FALSE
pre_page_sga FALSE TRUE
sga_max_size 352321536 TRUE
sga_target 352321536 FALSE

22行が選択されました。

SYS> show parameter workarea_size_policy

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO
SYS>

とりあえず、200000万件、1.6GBほどのデータを登録してあります。

SCOTT> select count(*) from code;

COUNT(*)
----------
200000

SCOTT> l
1 select
2 blocks*block_size/1024/1024 as "table_size(MB)"
3 from
4 user_tables ut join user_tablespaces uts
5 on ut.tablespace_name = uts.tablespace_name
6* and ut.table_name = 'CODE'
SCOTT> /

table_size(MB)
--------------
1600.625

SCOTT>

次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10

| | | コメント (0) | トラックバック (0)

2010年5月13日 (木)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その10回目、

前回までで、Oracle10g R2では、LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5)という条件でPGAの作業領域を割り当てているらしいというところまでは確認できた。
今回は、隠しパラメータ、 _pga_max_sizeパラメータを3840MBという大きな値に設定し、 pga_aggregate_targetの20%が利用されるか確認してみた。

_pga_max_sizeを3840MBと設定し、pga_aggregate_targetを256MB/512MB/768MB/1G/2G/4G/8G/16Gと増加させた場合、常に1920MB(_pga_max_size*0.5)より小さくなるのでpga_aggregate_target*0.2のサイズがglobal memory boundとして設定されるはず。

では、早速確認してみる。

SYS> alter system flush shared_pool;

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

SYS> alter system set "_pga_max_size"=3840m;

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

SYS> alter system set pga_aggregate_target=256m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 256M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 256
aggregate PGA auto target 213.75
global memory bound 51.1992188

SYS> alter system set pga_aggregate_target=512m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 512M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 512
aggregate PGA auto target 444.155273
global memory bound 102.399414

SYS> alter system set pga_aggregate_target=768m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 768M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 768
aggregate PGA auto target 685.213867
global memory bound 153.599609

SYS> alter system set pga_aggregate_target=1g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 1G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 919.334961
global memory bound 204.799805

SYS> alter system set pga_aggregate_target=2g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 2G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1826.8418
global memory bound 409.599609

SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 4G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3669.74121
global memory bound 819.199219

SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 8G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7472.14941
global memory bound 1638.39941

SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14729.168
global memory bound 1920

SYS>


実メモリ2GBしか積んでないので3.2GB近くのPGAサイズが割り当てられるか実際のテストはちょいとだけ無理をして1GBぐらいを目指してみた…

SYS> alter system flush shared_pool;

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

SYS> alter system set pga_aggregate_target=6g;

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

SYS>
SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 3840M
pga_aggregate_target big integer 6G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 6144
aggregate PGA auto target 5513.83594
global memory bound 1228.7998

SYS>

・・・中略・・・

SCOTT> @test4

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 30000 SORT (v2) 1171.63
0 order by code

1GB以上のPGAが利用されたところまでは確認できた〜〜。ということで、

Oracle10g R2において、1セッションでパラレルクエリでなければ、LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5)という条件でPGAを割り当てているのは確からしい。

今回で、Oracle10g R2 for MacOS X Server x86-64での検証はおわり、Oracle11g R1 for Linux x86で試してみようと思う。なお自動メモリー管理(AMM)は利用していない構成にしてある。ということで次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9

| | | コメント (0) | トラックバック (0)

2010年5月12日 (水)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その9回目、

_pga_max_sizeはデフォルトの200MBのままで、pga_aggregate_targetを256MB/512MB/768MB/1GB/2GB/4GB/8GB/16GB/4095GBと増加させてみる。

Oracle10g R2 for MacOS X x86_64版では、Oracle10g R1までと違い、pga_aggregate_target * 0.2を割り当てているということまでは見る事ができた。
以前のリリースのように _pga_max_size * 0.5と比べて小さい値を使うのだと仮定すれば、 LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5)となっているんでしょうね。きっと。

とすると… 256MB/512MB/768MB/1GB/2GB/4GB/8GB/16GB/4095GBとpga_aggregate_targetを増加させると、256MBの場合だけ _pga_max_size * 0.5 を下回る。pga_aggregate_targetが512MB以上、かつ_pga_max_sizeがデフォルトの200MBの場合、global memory boundは常に100MBになるはず。

じゃ、確かめてみよう!

SYS> alter system set pga_aggregate_target=256m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 256M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 256
aggregate PGA auto target 213.855469
global memory bound 51.1992188

SYS>

SYS> alter system set pga_aggregate_target=512m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 512M
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 512
aggregate PGA auto target 443.979492
global memory bound 100

やはり、ここで変化しましたね!

SYS> alter system set pga_aggregate_target=768m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 768M
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 768
aggregate PGA auto target 674.384766
global memory bound 100

SYS> alter system set pga_aggregate_target=1g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 1G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 905.053711
global memory bound 100

SYS> alter system set pga_aggregate_target=2g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 2G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1826.63965
global memory bound 100

SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3669.82031
global memory bound 100

SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 8G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7356.19043
global memory bound 100

SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 16G
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14728.9131
global memory bound 100

SYS>

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT (v2) 100.02 409993216 409993216
0 order by code

SCOTT>

・・・中略・・・

SYS> alter system flush shared_pool;

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

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4095G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773925.04
global memory bound 100

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT (v2) 100.02 409993216 409993216
0 order by code

SCOTT>

予想通り、 LEAST(pga_aggregate_target * 0.2, _pga_max_size * 0.5) となっている模様〜。まだまだつづきますよ〜 :)



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8

| | | コメント (0) | トラックバック (0)

2010年5月11日 (火)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その8回目、

Oracle10g R1の場合と同様に、_pga_max_sizeパラメータはデフォルト(200BMMB)のまま、pga_aggregate_targetを10MBスタートして増加させて確認していきますよ〜。

SYS> alter system set pga_aggregate_target=10m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 10M
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound 2

SYS>

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT (v2) 2.01 409993216 409993216
0 order by code

SCOTT>

あれ、Oracle10g R1までの頃と割り当てられてるサイズが違う! pga_aggregate_targetが10MBなのに0.5MBではなく、2MB。つまり20%が割り当てられてます。

SYS> alter system flush shared_pool;

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

SYS> alter system set pga_aggregate_target=20m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 20M
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 20
aggregate PGA auto target 4
global memory bound 4

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT (v2) 4.04 409993216 409993216
0 order by code

SCOTT>

・・・中略・・・

SYS> alter system flush shared_pool;

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

SYS> alter system set pga_aggregate_target=40m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 40M
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 40
aggregate PGA auto target 18.4570313
global memory bound 8

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT (v2) 8.04 409993216 409993216
0 order by code

SCOTT>

Oracle10g R1までの頃より、pgaの作業領域が大きく確保されるようになってるということもある程度見えましたが、まだばだ続きます。

注)パラレルクエリの場合はちょいと違いますからご注意を。余裕があったらやるかもしれないけど。:)


前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7

| | | コメント (0) | トラックバック (0)

2010年5月10日 (月)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その7回目、

今回からOracle10g R2での検証、環境は以下。

Oracle10g R2 for MacOS X Server (x86_64) / MacOS X 10.6.3 Core2 Duo 2.2Ghz RAM:2GB

手順はOracle10g R1の場合と同じだが、多少順番が前後したり設定するサイズは変更しながら行うかもしれないのであしからず。

SYS> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for MacOS X Server: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SYS>

Oracle10g R1 for MacOS X Serverの場合と同じテスト表とデータを用意してっ、と。

SCOTT> 
SCOTT> create table code (code varchar2(4000));

表が作成されました。

SCOTT>
SCOTT> begin for i in 1..100000 loop insert into code values(lpad('#',4000,'#')); end loop; commit; end;
2 /

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'CODE',degree=>2,estimate_percent=>100);

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> l
1 select
2 blocks*block_size/1024/1024 as "table_size(MB)"
3 from
4 user_tables ut join user_tablespaces uts
5 on ut.tablespace_name = uts.tablespace_name
6* and ut.table_name = 'CODE'
SCOTT> /

table_size(MB)
--------------
788.101563

SCOTT>


テスト開始まえの関連パラメータの値は以下のような状態になってます。

SYS> @show_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
_4031_sga_dump_interval 3600 TRUE
_4031_sga_max_dumps 10 TRUE
_lock_sga_areas 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 FALSE
_use_ism_for_pga TRUE TRUE
lock_sga FALSE TRUE
pga_aggregate_target 104857600 FALSE
pre_page_sga FALSE TRUE
sga_max_size 612368384 TRUE
sga_target 612368384 FALSE

11行が選択されました。

SYS> show parameter workarea_size

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO
SYS>


引っ張るメソッドはいつもと同じということで、Oracle10g R2編、次回へつづく。 :)


前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6

| | | コメント (0) | トラックバック (0)

2010年5月 9日 (日)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その6回目、

前回までで、Oracle10g R1 (32bit)がpga_aggregate_targetパラメータと_pga_max_sizeパラメータをどのように使ってpgaの作業領域を割り当てているか見えたのですが、念押しでもういっちょw.

_pga_max_size * 50% が使われるというところをデフォルトの200MB以外でも確認して、Oracle10g R1 (32bit)での検証はおわりにしたい。:)

_pga_max_sizeパラメータは隠しパラメータなのでOracle Supportの指示なしには変更しないパラメータ、遊ぶ場合は、趣味の環境等でやってね :)

_pga_max_sizeを400MB/800MBと変更し、pga_aggregate_targetも4GB/8GBと設定する。Oracleがきまぐれで割り当てていないのであれば、 LEAST(_pga_max_size*0.5, pga_aggregate_target*0.05)より、200MB/400MBがglobal memory boundとして設定されるはず。

SYS> alter system set "_pga_max_size" = 400m;

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

SYS> alter system set pga_aggregate_target = 4g;

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

SYS> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SYS> startup
ORACLEインスタンスが起動しました。

Total System Global Area 293601280 bytes
Fixed Size 778888 bytes
Variable Size 116137336 bytes
Database Buffers 176160768 bytes
Redo Buffers 524288 bytes
データベースがマウントされました。
データベースがオープンされました。
SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 400M
pga_aggregate_target big integer 4G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3673.17773
global memory bound 200

SYS>

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT 172.89 409993216 409993216
0 order by code

・・・中略・・・

SYS> alter system set "_pga_max_size" = 800m;

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

SYS> alter system set pga_aggregate_target = 8g;

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

SYS> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SYS> startup
ORACLEインスタンスが起動しました。

Total System Global Area 293601280 bytes
Fixed Size 778888 bytes
Variable Size 116137336 bytes
Database Buffers 176160768 bytes
Redo Buffers 524288 bytes
データベースがマウントされました。
データベースがオープンされました。
SYS>
SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 800M
pga_aggregate_target big integer 8G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7359.09961
global memory bound 400

SYS>

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT 370.66 409993216 409993216
0 order by code

ということで、Oracle10g R2 編へつづく。




前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5

| | | コメント (0) | トラックバック (0)

2010年5月 8日 (土)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その5回目、

Oracle10g R1 (32bit)で、pga_aggregate_targetを40MBから一気に上限に近い4095GBに増加させたところで、global memory boundへの割当割合が変化した。

今回は、pga_aggregate_targetを1GBから16GBそして、後半では、_pga_max_sizeも増加させてどう変化するか確認してみることに。

_pga_max_sizeパラメータは隠しパラメータなのでOracle Supportの指示なしには変更しないパラメータ、遊ぶ場合は、趣味の環境等でやってね :)

あ、ところで、なんでPGAネタを始めたかって? 知りたいですか? 

実は、先日、インフラ担当(Oracleにはかなり詳しいと思われる)の方と話していて、pga_aggregate_targetの話題になったとき、その方が、「そーゆー、都市伝説みたいな話があるよね〜、キッパリ!」、みたいなノリで話していたので、私:「そんな事ないよー、都市伝説みたいじゃなくて都市伝説だよ(ウソウソ)、ほんととうにそう動いてるよ〜」、という話をしていて、どーしても書かなきゃ!、という気持ちになったのでした〜。それ以外に、第一回目でもちょっと書きましたが、10g r2ではちょいと変わったとか...いう話もあったし。(マニュアルにも書いてないし、Oracleに完全お任せでいいかというと、性能問題に絡んでくるちょいといやらしいとこなので)

余談はこのくらいにして、実験再開。

実際にソート処理をさせなくても、いままでの結果から、global memory boundの値が自動PGAメモリー管理では重要な意味があることは確認できたと思うので、毎回ソート処理を行わないで進めます。(適当な所で実際にソートしてみます!)

Oracle10g R1も9iと同様に、MIN(pga_aggregate_target * 0.05, _pga_max_size * 0.5)という条件で割り当てているのはほぼ確実なので、_pga_max_size=200MB (デフォルト)のままで、pga_aggregate_targetを1GB/2GB/4GB/8GB/16GBと増加させた場合、_pga_max_size * 0.5 = 100MBを下回るのは、pga_aggregate_targetに1GBを指定した場合のみなので、Oracleが気まぐれにglobal memory boundを設定しているのでなければ、global memory boundは、51.2BM/100MB/100MB/100MB/100MBという変化になるはず!


2010/5/8追記:
MIN(pga_aggregate_target * 0.05, _pga_max_size * 0.5)という表現よりSQLなら
LEAST(pga_aggregate_target * 0.05, _pga_max_size * 0.5)こっちの方がいいな次ぎからLEASTにする。


ということを脳のcacheにKEEPした上で、以下をご覧ください。
SYS> alter system set pga_aggregate_target=1g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 1G

SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 908.4375
global memory bound 51.1992188

SYS>
SYS>
SYS> alter system set pga_aggregate_target=2g;

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

SYS>
SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 2G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1830.2168
global memory bound 100

SYS>
SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3673.33594
global memory bound 100

SYS>
SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 8G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7359.69727
global memory bound 100

SYS>
SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 16G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14732.2793
global memory bound 100

SYS>
SYS>

・・・中略・・・

SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT 97.58 409993216 409993216
0 order by code

やった〜!、予想通り!!! :)

さらに念押し、pga_aggregate_target * 5%が _pga_max_size * 50% より小さくなるようにして、さらに変化を見る。

16GB * 5% = 819.2MB なので 820MB * 2 = 1640MB を _pga_max_sizeパラメータに設定すればいろいろと見えるよね。たぶん。

MacOS X版Oracle10g R1だけかもしれないけど?(未確認なので)、動的に変わるはず(と思っている)_pga_max_sizeがどうも静的なので、Oracle10g R1では _pga_max_sizeを変更した場合は必ず、インスタンスを再起動しています。 (^^;;;;

_pga_max_sizeを1640MBに設定後、pga_aggregate_targetを1GB/2GB/4GB/8GB/16GBと増加させます。Oracleが気まぐれでglobal memory boundを設定していなければ、global memory boundの値は、51.2MB/102.4MB/204.8MB/409.6MB/819.2MBという変化を見せてくれるはず。

SYS> alter system set "_pga_max_size"=1640m;

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

SYS> alter system set pga_aggregate_target=1g;

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

SYS> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SYS> startup
ORACLEインスタンスが起動しました。

Total System Global Area 293601280 bytes
Fixed Size 778888 bytes
Variable Size 116137336 bytes
Database Buffers 176160768 bytes
Redo Buffers 524288 bytes
データベースがマウントされました。
データベースがオープンされました。
SYS>
SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 1640M
pga_aggregate_target big integer 1G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 1024
aggregate PGA auto target 907.892578
global memory bound 51.1992188

SYS> alter system set pga_aggregate_target=2g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 1640M
pga_aggregate_target big integer 2G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 2048
aggregate PGA auto target 1829.30273
global memory bound 102.399414

SYS>
SYS> alter system set pga_aggregate_target=4g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 1640M
pga_aggregate_target big integer 4G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4096
aggregate PGA auto target 3672.4834
global memory bound 204.799805

SYS>
SYS> alter system set pga_aggregate_target=8g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 1640M
pga_aggregate_target big integer 8G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 8192
aggregate PGA auto target 7358.87988
global memory bound 409.599609

SYS>
SYS> alter system set pga_aggregate_target=16g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 1640M
pga_aggregate_target big integer 16G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 16384
aggregate PGA auto target 14731.6289
global memory bound 819.199219

SYS>

データ量を倍にして、実際にソートしてみると。。。700MB以上のPGAを使ってくれました〜パチパチ。

SCOTT> 
SCOTT> begin for i in 1..100000 loop insert into code values(lpad('#',4000,'#')); end loop; commit; end;
2 /

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'CODE',degree=>2,estimate_percent=>100);

PL/SQLプロシージャが正常に完了しました。

SCOTT> alter system flush shared_pool;

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

SCOTT> @test3

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
------------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 20000 SORT 781.26
0 order by code


SCOTT>

もうここまででもOracle10g R1での検証は十分かと思いますが、さらに念押しで確認してみますよ〜(趣味の世界w) 次回へつづく。




前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4

| | | コメント (0) | トラックバック (0)

2010年5月 7日 (金)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その4回目、

Oracle10g R1 (32bit)で、pga_aggregate_targetを徐々に増加させ、PGAの使われ方がどう変わるかの確認のつづき。


pga_aggregate_targetを10MB、20MBと増加させてきたが、今回は、40MB、そして 4095GBと上限値近くまで増やしてみる。

SYS> alter system flush shared_pool;

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

SYS> alter system set pga_aggregate_target=40m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 40M
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 40
aggregate PGA auto target 22.5527344
global memory bound 2

・・・中略・・・

SCOTT>
SCOTT> -- test #3 _pga_max_size=200m (default) / pga_aggregate_target=40m
SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT 1.92 409993216 409993216
0 order by code

SCOTT>

pga_aggregate_targetを10MB、20MB、40MBと増加させてみたところ、Oracle9i R2までと同じく、pga_aggregate_targetの5%をglobal memory boundとし、その値を上限にオペレーションしていることは確からしい。

次ぎは、_pga_max_sizeパラメータのデフォルト値である200MBを元にしてPGAサイズが決定されるようにしてみる。
pga_aggregate_targetを4095GBにする必要は全くないのだけれどね、ほんとうは。 :)

SYS> 
SYS> alter system flush shared_pool;

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

SYS> alter system set pga_aggregate_target=4095g;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4095G
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773929.32
global memory bound 100

SYS>

・・・中略・・・

SCOTT>
SCOTT> -- test #4 _pga_max_size=200m (default) / pga_aggregate_target=4095G
SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT 97.58 409993216 409993216
0 order by code

SCOTT>

お〜〜〜っと、ここで変化が現れました。

これまでのテストでは、pga_aggregate_targetの5%がglobal memory boundとして調整されていましたが、5%より随分小さい値が設定されています。これもOracle9i R2と同様に、_pga_max_sizeの50%という値が設定されていると考えてよさそう。 pga_aggregate_target * 5% か _pga_max_size * 50% のいずれか小さい方が利用されていますよね。

次回はその辺りをもう少し細かく確認してみよと思います。つづく…




前回までのあらすじ・・・

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3

| | | コメント (0) | トラックバック (0)

2010年5月 6日 (木)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その3回目、

まずは、pga_aggregate_targetパラメータを変更し、PGAがどのように利用されるかみていく。10MBからはじめ、徐々に増加させてみる。
(なお、Oracleのバックグラウンドプロセス以外のセッションは以後のテストで接続している1セッションのみ。同時に複数のセッションがあると自動PGAメモリー管理が働きすぎて困るのでw)

SYS>
SYS> alter system set pga_aggregate_target=10m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 10M

SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 10
aggregate PGA auto target 4
global memory bound .5

SYS>

前述の情報を見ただけでもわかる方はもう気づいたと思いますが、実際にソート処理を行わせてPGAのサイズなどもみておきますね。(その方が面白いしw)

SCOTT> --test #1 _pga_max_size=200m(default) / pga_aggregate_target=10m
SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT .44 409993216 409993216
0 order by code

SCOTT>

前述の結果から見ると、ソート処理は、0.44MBのPGAを利用していることが確認でき、そのサイズは、global memory bound以下のサイズであり、global memory boundは、pga_aggregate_targetパラメータで指定したサイズ(10MB)の5%である0.5MBであることがわかる。

では次ぎに、20MBに増加させて試してみると…

SYS> alter system flush shared_pool;

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

SYS> alter system set pga_aggregate_target=20m;

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

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 20M

SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 20
aggregate PGA auto target 4.36816406
global memory bound 1

・・・中略・・・

SCOTT>
SCOTT> -- test #2 _pga_max_size=200m(default) / pga_aggregate_target=20m
SCOTT> @test2

SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT .97 409993216 409993216
0 order by code

SCOTT>


pga_aggregate_targetパラメータが10MBの場合と同様に、pga_aggregate_target5%がglobal memory boundのサイズとして調整され、ソート処理を行わせてもその範囲以下を上限としてメモリソート+DISKソートが行われていることがわかる。

Oracle10g R1は、Oracle9i R2のまでと同じ割当方法だよね〜。

ここまでに利用したスクリプトは以下。(今回使った分ね。)
・test2.sql

set term off
select * from code where rownum <= 100000 order by code
/
set term on
@show_workarea2

・show_workarea2.sql

col sql_text for a40
col operation_type for a20
select
sql_text
,operation_type
,round(last_memory_used/1024/1024,2) as "last_mem(MB)"
,last_tempseg_size
,max_tempseg_size
from
v$sql vs join v$sql_workarea vsw
on vs.sql_id = vsw.sql_id
where
sql_text='select * from code where rownum <= 100000 order by code'
/

ということで、次回へつづく。 :)



前回までのあらすじ・・・

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2

| | | コメント (0) | トラックバック (0)

2010年5月 5日 (水)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その2回目、

自動PGAメモリー管理下ではどのようにPGAが割り当てられているのか確認して見ることに…

はじめは、

Oracle10g R1 for MacOS X Server (32bit) / MacOS X 10.4.11 Server PPC G5 Dual 2.7Ghz RAM:1GB

という環境から。

SYS> select * from v$version;

BANNER
----------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE 10.1.0.3.0 Production
TNS for MacOS X Server: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production

SYS>

以下、隠しパラメータも含めて(多めに表示してますが気にしないで・・)確認!
赤字のパラメータはいろいろ関わってくるから気にしておくと吉だけど、隠しパラメータは基本的にユーザがかってに変更するパラメータではないので、Oracle社さんからの指示に従ってね :-)

ちなみに、隠しパラメータは、パラメータ名称の先頭が "_"になっているパラメータのこと。かってに変更されては困るからマニュアルにも記載されていないパラメータのこと。
英語圏のブログを検索するときは、hidden parameters なんてキーワード含めるといいよ!

SYS> @show_param

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ------------------------------
_4031_sga_dump_interval 3600 TRUE
_4031_sga_max_dumps 10 TRUE
_lock_sga_areas 0 TRUE
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 FALSE
_use_ism_for_pga TRUE TRUE
lock_sga FALSE TRUE
pga_aggregate_target 104857600 FALSE
pre_page_sga FALSE TRUE
sga_max_size 293601280 TRUE
sga_target 293601280 FALSE

11行が選択されました。

SYS>
SYS> show parameter workarea_size_policy

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
workarea_size_policy string AUTO
SYS>


隠しパラメータは通常はshow parameterコマンドでは表示されないけど一旦設定してあげると表示されるようになるんだよ〜。
_pga_max_size隠しパラメータのデフォルト値は200MBなんだけどあえて設定してやることでshow parameterコマンドで確認できるようにしてあります。
マネしないでね、してもいいけど自己責任でお願いします (^^;;;

SYS> show parameter pga

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 100M
SYS>
SYS> @pgastat

NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 100
aggregate PGA auto target 76.6142578
global memory bound 5

SYS>

最後の結果は、v$pgastatビューを問い合わせているんですが、一番のポイントは赤字部分のglobal memory boundなのでよ〜〜〜〜く覚えておいてね (^^

以下、ここまでで使ったスクリプト。

show_param.sql

set linesize 200
col ksppinm for a30
col ksppstvl for a30
col ksppstdf for a30
select
a.ksppinm
,b.ksppstvl
,b.ksppstdf
from
x$ksppi a join x$ksppcv b
on a.indx = b.indx
where
a.ksppinm like '%pga%'
or a.ksppinm like '%sga%'
or a.ksppinm like 'memory%'
order by
a.ksppinm
/

pgastat.sql

set linesize 200
col name for a50
select
name
,value/1024/1024 "size(MB)"
from
v$pgastat
where
name in (
'aggregate PGA target parameter'
,'aggregate PGA auto target'
,'global memory bound'
)
/


というこで、引っぱりまくってますが、Oracle10g R1 (32bit)編、次回へつづく。



前回までのあらすじ・・・
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1

| | | コメント (0) | トラックバック (0)

pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1

かな〜り間が空きましたが、久々にMac De Oracleっぽいネタにしました〜w

pga_aggregate_targetというか_pga_max_sizeパラメータというかPGAに割り当てられるSORTやhash-joinなどのサイズ絡みの話をいくつかのプロジェクトでしてたらOracle10g R2以降は割当る割合が変わったよね〜なんて話が出てた事もあり、実際はどーなーのよー。という事で調べてみる事にした。

Oracle9i R2までのお話は、過去記事や国内外のブログでも沢山書かれているのでそちらも参考にしてもらうよろしいかと…

sizing pga_aggregate_target and pga_max_size for Oracle
The _PGA_MAX_SIZE hidden parameter
新・ソートに関する検証
32bitと64bitのOracle10gでも_pga_max_sizeの値は同じ。
Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2

確認方法は、前述した新・ソートに関する検証の検証方法を参考に進めて行くことにした。
pga_aggregate_target関連の話でかつ、日本語の記事だとここが一番分かりやすい。感謝。

今回対象としたのは以下のプラットフォームとリリースのOracle

・Oracle10g R1 for MacOS X Server (32bit) / MacOS X 10.4.11 Server PPC G5 Dual 2.7Ghz RAM:1GB
・Oracle10g R2 for MacOS X Server (64bit) / MacOS X 10.6.3 Core2 Duo 2.2Ghz RAM:2GB
・Oracle11g R1 for Linux x86 (32bit) / CentOS 5.4 Pentium M 1Ghz RAM:768MB
・Oracle11g R2 for Linux x86 (32bit) / CentOS 5.4 Pentium M 1Ghz RAM:768MB


まず、検証対象の全データベースのSCOTTスキーマに以下の表とデータを登録しておく! :)

SCOTT> create table code (code varchar2(4000));

表が作成されました。

SCOTT> begin for i in 1..100000 loop insert into code values(lpad('#',4000,'#')); end loop; commit; end;
2 /

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'CODE',estimate_percent=>100);

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> l
1 select
2 blocks*block_size/1024/1024 as "table_size(MB)"
3 from
4 user_tables ut join user_tablespaces uts
5 on ut.tablespace_name = uts.tablespace_name
6* and ut.table_name = 'CODE'
SCOTT> /

table_size(MB)
--------------
782.101563

SCOTT>

ということで、次回へつづく。 (^^

| | | コメント (0) | トラックバック (0)

2010年3月28日 (日)

32bitと64bitのOracle10gでも_pga_max_sizeの値は同じ。

2010/11/25追記
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1

バージョンはOracle10g ですが、Oracle10g R1までとOracle10g R2以降では32bit版と64bit版のPGA関連で違いがあるという話を聞いたので、暇な時に調べようかなというネタのタネ。

久々にMac De Oracleらしく、MacOSX版Oracle10gでございます :)


まずは、Oracle10g R1 for MacOSX Server (PowerPC) 。こちらは32bitのはず。v$sessionのpaddr列からも確認できるように32bitだね

SYS> select * from v$version;

BANNER
----------------------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE 10.1.0.3.0 Production
TNS for MacOS X Server: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production

SYS> !file $ORACLE_HOME/bin/oracle
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tigerx/bin/oracle: setuid setgid Mach-O executable ppc

SYS> select paddr from v$session where username='SYS';

PADDR
--------
610F79E8

SYS> col ksppinm for a30
SYS> col ksppstvl for a30
SYS> l
1 select
2 a.ksppinm
3 ,b.ksppstvl
4 ,b.ksppstdf
5 from
6 x$ksppi a join x$ksppcv b
7 on a.indx = b.indx
8 and a.ksppinm like '%pga%'
9 order by
10* a.ksppinm
SYS> /

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 96468992 FALSE

SYS>



Powerpc32

次ぎは、Oracle10g R2 for MacOSX Server(Intel x86-64)。 v$sessionのpaddr列からも64bitだと確認できます。


SYS> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for MacOS X Server: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SYS>
SYS> !file $ORACLE_HOME/bin/oracle
/Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/bin/oracle: Mach-O 64-bit executable x86_64

SYS> select paddr from v$session where username='SYS';

PADDR
----------------
0000000194664920

SYS>
SYS> l
1 select
2 a.ksppinm
3 ,b.ksppstvl
4 ,b.ksppstdf
5 from
6 x$ksppi a join x$ksppcv b
7 on a.indx = b.indx
8 and a.ksppinm like '%pga%'
9 order by
10* a.ksppinm
SYS> /

KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 203423744 FALSE

SYS>


Intelcore2duo64


バナーには 64bitという表記は無いOracle10g R2 for MacOSX Serverですが、32bitのMacOSX版Oracle10g R2は存在しないのでMacOSXに限っては 64bit Productionの表示はないのかな? と勝ってに思っている。
32/64bitの両リリースのあるプラットフォームではバナーに64bit表記がなければ32bit版となっているが、そもそも32bit版がないのだから区別する必要はないということかな。

上記結果からは間違いなくOracle10g R2 for MacOSX Serverは、64bit版ですね! キッパリ! 

で、本当に知りたかったのはそれじゃなくて…

64bit版、Oracle10g R2でも _pga_max_sizeは200MBなんだよね!ってこと。 64bit版でメモリ沢山積んでても今のところこの値は変わってないよねってこと。
あとで、いろいろと遊ぶつもりなのでそのネタの事前確認なのであるw

| | | コメント (0) | トラックバック (0)

2009年11月29日 (日)

CentOS5.4で無線LAN

先日、転居に伴い自宅のLAN環境を変えたついでに、それまでケーブル接続していたCentOS5を入れていたお遊び用Toshiba Dynabook SS SX/210LNLW RAM:768MBを無線LAN接続で使う事にした。rootユーザの言語をJapanseにしていた関係で「ワイヤレスでバイス設定」を使って少々ハマってしまったので、何にハマったのかも備忘録として書いてあります。

尚、無線LAN設定時はCentOS5.4。

Wlan_centos54_001_2

まず、無線LANアダプターの確認。

[root@corydoras ˜]# lspci | grep Ether
01:05.0 Ethernet controller: Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter (rev 01)
01:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 83)
[root@corydoras ˜]#

wpa_supplicant関係の確認.

[root@corydoras ˜]# rpm -q wpa_supplicant
wpa_supplicant-0.5.10-8.el5
[root@corydoras ˜]# rpm -ql wpa_supplicant
/etc/dbus-1/system.d/wpa_supplicant.conf
/etc/logrotate.d/wpa_supplicant
/etc/rc.d/init.d/wpa_supplicant
/etc/sysconfig/wpa_supplicant
/etc/wpa_supplicant
/etc/wpa_supplicant/wpa_supplicant.conf
/usr/sbin/wpa_cli
/usr/sbin/wpa_passphrase
/usr/sbin/wpa_supplicant
/usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service
/usr/share/doc/wpa_supplicant-0.5.10
/usr/share/doc/wpa_supplicant-0.5.10/COPYING
/usr/share/doc/wpa_supplicant-0.5.10/ChangeLog
/usr/share/doc/wpa_supplicant-0.5.10/README
/usr/share/doc/wpa_supplicant-0.5.10/eap_testing.txt
/usr/share/doc/wpa_supplicant-0.5.10/examples
/usr/share/doc/wpa_supplicant-0.5.10/examples/ieee8021x.conf
/usr/share/doc/wpa_supplicant-0.5.10/examples/plaintext.conf
/usr/share/doc/wpa_supplicant-0.5.10/examples/wep.conf
/usr/share/doc/wpa_supplicant-0.5.10/examples/wpa-psk-tkip.conf
/usr/share/doc/wpa_supplicant-0.5.10/examples/wpa2-eap-ccmp.conf
/usr/share/doc/wpa_supplicant-0.5.10/todo.txt
/usr/share/doc/wpa_supplicant-0.5.10/wpa_supplicant.conf
/usr/share/man/man5/wpa_supplicant.conf.5.gz
/usr/share/man/man8/wpa_background.8.gz
/usr/share/man/man8/wpa_cli.8.gz
/usr/share/man/man8/wpa_passphrase.8.gz
/usr/share/man/man8/wpa_supplicant.8.gz
/var/run/wpa_supplicant
[root@corydoras ˜]#

以下、関連configファイルをダラダラと。。この辺りの設定方法はググルと山ほど出て来るのでほんと助かりまっす!

[root@corydoras ˜]# cat /etc/sysconfig/network-scripts/ifcfg-wlan0
# Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter
DEVICE=wlan0
BOOTPROTO=none
ONBOOT=yes
#HWADDR=XX:XX:XX:XX:XX:XX
NETMASK=255.255.255.0
DHCP_HOSTNAME=
IPADDR=192.168.1.20
DOMAIN=
GATEWAY=192.168.1.1
TYPE=Wireless
USERCTL=no
IPV6INIT=no
PEERDNS=yes
ESSID=MyAirPortExpress
CHANNEL=1
MODE=Managed
SECURITYMODE=Restricted
RATE=Auto
[root@corydoras ˜]#


パスフレーズを設定して…

[root@corydoras ˜]# wpa_passphrase MyAirPortExpress hogehoge >> /etc/wpa_supplicant/wpa_supplicant.conf
[root@corydoras ˜]# cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel

#network={
# ssid="any"
# key_mgmt=NONE
#}

network={
scan_ssid=1
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
ssid="MyAirPortExpress"
psk=4151a3813315d0175c7cd157a3afbb27ae50b9f466608687a60c0514ef0ec427
}
[root@corydoras ˜]#


/etc/sysconfig/wpa_supplicantは以下のように設定した

[root@corydoras ˜]# cat /etc/sysconfig/wpa_supplicant
# Use the flag "-i" before each of your interfaces, like so:
# INTERFACES="-i eth1 -i wlan0"
INTERFACES="-i wlan0"


# Use the flag "-D" before each driver, like so:
# DRIVERS="-D wext"
DRIVERS="-D wext"


# Other arguments
# -u Enable the D-Bus interface (required for use with NetworkManager)
# -f Log to /var/log/wpa_supplicant.log
OTHER_ARGS="-f /var/log/wpa_supplicant.log"

[root@corydoras ˜]#


/etc/rc.d/init.d/wpa_supplicantは/etc/rc.d/init.d/networkより前に起動するように

[root@corydoras ˜]# grep -w "# chkconfig" /etc/rc.d/init.d/network
# chkconfig: 2345 10 90
[root@corydoras ˜]# grep -w "# chkconfig" /etc/rc.d/init.d/wpa_supplicant
# chkconfig: 2345 09 88
[root@corydoras ˜]# chkconfig wpa_supplicant on
[root@corydoras ˜]#


ここで再起動

繋がってるか確認。

[root@corydoras ˜]# 
[root@corydoras ˜]# ping -c 3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.29 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.58 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.58 ms

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 1.588/1.825/2.298/0.334 ms
[root@corydoras ˜]#


MacOS X側からもアクセスしてみる、試しにOracle Instant ClientでCentOS5.4上のOracle11g R1へ接続。

G5Server:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 日 11月 29 16:43:02 2009

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

> conn sys@lampeye as sysdba
パスワードを入力してください:
接続されました。
SYS> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

SYS>



おまけ
上記だけ載せてしまうと順調に進んだように見えますがハマった所もありました。
GUI上で「ネットワーク設定」や「ワイヤレスデバイス設定」を利用して各種構成が行えるのだが、rootユーザの言語設定が日本語になっていると「ワイヤレスデバイス設定」で”自動”と設定したパラメータが構成ファイル上でも”自動”と設定され起動時にエラーになってしまった。これに気付くのに手間取り少々ハマったのでご注意を。

以下、「ワイヤレスデバイス設定」で”自動”とした場合の内容(これじゃうまく行かないよね。w)


Wlan_centos54_003_2


[root@corydoras ˜]# cat /etc/sysconfig/network-scripts/ifcfg-wlan0 
# Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter
DEVICE=wlan0
BOOTPROTO=none
ONBOOT=yes
HWADDR=XX:XX:XX:XX:XX:XX
NETMASK=255.255.255.0
DHCP_HOSTNAME=
IPADDR=192.168.1.20
DOMAIN=
GATEWAY=192.168.1.1
TYPE=Wireless
USERCTL=no
IPV6INIT=no
PEERDNS=no
ESSID=MyAirPortExpress
CHANNEL=自動
MODE=Auto
SECURITYMODE=
RATE=自動
[root@corydoras ˜]#

| | | コメント (0) | トラックバック (0)

2009年9月27日 (日)

Oracle SQL Developer Data Modeler #3

前回予告したようにOracle SQL Developer Data Modeler 2.0で日本語を使ったモデリングを試してみた。まず使用感から先に書いておくと”まあまあ”と言ったところ。
日本語を使う上で注意する点も現時点ではまだまだあるな。という感じで、その辺りが面倒だとか気になるようであればERwinとかObjectBrowser ERとか既存のツールを使った方が楽だと感じる方も多いかもしれない。


まずはYouTubeへアップしたムービーでご覧ください。
論理モデルを日本語で作成し、物理モデルへ変換する。
その際のポイントは以下。

  • 変換する際に英語表記へ変換しているが制約名(主キー制約、ユニーク制約、外部参照制約など)を日本語表記から英語表記へ置換する機能が無い(?)ようで、制約名に関しては論理モデル上で英語表記へ手動変更している。

  • 外部参照制約では外部キー削除時のデフォルトアクションをNO ACTIONと設定していてもSET NULLが設定されてしまうため、この項目についても適宜手動で設定する必要がある。

  • DDL生成時に指定した名称を置換する「Name Substitution」機能は動作しないようなので使うのをやめた。(使い方が悪いのか?)

  • 今回あえて、日本語名のままのカラム(従業員.給与)を残しておきDDLにどのように書き出されるか確認しておいた。結果としては識別引用子(quoted identifier)は付加されないので「日本語名称でテーブル等のデータベースオブジェクト名称」を作成したいという方々には残念!かも。ただ、どうしても識別引用子を付加したい場合もあると思うのでDDL生成時オプションとして用意してもらえると良いと思う。(確かObjectBrowser ERはそんな機能があったような気がする。)

  • 論理モデル上にてリレーションを作成した場合、属性名称のPreferred Abbreviationに指定した名称を継承しないので手動で入力する必要がる。(タイプミスには要注意。)


ムービーは最大化するといいよ!

ムービーで作成した物理モデルから生成したDDLは以下の通り。(EMPLOYEESの給与列はあえてマルチバイトのままにしてあるが識別引用子が付加されていない。赤太字部分)

他に気付いたことも幾つかあった気がする・・・・・。が・・・思い出したらこのエントリに追記するか別エントリにする予定。

尚、論理モデルから物理モデルへ変換する際「Apply Name Translation」と「Use preferred abbreviations」をチェックしたが、「Use preferred abbreviations」をチェックしなかった場合はどこに設定した名称に変換してくれるのか未確認。


-- Generated by Oracle SQL Developer Data Modeler Version: 2.0.0 Build: 570
-- at: 2009-09-26 22:05:49
-- site: Oracle Database 11g
-- type: Oracle Database 11g


CREATE TABLE DEPARTMENTS
(
DEPARTMENT_ID NUMBER (4) NOT NULL ,
DEPARTMENT_NAME VARCHAR2 (60 BYTE) NOT NULL
) TABLESPACE HOGE_TS

;


COMMENT ON TABLE DEPARTMENTS IS '部署マスタ'
;

COMMENT ON COLUMN DEPARTMENTS.DEPARTMENT_ID IS '部署ID'
;

COMMENT ON COLUMN DEPARTMENTS.DEPARTMENT_NAME IS '部署名'
;
CREATE UNIQUE INDEX DEPARTMENTS_PKX ON DEPARTMENTS
(
DEPARTMENT_ID ASC
)
;

ALTER TABLE DEPARTMENTS
ADD CONSTRAINT DEPARTMENTS_PK PRIMARY KEY ( DEPARTMENT_ID ) ;


CREATE TABLE EMPLOYEES
(
EMPLOYEE_ID NUMBER (5) NOT NULL ,
EMPLOYEE_NAME VARCHAR2 (40 BYTE) NOT NULL ,
給与 NUMBER (7,2) NOT NULL ,
DEPARTMENT_ID NUMBER (4) ,
MGR_ID NUMBER (5)
) TABLESPACE HOGE_TS

;



COMMENT ON TABLE EMPLOYEES IS '従業員マスタ'
;

COMMENT ON COLUMN EMPLOYEES.EMPLOYEE_ID IS '従業員ID'
;

COMMENT ON COLUMN EMPLOYEES.EMPLOYEE_NAME IS '従業員名'
;

COMMENT ON COLUMN EMPLOYEES.給与 IS '給与'
;

COMMENT ON COLUMN EMPLOYEES.DEPARTMENT_ID IS '部署ID'
;

COMMENT ON COLUMN EMPLOYEES.MGR_ID IS '上司ID'
;
CREATE UNIQUE INDEX EMPLOYEES_PKX ON EMPLOYEES
(
EMPLOYEE_ID ASC
)
;
CREATE INDEX EMP_DEPT_FK1X ON EMPLOYEES
(
DEPARTMENT_ID ASC
)
;
CREATE INDEX EMP_EMP_FK1X ON EMPLOYEES
(
MGR_ID ASC
)
;

ALTER TABLE EMPLOYEES
ADD CONSTRAINT EMPLOYEES_PK PRIMARY KEY ( EMPLOYEE_ID ) ;



ALTER TABLE EMPLOYEES
ADD CONSTRAINT EMP_DEPT_FK1 FOREIGN KEY
(
DEPARTMENT_ID
)
REFERENCES DEPARTMENTS
(
DEPARTMENT_ID
)
;


ALTER TABLE EMPLOYEES
ADD CONSTRAINT EMP_EMP_FK1 FOREIGN KEY
(
MGR_ID
)
REFERENCES EMPLOYEES
(
EMPLOYEE_ID
)
;


-- Oracle SQL Developer Data Modeler Summary Report:
--
-- CREATE TABLE 2
-- CREATE INDEX 4
-- ALTER TABLE 2
-- CREATE VIEW 0
-- CREATE PROCEDURE 0
-- CREATE TRIGGER 0
-- CREATE STRUCTURED TYPE 0
-- CREATE COLLECTION TYPE 0
-- CREATE CLUSTER 0
-- CREATE CONTEXT 0
-- CREATE DATABASE 0
-- CREATE DIMENSION 0
-- CREATE DIRECTORY 0
-- CREATE DISK GROUP 0
-- CREATE ROLE 0
-- CREATE ROLLBACK SEGMENT 0
-- CREATE SEQUENCE 0
-- CREATE SNAPSHOT 0
-- CREATE SYNONYM 0
-- CREATE TABLESPACE 0
-- CREATE USER 0
--
-- DROP TABLESPACE 0
-- DROP DATABASE 0
--
-- ERRORS 0
-- WARNINGS 0




バックナンバー
Oracle SQL Developer Data Modeler #1
Oracle SQL Developer Data Modeler #2

| | | コメント (0) | トラックバック (0)

2009年9月20日 (日)

Oracle SQL Developer Data Modeler #2

Oracle SQL Developer Data Modelerの第2回目です。
今回はOracle database 11g release 2 for Linux x86のHRスキーマのテーブル定義をリーバスエンジニアリングし物理モデルと論理モデル、ついでにDDLも生成してみた。以下のムービーの通りリレーションの自動レイアウトはちょっとイマイチかもしれないがそれ以外は良さげです。ちなみに今回の例でも日本語は使っていません。多分次回のエントリで日本語を使っている所を出せるかも。。あくまで予定ですので未定ですが。


以下のムービーはQuickTIme XのScreen Recorderで記録後、YouTubeへアップロード。さらにサウンドトラックをYouTube上で設定した。


尚、上記例ではOracle SQL Developer Data ModelerからOracle database 11g release 2 へはTNS接続していましうす。MacOS XのOracle SQL DeveloperでTNS接続を利用する方法と同じです。詳細は以下を参照してください。

「Oracle SQL Developer for MacOSX で Oracle Instant Clientを使ってみる」



バックナンバー
Oracle SQL Developer Data Modeler #1

| | | コメント (0) | トラックバック (0)

2009年9月18日 (金)

Oracle SQL Developer Data Modeler #1

最近、Oracle SQL Developerのエントリが検索上位に来ていたので久々に新ネタです。Oracle SQL Developerに組込まれる?(ちゃんと読んだわけではないので違うかも)というOracle SQL Developer Data Modelerのお話。

このエントリでは書きませんが、メニューなど日本語化されていないのですがエンティティなどでは多少問題はありますが日本語は扱えるようです。(注)私が日本語を使って試した範囲に於いて。

今回利用したのはMacOS X Snow Leopard でOracle SQL Developer Data Modeler for MacOS Xを単体で起動できるようにした後にOracle SQL Developer for MacOS Xの外部アプリケーションとして起動するところまで。(ちなみに、PowerPC版のMacOS X TigerでもJDK6 Developer Previewがインストールされていれば利用できます。)


Datamodeler_2

では、さっそくやってみましょう!

OTNのサイトからダウンロードしたOracle SQL Developer Data Modeler for MacOS Xを適当な場所に解凍します。(今回は/Applications以下に展開)
Oracle SQL Developer Data ModelerをMacOS X上で起動するには、Data Modelerを解凍したディレクトリ直下にあるdatamodeler.shをTerminalから実行します。
尚、ダウンロード・解凍直後はdatamodeler.shの実行権限が無いので実行権限を付与しておきます。

guppy:˜ discus$ cd /Applications/datamodeler 
guppy:datamodeler discus$ ll
total 256
drwxr-xr-x@ 8 discus staff 272 9 18 04:10 bin
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 conf
-rw-r--r--@ 1 discus staff 118784 6 26 03:42 datamodeler.exe
-rw-r--r--@ 1 discus staff 60 6 26 03:42 datamodeler.sh
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 doc
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 domains
-rw-r--r--@ 1 discus staff 4279 6 26 03:42 icon.png
drwxr-xr-x@ 16 discus staff 544 9 18 04:05 lib
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 logtypes
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 rdbms
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 reports
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 templates
guppy:datamodeler discus$
guppy:datamodeler discus$ chmod ug+x datamodeler.sh
guppy:datamodeler discus$ ll
total 256
drwxr-xr-x@ 8 discus staff 272 9 18 04:10 bin
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 conf
-rw-r--r--@ 1 discus staff 118784 6 26 03:42 datamodeler.exe
-rwxr-xr--@ 1 discus staff 60 6 26 03:42 datamodeler.sh
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 doc
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 domains
-rw-r--r--@ 1 discus staff 4279 6 26 03:42 icon.png
drwxr-xr-x@ 16 discus staff 544 9 18 04:05 lib
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 logtypes
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 rdbms
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 reports
drwxr-xr-x@ 3 discus staff 102 9 18 04:05 templates
guppy:datamodeler discus$


JavaSEは1.6がデフォルトになっていますが、まだ、このままではData Modelerを実行できません。

guppy:datamodeler discus$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)
guppy:datamodeler discus$


なにもしないで実行すると、~/jdk.confに設定されるJ2SEのホームディレクトリのフルパスの入力を求められます。指示に従いそのまま入力してもよいのですが、datamodelerとは直接関係の無いディレクトリにjdk.confが作成されるのが嫌なので、別の方法で設定します。

guppy:datamodeler discus$ ./datamodeler.sh &
[1] 2198
guppy:datamodeler discus$
Oracle SQL Developer Data Modeler
Copyright (c) 1997, 2009, Oracle and/or its affiliates.All rights reserved.

Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path will be stored in ˜/jdk.conf

[1]+ Stopped ./datamodeler.sh
guppy:datamodeler discus$


Data Modelerを解凍したディレクトリ以下の /bin/datamodeler.confのSetJavaHomeパラメータにJavaSE6.0へのフルパスを設定します。

guppy:datamodeler discus$ vi ./bin/datamodeler.conf
guppy:datamodeler discus$ grep SetJavaHome ./bin/datamodeler.conf
SetJavaHome /System/Library/Frameworks/JavaVM.framework/Versions/1.6/home


尚、MacOS XのJavaへのパスは以下のように管理されています。今回は、1.6/homeを設定しています。

guppy:datamodeler discus$ 
guppy:datamodeler discus$ ll /System/Library/Frameworks/JavaVM.framework/Versions
total 48
lrwxr-xr-x 1 root wheel 5 9 2 17:21 1.3 -> 1.3.1
drwxr-xr-x 3 root wheel 102 7 21 08:35 1.3.1
lrwxr-xr-x 1 root wheel 5 9 2 17:21 1.5 -> 1.5.0
drwxr-xr-x 7 root wheel 238 9 2 17:21 1.5.0
lrwxr-xr-x 1 root wheel 5 9 2 17:21 1.6 -> 1.6.0
drwxr-xr-x 7 root wheel 238 9 2 17:21 1.6.0
drwxr-xr-x 8 root wheel 272 9 2 17:21 A
lrwxr-xr-x 1 root wheel 1 9 2 17:21 Current -> A
lrwxr-xr-x 1 root wheel 3 9 2 17:21 CurrentJDK -> 1.6
guppy:datamodeler discus$


これでやっと起動できるようになります。

guppy:datamodeler discus$ ./datamodeler.sh &
Oracle SQL Developer Data Modeler
Copyright (c) 1997, 2009, Oracle and/or its affiliates.All rights reserved.


[2]- Done ./datamodeler.sh
guppy:datamodeler discus$
Osdm_window_2

Data Modelerを起動するのに毎回Terminalを開いて、shellを実行するというのは面倒という方は、.sh の部分を .command と書き換えてください。ダブルクリックで起動できるようになります。
.command に変更後エイリアスをDockに登録しておけばクリック一発で起動できます。


他の方法として、Oracle SQL Developerの外部アプリケーションとして登録しておきOracle SQL Developer経由で起動する方法があります。
登録するのは、 .sh の方でも .command の方でも、どちらでも構いません。以下の例では datamodeler.sh を外部アプリケーションとして登録・起動しています。


おまけ、JavaSE5.0を設定してしまうと・・・・・・こんなことになっちゃいますからご注意を。

guppy:datamodeler discus$ ./datamodeler.sh &
[1] 891
guppy:datamodeler discus$
Oracle SQL Developer Data Modeler
Copyright (c) 1997, 2009, Oracle and/or its affiliates.All rights reserved.

java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Exception in thread "main" ll


次回につづく。

| | | コメント (0) | トラックバック (0)

QuickTime X - Screen Recorder

以前もちょっと書いたけどSnow LeopardのQuickTime XからScreen Recorder機能が追加されている。この機能、操作ガイドなど作るのには非常に便利。いままではShareware使ってたりした方が多かったと思うけどSnow LeopardならQuickTime Xを起動してレコーディングすだけでOK。

1

QuickTime X Playerを起動して「メニュー」→「新規画面収録 ^⌘N」を選択。
2

「画面収録」ダイアログが表示された録画ボタンをクリックするだけで開始される。デフォルトの保存場所は「ムービー」フォルダ」。
「収録の開始」ボタンをクリックすると操作が録画される。

6

4

実際に収録したムービーは次の記事の時にで使う予定。

| | | コメント (0) | トラックバック (0)

2009年9月16日 (水)

Cross Platform Transportable Tablespace #11

twitterで呟かれていたリトルエンティアン、ビッグエンディアンで思い出したので、久々にトランスポータブル表領域について。
Oracle database 11gが登場したり、MacがPowerPCからIntelに移行したりしたのでその辺りの情報も追加されているんだろうな〜。と思い$transportable_platformの内容を比較してみた。

まず、Oracle10g R2の頃のv$transportable_platformの情報。(以前載せたものを再掲載

SYS> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
PL/SQL Release 10.2.0.2.0 - Production
CORE 10.2.0.2.0 Production
TNS for Linux: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production

SYS> SYS> l
1 select
2 endian_format
3 ,platform_name
4 from
5* v$transportable_platform
SYS> /

ENDIAN_FORMAT PLATFORM_NAME
---------------------------- -----------------------------------------
Big Solaris[tm] OE (32-bit)
Big Solaris[tm] OE (64-bit)
Little Microsoft Windows IA (32-bit)
Little Linux IA (32-bit)
Big AIX-Based Systems (64-bit)
Big HP-UX (64-bit)
Little HP Tru64 UNIX
Big HP-UX IA (64-bit)
Little Linux IA (64-bit)
Little HP Open VMS
Little Microsoft Windows IA (64-bit)
Big IBM zSeries Based Linux
Little Linux 64-bit for AMD
Big Apple Mac OS
Little Microsoft Windows 64-bit for AMD
Little Solaris Operating System (x86)
Big IBM Power Based Linux

17行が選択されました。

SYS>


次に、Oracle11g R2のv$transportable_platformの内容
黒太字部分は名称が変っただけですね。for AMDからx86と変更されている。
また、赤太字のHP IA Open VMSとSolaris Operating System (x86-64)が追加されている。

SYS> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

SYS> l
1 select
2 endian_format
3 ,platform_name
4 from
5* v$transportable_platform
SYS> /

ENDIAN_FORMAT PLATFORM_NAME
-------------- --------------------------------------------------
Big Solaris[tm] OE (32-bit)
Big Solaris[tm] OE (64-bit)
Little Microsoft Windows IA (32-bit)
Little Linux IA (32-bit)
Big AIX-Based Systems (64-bit)
Big HP-UX (64-bit)
Little HP Tru64 UNIX
Big HP-UX IA (64-bit)
Little Linux IA (64-bit)
Little HP Open VMS
Little Microsoft Windows IA (64-bit)
Big IBM zSeries Based Linux
Little Linux x86 64-bit
Big Apple Mac OS
Little Microsoft Windows x86 64-bit
Little Solaris Operating System (x86)
Big IBM Power Based Linux
Little HP IA Open VMS
Little Solaris Operating System (x86-64)

19行が選択されました。


SYS>


最後は、先日リリースされたOracle11g R2のv$transportable_platformの内容。
赤太字で示した通り、Intel Macが追加されている。PowerPC版のMacはBig eneianだったがIntel版ではLittle endian。

SYS> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SYS>
SYS> l
1 select
2 endian_format
3 ,platform_name
4 from
5* v$transportable_platform
SYS> /

ENDIAN_FORMAT PLATFORM_NAME
-------------- --------------------------------------------------
Big Solaris[tm] OE (32-bit)
Big Solaris[tm] OE (64-bit)
Little Microsoft Windows IA (32-bit)
Little Linux IA (32-bit)
Big AIX-Based Systems (64-bit)
Big HP-UX (64-bit)
Little HP Tru64 UNIX
Big HP-UX IA (64-bit)
Little Linux IA (64-bit)
Little HP Open VMS
Little Microsoft Windows IA (64-bit)
Big IBM zSeries Based Linux
Little Linux x86 64-bit
Big Apple Mac OS
Little Microsoft Windows x86 64-bit
Little Solaris Operating System (x86)
Big IBM Power Based Linux
Little HP IA Open VMS
Little Solaris Operating System (x86-64)
Little Apple Mac OS (x86-64)

20行が選択されました。

SYS>

| | | コメント (0) | トラックバック (0)

2009年9月15日 (火)

Oracle database 11g release 2 for Linux x86 Install #2

前回に引き続きOracle database 11g release 2 for Linux x86のインストールです。

前回は単にOUIによるインストールの模様だけでしたが、今回はOracle database 11g release 1までのインストーラーには無かった動きや発生したエラー等の解説を。


まず最初はSYS/SYSTEM/SYSMAN/DBSNMPのパスワード設定が6.7.3 Unlocking and Changing Passwordsに記載されているガイドラインに従っているかチェックされること。以下ステップ15/20ではガイドラインに従っていないパスワードなのでエラーと警告メッセージが表示されている。

Install_o11gr2_oui_025_2

二つ目は、インストールの最低要件がチェックされ要件を満たしていなければ以下のような画面でレポートされる。同画面より修正スクリプトの生成、実行方法までが表示されるようになったこと。インストール実施中に修正できるカーネルパラメータについては「修正可能」欄に”はい”と表示される。

Install_o11gr2_oui_029
今回はインストーラの問題と思われる点が2カ所確認できる。1点目はスワップサイズで必要サイズを確保しているはずだが「ステータス」欄には”失敗”と表示されている。2点目は、CentOS5.3なので必要なパッケージにpdksh-5.2.14は含まれていないはずだが、pdkshがインストールされていないとレポートされている。ちなみにpdkshが必要なディストリビューションはCentOS4.xの場合のはずだが、、まあ、影響は特にないし、未サポートなCentOSですから。。
Install_o11gr2_oui_030_2

「修正及び再チェック」ボタンをクリックするとカーネルパラメータの修正スクリプトが自動生成され実行手順までガイドされる。指示に従いスクリプトを実行後、「OK」ボタンをクリックすると条件の再チェックが実行される。

Install_o11gr2_oui_031_1_2

Install_o11gr2_oui_032_3_2

最終的にステップ17/20の画面では、前述した2点の誤認識と物理メモリ不足(1GBのところ768MB)で、以下の3件が要件を満たしていないとレポートされた。メモリは少々不安だったが、その他の2つは問題ないので「すべて無視」をチェックして「次へ」ボタンをクリックした。

Install_o11gr2_oui_035_1_2


3つ目に、以下のアラートで表示されているエラーがDBCAで発生したこと。(OUIでデータベース作成も行ったが、DBCA単体ではどうなのかは試していない。。。。なんで???って感じ。。)

Install_o11gr2_oui_040_2 Install_o11gr2_oui_041_2

DBCAのログを調べて分かったことなのだが、これはOracle TextのオーナーCTXSYSユーザのアンロックとパスワード設定のためのalert user文が失敗(ORA-00922)し、CTXSYSユーザへconnectできず(ORA-28000が発生)にOracle Textの Default lexerや wordlist stoplist default policyの削除とデフォルト言語でそれらを作成するという処理ができなかっただけなのでインストールそのものには影響はなかったようだ。
[oracle@corydoras glassfish]$ cat postScripts.log
1
1
alter user CTXSYS account unlock identified by ******
*
行1でエラーが発生しました。:
ORA-00922: オプション指定されていないか、または無効です。


ERROR:
ORA-28000: the account is locked


警告: Oracleにはもう接続されていません。
dropping default lexer preference...
SP2-0640: 接続されていません。
dropping default wordlist preference...
SP2-0640: 接続されていません。
dropping default stoplist preference...
SP2-0640: 接続されていません。
dropping default policy...
SP2-0640: 接続されていません。
SP2-0640: 接続されていません。
lang_abbrに値を入力してください: SP2-0310: ファイル
"/u01/app/oracle/product/11.2.0/dbhome_1/ctx/admin/defaults/drdefset.sql"を
オープンできません。
[oracle@corydoras glassfish]$




関連エントリー

Oracle Database 11g Release 2 の de-install tool
Oracle Database 11g Release 2 の de-install tool #2
Oracle Database 11g Release 2 の de-install tool #3

| | | コメント (0) | トラックバック (0)

2009年9月14日 (月)

Oracle database 11g release 2 for Linux x86 Install #1

さて、インストールより先にDe-installに関して試してしまったのですが、この辺りでOracle database 11g release 2のインストールの模様でも。

以前も書きましたが、OSはCentoOS5.3、RAM:768MB、CPU:Pentium M 1GhzのDynabook SS SX/210LNLWというnote pc(OSは当時からupdateしていますがそれ以外は同じです。)を使います。
(メモリは推奨されている最低サイズより小さいく、OSは推奨されているものではありませんがRedhat EnterPrise Linux 5とは互換性が高いOSですが。。)


いつものようにインストレーションガイドに従い環境確認とカーネルパラーメータを設定しますが今回はあえてカーネルパラメータの一部を推奨値より少なくしてあります。

2.2.1 Memory Requirements

[root@corydoras ˜]# grep MemTotal /proc/meminfo
MemTotal: 758184 kB
[root@corydoras ˜]# grep SwapTotal /proc/meminfo
SwapTotal: 1540088 kB
[root@corydoras ˜]#

2.2.3 Disk Space Requirements

[root@corydoras ˜]# df  -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
35G 21G 13G 63% /
/dev/hda1 99M 17M 78M 18% /boot
tmpfs 371M 0 371M 0% /dev/shm
[root@corydoras ˜]#


2.3.1 Operating System Requirements

[root@corydoras ˜]# uname -m -r -s -v
Linux 2.6.18-128.7.1.el5 #1 SMP Mon Aug 24 08:20:55 EDT 2009 i686
[root@corydoras ˜]#
[root@corydoras ˜]# java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
[root@corydoras ˜]#
[root@corydoras ˜]$ cat /etc/redhat-release
CentOS release 5.3 (Final)
[root@corydoras ˜]$


2.3.3 Package Requirements

2.3.4 Compiler Requirements


[root@corydoras ˜]# rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
binutils-2.17.50.0.6-9.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.137-3.el5
elfutils-libelf-devel-0.137-3.el5
elfutils-libelf-devel-static-0.137-3.el5
gcc-4.1.2-44.el5
gcc-c++-4.1.2-44.el5
glibc-2.5-34.el5_3.1
glibc-common-2.5-34.el5_3.1
glibc-devel-2.5-34.el5_3.1
glibc-headers-2.5-34.el5_3.1
kernel-headers-2.6.18-128.7.1.el5
ksh-20080202-2.el5_3.1
libaio-0.3.106-3.2
libaio-devel-0.3.106-3.2
libgcc-4.1.2-44.el5
libgomp-4.3.2-7.el5
libstdc++-4.1.2-44.el5
libstdc++-devel-4.1.2-44.el5
make-3.81-3.el5
sysstat-7.0.2-3.el5
unixODBC-2.2.11-7.1
unixODBC-devel-2.2.11-7.1
[root@corydoras ˜]#


2.3.5.4 Browser Requirements
マニュアルの推奨値より少ない設定のままにしているパラメータあり。


[root@corydoras ˜]# /sbin/sysctl -a | grep -E '(sem|shmall|shmmax|shmmni|file-max|ip_local_port_range|mem_default|mem_max|vmem_default|vmen_max|aio-max-nr)'
net.ipv4.ip_local_port_range = 1024 65000
net.core.optmem_max = 10240
net.core.rmem_default = 4194304
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 262144
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 268435456
kernel.shmmax = 4294967295
fs.aio-max-nr = 65536
fs.file-max = 6553600
[root@corydoras ˜]#


2.10.1 Oracle Base Directory

[oracle@corydoras ˜]$ env | grep ORA
ORACLE_SID=glassfish
ORACLE_BASE=/u01/app/oracle
[oracle@corydoras ˜]$
[oracle@corydoras ˜]$ echo $TMP $TMP_DIR
/tmp /tmp
その他のインストール事前準備等はインストールガイドの指示に従い実施しておく。


なお、OUIの起動はMacOS XのX11 xtermからssh -Y username@hostで接続して行っています。xtermからOUIを起動した場合、xterm上に出力される日本語メッセージは文字化けするもののOUIには影響なし。また、インストール中いくつかのエラーや、CVUのチェックエラーを無視してインストールを進めている箇所がありますが、それらについては別エントリで書く事にして今回はインストールの模様のみ公開しておきます。

SYS> !sqlplus -v

SQL*Plus: Release 11.2.0.1.0 Production


SYS> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SYS>



関連エントリー

Oracle Database 11g Release 2 の de-install tool
Oracle Database 11g Release 2 の de-install tool #2
Oracle Database 11g Release 2 の de-install tool #3

| | | コメント (0) | トラックバック (0)

2009年9月10日 (木)

Oracle Database 11g Release 2 の de-install tool #3

Oracle database 11g R2ではde-install commandeで製品をアンインストールするようマニュアルに書いてあるのに、$ORACLE_HOMEにインストールされるOUIを起動してみると・・・「製品のアンインストール」ボタンがあるじゃないか。。。削除できるか試してみたら。。。orz... こんなオチだったとは。。。「製品のアンインストール」ボタンごと削除してても良かったのでは?とも思うが、オンラインヘルプと考えれば親切なのかもしない。

ただ、クリックした瞬間に腹を抱えて笑ってしまったのは言うまでもない。。。最初から笑いを取るためのネタかw


7

| | | コメント (0) | トラックバック (0)

Oracle Database 11g Release 2 の de-install tool #2

前回、Oracle11g R2のde-install tool commandを試してみたが、OUI等のマニュアルを見る限りdeinsatallはdeinstallコマンドを使うように書かれているのだが、Oracle databavse 11g release 2でインストールされたOUIで確認したところrelase 2のOUIでも「削除」機能が残っているようだ。しかも「製品のアンインストール」ボタンで。(試していないけど使えるのかな??? マニュアルには特にどちらでも使えるとは記載されていないというOracleマジックに悩み中www。使うかどうか迷うよ〜。でもマニュアルに従うならdeinstall command使うかな。)

以下、Oracle database 11g release 1のOUIの削除。($ORACLE_HOME/oui/bin/runInstallerを起動)

1

2

4_2

5


Oracle database 11g release 2ではマニュアルを見る限りOUIから削除できなくなったかのように読み取れたのだが、インストールされたOUIを実行してみるとrelease 1と同じように削除ボタンがあり実際に削除でそうに見える。(削除は試してないけど)以下の画像は$ORACLE_HOME/oui/bin/runInstallerを起動したもの。見た目はほとんとrelease 1のOUIと同じだね。
1_2

2_2

11_2

4_4

| | | コメント (0) | トラックバック (0)

Oracle Database 11g Release 2 の de-install tool

Oracle Database 11g Release 2 for Linuxがリリースされたので早速インストールしたがすぐ削除した。このリリースからOracleのアンインストールはOUIから分離されDeinstall toolとして提供されているのでDeinstall toolを先に試してみたかったので。

環境はDynabook SS SX/210LNLW RAM:768MBのCentOS5.3(そう1GBのメモリを要求されていますがRelease 1の時と同様になんとかインストールは可能なようです。お遊びとしてならギリギリ使えそうな環境。

でマニュアルを見てビックリ、commandだけなんですよ。なんとなくOUI以前のインストールを思い出しちゃいますが使い方は凄く簡単でした。削除する$ORACLE_HOMEのパスを指定して別途ダウンロードしておいたdeinstallを実行するか、$ORACLE_HOME/deinstallに移動して引数無しでdeinstallを実行するかの二通り


今回は、deinstall toolを別途ダウンロードし、$ORACLE_HOMEのパスを指定してde-installしてみた。尚、deinstallコマンド実行時listenerとoracle instanceは起動させたままで試してみた。(起動していなくてもいいのだがどうなるか試してみたかったので。)
また例によってLinuxへはMacOS XのTerminalからssh接続して実行。

[oracle@corydoras oracle11gr2]$ ll
合計 32
drwxr-xr-x 8 oracle oinstall 4096 8月 19 04:54 database
drwxr-xr-x 19 oracle oinstall 4096 8月 19 04:51 deinstall
drwxr-xr-x 6 oracle oinstall 4096 8月 19 04:53 examples
drwxr-xr-x 7 oracle oinstall 4096 8月 19 04:58 gateways
[oracle@corydoras oracle11gr2]$ cd deinstall
[oracle@corydoras deinstall]$ deinstall -home /u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
Location of logs /u01/app/oraInventory/logs/

############ ORACLE DEINSTALL & DECONFIG TOOL START ############


######################## CHECK OPERATION START ########################
インストールの構成確認の開始


Oracleホームの場所が存在するかどうかを確認しています /u01/app/oracle/product/11.2.0/dbhome_1
選択された削除対象のOracleホームのタイプ: SIDB
選択された削除対象のOracleベース: /u01/app/oracle
中央インベントリの場所が存在するかどうかを確認しています /u01/app/oraInventory

インストールの構成確認の終了


ネットワーク構成チェック構成START

ネットワーク構成解除トレース・ファイルの場所: /u01/app/oraInventory/logs/netdc_check46396.log

構成解除するすべての単一インスタンス・リスナーを指定してください[LISTENER]:

ネットワーク構成チェック構成END

データベース・チェック構成START

データベース構成解除トレース・ファイルの場所: /u01/app/oraInventory/logs/databasedc_check46397.log

値のリストを入力として指定する場合、セパレータとしてカンマを使用してください

このOracleホームで構成されているデータベース名のリストを指定してください []: glassfish

###### データベース'glassfish' ######

単一インスタンス・データベース
データベースの診断先の場所: /u01/app/oracle/diag/rdbms/glassfish
データベースによって使用される記憶域タイプ: FS
データベース・ファイルの場所: /u01/app/oracle/oradata/glassfish,/u01/app/oracle/flash_recovery_area/glassfish
フラッシュ・リカバリ領域の場所: /u01/app/oracle/flash_recovery_area/GLASSFISH
データベースのspfileの場所: /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileglassfish.ora

データベースglassfishの詳細は自動的に検出されました。glassfishデータベースの詳細を変更しますか。 [n]:

データベース・チェック構成END

Enterprise Manager Configuration Assistant START

EMCA構成解除トレース・ファイルの場所: /u01/app/oraInventory/logs/emcadc_check.log

データベースglassfishの構成を確認しています
Enterprise Manager Configuration Assistant END
Oracle Configuration Manager check START
OCM check log file location : /u01/app/oraInventory/logs//ocm_check3797.log
Oracle Configuration Manager check END

######################### CHECK OPERATION END #########################


####################### CHECK OPERATION SUMMARY #######################
選択された削除対象のOracleホーム: /u01/app/oracle/product/11.2.0/dbhome_1
Oracleホームが登録されているインベントリの場所: /u01/app/oraInventory
次の単一インスタンス・リスナーが構成解除されます: LISTENER
次のデータベースが構成解除対象として選択されました: glassfish
一意のデータベース名: glassfish
使用済記憶域: FS
次のデータベースのEnterprise Managerの構成を更新しますか: glassfish
更新するEnterprise Manager ASMターゲットはありません
移行するEnterprise Managerのリスナー・ターゲットはありません
Checking the config status for CCR
Oracle Home exists with CCR directory, but CCR is not configured
CCR check is finished
続行しますか (y - はい、n - いいえ)[n]: y
このセッションのログは/u01/app/oraInventory/logs/deinstall_deconfig2009-09-10_01-48-33-AM.outに書き込まれます
このセッションのすべてのエラー・メッセージは/u01/app/oraInventory/logs/deinstall_deconfig2009-09-10_01-48-33-AM.errに書き込まれます

######################## CLEAN OPERATION START ########################

Enterprise Manager Configuration Assistant START

EMCA構成解除トレース・ファイルの場所: /u01/app/oraInventory/logs/emcadc_clean.log

データベースglassfishのEnterprise Manager Database Controlの構成の更新
Enterprise Manager ASMターゲットを更新しています(ある場合)
Enterprise Managerのリスナー・ターゲットを更新しています(ある場合)
Enterprise Manager Configuration Assistant END
データベース構成解除トレース・ファイルの場所: /u01/app/oraInventory/logs/databasedc_clean46398.log
データベース・クリーンアップ構成START glassfish
この操作には数分かかります。

データベース・クリーンアップ構成END glassfish

ネットワーク構成クリーニング構成START

ネットワーク構成解除トレース・ファイルの場所: /u01/app/oraInventory/logs/netdc_clean46399.log

単一インスタンス・リスナーの構成解除: LISTENER

リスナーの構成解除: LISTENER
リスナーを停止しています: LISTENER
リスナーの停止に成功しました。
リスナーを削除しています: LISTENER
リスナーは正常に削除されました。
リスナーは正常に構成解除されました。

ネーミング・メソッド構成ファイルの構成解除中です...
ネーミング・メソッド構成ファイルが正常に構成解除されました。

バックアップ・ファイルの構成解除中です...
バックアップ・ファイルが正常に構成解除されました。

ネットワーク構成が正常にクリーンアップされました。

ネットワーク構成クリーニング構成END

Oracle Configuration Manager clean START
OCM clean log file location : /u01/app/oraInventory/logs//ocm_clean3797.log
Oracle Configuration Manager clean END
Oracle Universal Installerクリーンアップの開始

Oracleホーム'/u01/app/oracle/product/11.2.0/dbhome_1'をローカル・ノードの中央インベントリからデタッチします : 終了

ローカル・ノードのディレクトリ'/u01/app/oracle/product/11.2.0/dbhome_1'を削除します : 終了

ローカル・ノード上でOracleベース・ディレクトリ'/u01/app/oracle'は削除されません。ディレクトリはOracleホーム'/u01/app/oracle/product/11.1.0/db_1'で使用中です。

Oracle Universal Installerのクリーンアップが成功しました。

Oracle Universal Installerクリーンアップの終了


Oracleインストール・クリーンアップの開始

インストールのクリーンアップ操作により、ノードcorydorasの一時ディレクトリ/tmp/installを削除しています

Oracleインストール・クリーンアップの終了

デフォルト・プロパティ・ファイル/home/oracle/Desktop/oracle11gr2/deinstall/response/deinstall_OraDb11g_home2.rspを/home/oracle/Desktop/oracle11gr2/deinstall/response/deinstall_OraDb11g_home2.rsp0として移動しました

######################### CLEAN OPERATION END #########################


####################### CLEAN OPERATION SUMMARY #######################
データベースglassfishのEnterprise Managerの構成を更新しました
次のデータベース・インスタンスが正常に構成解除されました: glassfish
次の単一インスタンス・リスナーが正常に構成解除されました: LISTENER
Cleaning the config for CCR
As CCR is not configured, so skipping the cleaning of CCR configuration
CCR clean is finished
Oracleホーム'/u01/app/oracle/product/11.2.0/dbhome_1'がローカル・ノードの中央インベントリから正常にデタッチされました。
ローカル・ノードのディレクトリ'/u01/app/oracle/product/11.2.0/dbhome_1'が正常に削除されました。
Oracle Universal Installerのクリーンアップが成功しました。

Oracleインストールにより、一時ディレクトリが正常にクリーンアップされました。
#######################################################################


############# ORACLE DEINSTALL & DECONFIG TOOL END #############

[oracle@corydoras deinstall]$

でもOUIで削除していたものをなんでcommandとして分離させたのだろう。

マニュアルには理由は書いてくれないので想像するしかないけど。。white paperとか見れば書いてるのかな?

command化されたことによりどんな場面でうれしくなるんだろう。。。。

今回使った感想は、OUIから分離されcommand化されたことによるうれしさは無かったが、OUIの削除ボタンよりは分かりやすいかも。。。

でもやっぱり、deinstall commandってどんな時にうれしく感じるんだろう。。。command化されて良かった!と感じる場面って。

| | | コメント (0) | トラックバック (0)

2009年9月 6日 (日)

MacBook Pro 15inch (MacBookPro3,1)は64bit mode kernelで起動するはずだが・・・・

64bit mode kernelで起動できるのかって話題いろいろと飛び交ってるので、うちのMacBook Pro 15inch(MacBookPro3,1)で確認してみた。現状では起動する条件は整っているように見えるが64bit kernel modeでは起動しない。
以下のチェックではMacBook Pro 15inch (MacBookPro3,1)はSnow Leopardでは64bit mode kernelで起動できるはずだが。。。。(アップルが公表している資料を見る限りでは。。



guppy:˜ oracle$ 
guppy:˜ oracle$
guppy:˜ oracle$ system_profiler SPSoftwareDataType SPHardwareDataType | grep -E '(Mac OS|64-bit|Model Identifier|Processor Name)'
System Version: Mac OS X 10.6 (10A432)
64-bit Kernel and Extensions: No
Model Identifier: MacBookPro3,1
Processor Name: Intel Core 2 Duo

guppy:˜ oracle$ ioreg -l -p IODeviceTree | grep firmware-abi
| | "firmware-abi" = <"EFI64">
guppy:˜ oracle$


なぜ起動しないのだろうとApple Support Forumを検索してみたら。。。どうやら64bit mode kernel起動可能な機種ではあるがfirmwareの不具合であるとうい書き込みを見つけた。。。待つしかないかな。。。ということでひとまず64bit kernelでのお遊びはまたの機会に。

| | | コメント (0) | トラックバック (0)

PL/SQL で Python Challenge Level 18 - 完

ということで、Python Challenge Level18の最終回。
前回報告した通り level 18 はPL/SQLだけで解けます。今回は問題の元ネタの抽出と回答を抽出した後の確認はOSに付属している機能を使ったが大切なのは問題の元ネタから解答を抽出する所なので。

SQL*Plusから実行したストアドプロシージャで問題を解いたところ....例によってヒントになりそうな部分はもやもやさせてます。 :)


Level18_exec

ヒントになりまくりの答えのスナップショット。(これ以外にも私のブログにヒントになる記事もあるのだが・・・・・それは書きませんよ。。。。)

ちなみに絵を見れば分かると思いますが、MacOS XからX11のX forwordingを使って今回利用したLinuxのDesktopを表示/操作しています。X11のxtermからssh -Y user@hostで接続してgnome-sessionを実行しているだけ。


Level18_eureka

Python Challenge Level19へつづく!(?)

| | | コメント (0) | トラックバック (0)

2009年9月 2日 (水)

Opera 10(正式版)で改善されたOpera 10 betaでのtext-shadow表示問題

Safari4.0とFireFox3.5とOpera 10 Beta で text-shadowというタイトルで書いたことがあったが、Opera10が正式リリースされたので前回問題だったtext-shadowの表示を再確認。
結果としては改善されたようでめでたしめでたし。。


Opera 10 betaでのtext-shadowの表示。(text-shadow:1px 2px 3px grayの表示)
Opera10beta

Opera 10(正式版)でのtext-shadowの表示。(text-shadow:1px 2px 3px grayの表示)。
改善されてます!!! ;)

Opera100

| | | コメント (0) | トラックバック (0)

PL/SQL で Python Challenge Level 18 解けた

一年以上間が空いてしまったが・・・Python Challenge Level18はPL/SQLだけで解けますよん。ヒントになるようなならないようなモヤモヤした記事は明日にでも。。

| | | コメント (2) | トラックバック (0)

2009年8月31日 (月)

PL/SQL de O(ND) Difference Algorithm

かなり久々ですが、まあ、シリーズもののネタを毎日アップするのもなかなか難しい状況なので単発ネタでも。

ということで今回は、PL/SQLでAn O(ND) Difference Algorithmを実装して頭の体操。

文書比較のアルゴリズムとしてはAn O(NP) Sequence Comparison Algorithmが効率は良いのだが、先日javascriptで書かれたO(ND)のコードを見つけたことをキッカケにPL/SQLで写経したくなったというわけ。

文書比較アルゴリズムは2、3年くらい前、文書比較アブゴリズムdiff(1)/diff(2)/diff(3)等をみたことがあったが、最近pyhthonやらjavascriptのコードを目にするようになり (^^) な顔して眺めていて時間があったらPL/SQLで遊んでみようと思っていた。。他の言語でやってもMac De Oracle的にはおもしろくないので。

ちなみに、pythonだどdifflib使えば文書比較はできるので実際新たに書く必要はそんなにないんじゃなかろうかとも思うわけですが、私のようにわざわざPL/SQLで書いてみようと思う人間もいるわけで、頭の体操にはいいと思います!。理解するのは大変だったけど。wwww

最近見つけたO(ND)やO(NP)に関するブログ等のリンクは以下。

レコメンデーションとエディットグラフ
diff O(np) javascript implementation
"An O(NP) Sequence Comparison Algorithm" with Python
"An O(NP) Sequence Comparison Algorithm" with Python の添削
Javascriptでdiffる ( with 形態素解析 )
google-diff-match-patch


今回はレコメンデーションとエディットグラフにあるO(ND)コードを写経してPL/SQLでやってみた。O(NP)も集中できる時間があったらやってみたい。。。脳トレにも丁度いいかもよ。。。
※Oracle11g 11.1.0.7.0を使ったが、Oracle10g 10.1.0.3.0以上なら動作するはず。。。。(^^;;;

まずは、結果からどうぞ。O(ND)をPL/SQLストアドファンクション化し、SQLから実行できるようにしてあります。また、pythonのdifflibにあるdifferクラスで利用されている差異コード('?'を除く)を出力するようにしてあります。)

SCOTT> set timi on
SCOTT> l
1 SELECT
2 '"' || diffs.code || diffs.string || '"' AS "diff O(ND) results"
3 FROM
4 TABLE(
5 SELECT diffOND('BFEABD', 'ABCDA') from dual
6 ) diffs
7 ORDER BY
8* diffs.seq DESC
SCOTT> /

diff O(ND) results
--------------------------------------------------------------------------------
"- B"
"- F"
"- E"
" A"
" B"
"+ C"
" D"
"+ A"

8行が選択されました。

経過: 00:00:00.00

SCOTT>
SCOTT> l
1 SELECT
2 '"' || diffs.code || diffs.string || '"' AS "diff O(ND) results"
3 FROM
4 TABLE(
5 SELECT diffOND('aaebdd ', 'aedajkd') from dual
6 ) diffs
7 ORDER BY
8* diffs.seq DESC
SCOTT> /

diff O(ND) results
--------------------------------------------------------------------------------
" a"
"- a"
" e"
"- b"
" d"
"+ a"
"+ j"
"+ k"
" d"
"- "

10行が選択されました。

経過: 00:00:00.00

SCOTT>
SCOTT> l
1 SELECT
2 '"' || diffs.code || diffs.string || '"' AS "diff O(ND) results"
3 FROM
4 TABLE(
5 SELECT diffOND('ABCDE', 'ABCDE') from dual
6 ) diffs
7 ORDER BY
8* diffs.seq DESC
SCOTT> /

diff O(ND) results
--------------------------------------------------------------------------------
" A"
" B"
" C"
" D"
" E"

経過: 00:00:00.00

SCOTT>
SCOTT> l
1 SELECT
2 '"' || diffs.code || diffs.string || '"' AS "diff O(ND) results"
3 FROM
4 TABLE(
5 SELECT diffOND('あいうえお','かきくけこ') from dual
6 ) diffs
7 ORDER BY
8* diffs.seq DESC
SCOTT> /

diff O(ND) results
--------------------------------------------------------------------------------
"- あ"
"- い"
"- う"
"- え"
"- お"
"+ か"
"+ き"
"+ く"
"+ け"
"+ こ"

10行が選択されました。

経過: 00:00:00.00

SCOTT>

PL/SQLのコードは以下の通り。

SCOTT> !cat ond.sql

CREATE OR REPLACE TYPE vRecType AS OBJECT
(
x NUMBER
,y NUMBER
,parent ANYDATA
);
/
show errors

BEGIN
FOR functionNames
IN (SELECT object_name FROM USER_OBJECTS WHERE object_name='DIFFOND' AND OBJECT_TYPE='FUNCTION')
LOOP
EXECUTE IMMEDIATE 'DROP FUNCTION ' || functionNames.object_name;
END LOOP;

FOR typeNames
IN (SELECT type_name FROM USER_TYPES WHERE type_name='DIFFLISTTYPE')
LOOP
EXECUTE IMMEDIATE 'DROP TYPE ' || typeNames.type_name;
END LOOP;
END;
/

CREATE OR REPLACE TYPE diffType AS OBJECT
(
seq NUMBER
,code CHAR(2)
,string VARCHAR2(32767)
);
/
show errors

CREATE OR REPLACE TYPE diffListType AS TABLE OF diffType;
/
show errors

CREATE FUNCTION diffOND
(
str1 IN VARCHAR2
,str2 IN VARCHAR2
)
RETURN diffListType
IS
STAT_INIT CONSTANT PLS_INTEGER := 0;
STAT_X CONSTANT PLS_INTEGER := 1;
STAT_Y CONSTANT PLS_INTEGER := 2;

TYPE vType IS TABLE OF vRecType;
v vType := vType();

FUNCTION isVRecNotEmpty(
vRec IN vRecType
)
RETURN BOOLEAN
IS
BEGIN
RETURN (CASE WHEN vRec.x IS NULL AND vRec.y IS NULL AND vRec.parent IS NULL THEN FALSE ELSE TRUE END);
END isVRecNotEmpty;

FUNCTION getDirection
(
vMinus IN vRecType
,vPlus IN vRecType
)
RETURN PLS_INTEGER
IS
BEGIN
IF NOT isVRecNotEmpty(vMinus) AND NOT isVRecNotEmpty(vPlus) THEN
RETURN STAT_INIT;
END IF;

IF NOT isVRecNotEmpty(vMinus) THEN
RETURN STAT_X;
END IF;

IF NOT isVRecNotEmpty(vPlus) THEN
RETURN STAT_Y;
END IF;

RETURN (CASE WHEN vMinus.x < vPlus.x THEN STAT_X ELSE STAT_Y END);
END getDirection;

FUNCTION OND
(
str1 IN VARCHAR2
,str2 IN VARCHAR2
)
RETURN vRecType
IS
offset PLS_INTEGER;
kMax PLS_INTEGER;
kMin PLS_INTEGER;
k PLS_INTEGER;
vIndex PLS_INTEGER;
x PLS_INTEGER;
y PLS_INTEGER;
str1Len PLS_INTEGER;
str2Len PLS_INTEGER;
parent vRecType;
BEGIN
str1Len := LENGTH(str1);
str2Len := LENGTH(str2);
v.EXTEND(str1Len + str2Len + 3);
offset:= str2Len + 2;

FOR d IN 0..str1Len + str2Len LOOP
kMax := (CASE WHEN d <= str1Len THEN d ELSE str1Len - (d - str1Len) END);
kMin := (CASE WHEN d <= str2Len THEN d ELSE str2Len - (d - str2Len) END);

k := kMin * -1;
WHILE k <= kMax LOOP
vIndex := offset + k;
CASE getDirection(v(vIndex-1), v(vIndex+1))
WHEN STAT_INIT THEN
x := 0;
y := 0;
parent := vRecType(0, 0, NULL);
WHEN STAT_X THEN
x := v(vIndex+1).x;
y := v(vIndex+1).y + 1;
parent := v(vIndex+1);
WHEN STAT_Y THEN
x := v(vIndex-1).x + 1;
y := v(vIndex-1).y;
parent := v(vIndex-1);
END CASE;

-- snake
WHILE (x < str1Len AND y < str2Len)
AND (SUBSTR(str1, x+1, 1) = SUBSTR(str2, y+1, 1))
LOOP
x := x + 1;
y := y + 1;
END LOOP;
v(vIndex) := vRecType(x, y, ANYDATA.ConvertObject(parent));

IF str1Len <= x AND str2Len <= y THEN
RETURN v(vIndex);
END IF;

k := k + 2;
END LOOP;
END LOOP;
END OND;

FUNCTION diff
(
str1 IN VARCHAR2
,str2 IN VARCHAR2
)
RETURN diffListType
IS
endPoint vRecType;
parent vRecType;
diff_x PLS_INTEGER;
diff_y PLS_INTEGER;
same_len PLS_INTEGER;
isSuccessGetObject PLS_INTEGER;
diffs diffListType := diffListType();
seq PLS_INTEGER := 0;
BEGIN
endPoint := OND(str1, str2);
WHILE endPoint.parent IS NOT NULL LOOP
IF ANYDATA.getObject(endPoint.parent, parent) != DBMS_TYPES.SUCCESS THEN
RAISE_APPLICATION_ERROR(-20000,'DBMS_TYPES.NO_DATA');
END IF;

diff_x := endPoint.x - parent.x;
diff_y := endPoint.y - parent.y;
same_len := CASE WHEN diff_x <= diff_y THEN diff_x ELSE diff_y END;

FOR i IN 0..same_len-1 LOOP
-- common
diffs.EXTEND();
seq := seq + 1;
diffs(diffs.COUNT()) := diffType(seq, ' ', SUBSTR(str1, endPoint.x-i, 1));
END LOOP;

IF diff_y != diff_x THEN
diffs.EXTEND();
seq := seq + 1;
IF diff_y < diff_x THEN
-- del
diffs(diffs.COUNT()) := diffType(seq, '- ', SUBSTR(str1, parent.x+1, 1));
ELSE
-- add
diffs(diffs.COUNT()) := diffType(seq, '+ ', SUBSTR(str2, parent.y+1, 1));
END IF;
END IF;

endPoint := parent;
END LOOP;

RETURN diffs;
END diff;
BEGIN
RETURN diff(str1, str2);
END diffOND;
/
show errors

Enjoy PL/SQL! というより Enjoy Programming! のほうがいいか。。

| | | コメント (0) | トラックバック (0)

2009年8月 5日 (水)

Dashboard de Aquarium v1.4 - ついにTop50ランク外へ

ついにTop50ランク外に,,,短かったような長かったような...

3

| | | コメント (0) | トラックバック (0)

2009年7月31日 (金)

Dashboard de Aquarium v1.4 - Apple Japanでも公開されました

Apple USから遅れること2週間ほど、Apple JapanでもDashboard de Aquarium v1.4が公開されました。

3

| | | コメント (0) | トラックバック (0)

Dashboard de Aquarium v1.4 - #46

今日のDashboard de Aquarium v1.4は46位。やはり、なんとかふんばっている。:)

1

| | | コメント (0) | トラックバック (0)

2009年7月30日 (木)

Dashboard de Aquarium v1.4 - #46

今日のDashboard de Aquarium v1.4は46位。もしかして暫くこのぐらいの位置でふんばるかも・・・

1

| | | コメント (0) | トラックバック (0)

2009年7月29日 (水)

Dashboard de Aquarium v1.4 - #47

今日のDashboard de Aquarium v1.4は47位。ん〜、予想以上に持ちこたえているな〜。

2

| | | コメント (0) | トラックバック (0)

2009年7月28日 (火)

Dashboard de Aquarium v1.4 - #46

今日のDashboard de Aquarium v1.4は46位。もうしばらくがんばれるかな。

1

| | | コメント (0) | トラックバック (0)

2009年7月25日 (土)

Dashboard de Aquarium v1.4 - #44

今日のDashbaord de Aquarium v1.4 は 44位、なんとか踏ん張りチウ

3

| | | コメント (0) | トラックバック (0)

2009年7月24日 (金)

Dashboard de Aquarium v1.4 - #45

Dashboard de Aquarium v1.4 今日は45位、順調に下降ちう。

2

| | | コメント (0) | トラックバック (0)

2009年7月21日 (火)

Dashboard de Aquarium v1.4 - #38

Dashboard de Aquarium v1.4 本日は、38位と乱高下ちう。w


22

| | | コメント (0) | トラックバック (0)

2009年7月18日 (土)

Dashboard de Aquarium v1.4 - #26

Dashboard de Aquarium v1.4 本日はなんと26位にジャンプアップ。:)

16

| | | コメント (0) | トラックバック (0)

2009年7月17日 (金)

Dashboard de Aquarium v1.4 - #48

Dashboard de Aauarium v1.4 ちょっとだけランクアップで48位

15

| | | コメント (0) | トラックバック (0)

2009年7月16日 (木)

Dashboard Top50 - ギリギリランクイン w

Dashboard de Aquarium v1.4が、Apple(US) で公開されて。ギリギリ Top 50にランクイン。

13

| | | コメント (0) | トラックバック (0)

2009年7月11日 (土)

Dashboard de Aquarium v1.4 released!

Dashboard de Aquarium v1.6 released. :) (v1.6リリースしました 2012/01/01)

Dashboard de Aquarium v1.4をリリースしました。今回のリリースではwidgetサイズを縮小したついでにRed Sailfin mollyを追加しました。
(Dashboard de Aquarium v1.4 released.
What's new in this version : Reduced widget size a little and added Red Sailfin Molley.)

Download Dashboard De Aquarium v1.4 Now!
Download! v1.4 dashboard_de_aquarium.zip (904KB)

Dashboard de Aquarium v1.6 released.
(v1.6リリースしました 2012/01/01)

日本語(Japanese):
"Mac OS X 10.4 Tiger以降が必要です。ダウンロードにSafariを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。Safari以外のブラウザを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、解凍したウィジェットを /ライブラリ/Widgets/ フォルダに配置してください。ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。"

English:
"Mac OS X 10.4 Tiger or later is required. If you’re using Safari, click the download link. When the widget download is complete, show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it. If you’re using a browser other than Safari, click the download link. When the widget download is complete, unarchive it and place it in /Library/Widgets/ in your home folder. show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it."


動作確認した機種とMacOSXのバージョンは以下の通り。
(H/W models and the version of MacOSX that I checked the operation as follows.)

System Requirements : MacOSX Tiger 10.4 or later -- Freeware.

PowerBook G4 1Ghz - MacOSX 10.4.11 (Tiger)
PowerMac G5 Dual 2.7Ghz - MacOSX 10.4.11 (Tiger)
MacBook Pro 2.2Ghz Core 2 Duo - MacOSX 10.5.6 (Leopard) / MacOSX 10.6 (Snow Leopard)

Mixed_jaNeontetra_ja
Discus_jaWild_king_solid_blue_f1_ja
Licksons_red_spotted_jaHides_wild_blue_wild_brown_ja
9
10

Note: 国際化対応しています。言語環境が英語であれば以下のように表示されます。
(Internationalized. When language setting is in English, it's displayed as follows.)

MixedNeontetra
DiscusWild_king_solid_blue_f1
Licksons_red_spottedHides_wild_blue_wild_brown
Picture_1
Picture_2

| | | コメント (0) | トラックバック (0)

2009年7月10日 (金)

Dashboard de Aquarium v1.4 少々改造

前回リリースしたDashboard de Aquarium v1.3で使っているディスカスの画像が大きくその影響もありwidgetサイズが大きかったので少々小さくしました。ついでなのでRed Sailfin mollyを追加でテスト完。ということでUSと日本のAppleへアップデート依頼する予定。
(問題なければUSはほぼ翌日にリリースされると思うが、日本は2〜3週間かかるのが通常の動き)


言語環境:日本語の場合
9

10

言語環境:英語の場合
Picture_1

Picture_2

v1.3のwidgetサイズ
11_2

v1.4のサイズ
12

| | | コメント (0) | トラックバック (0)

2009年7月 1日 (水)

Safari4.0とFireFox3.5とOpera 10 Beta で text-shadow

いままでtext-shadowをサポートしているブラウザはSafariだけだったけど、FireFox3.5やOpera 10 betaでもサポートしてくれたんですね。ということで現時点での比較。

Safari 4.0 (Build4530.17)
いつも見慣れたstyle="text-shadow:1px 2px 3px gray"は以下のように表示される。

1

本日リリースされたばかりのFireFox 3.5
Safari4.0と比べても違和感なし。:)

3

最後にOpera 10 Beta
見ての通りかなり強烈。目が疲れる。Beta版だからな〜ということで正式リリース時にはなんとかしてくれるのでしょうね。多分。

4

| | | コメント (0) | トラックバック (0)

2009年6月29日 (月)

MacBook Pro と MacOS X 10.5.7 と Sleep と Hang-up

Macオンリーな話題です。

先日、MacBook ProのMacOS X 10.5.6を10.5.7にアップデートしてからSleepさせるとファンがスリープせずファンが凄い勢いで廻りっぱなしになったり、ハングアップしまくっていた。おかしいね、アップデータが問題なんだろうねと話していたら、すかさず、アップデータのアップデータが出ていたのでアップデートした。
すると、ファンが凄い勢いで廻りっぱなしになる現象は消えたものの99%の確立でSleepさせようとするとハングアップするようになった。なんだよ〜〜早くバグ直せ〜〜とAppleさんにお怒りモードの私。

しばらく考えこんだあげく、Apple Supportのforumを検索してみると日本のフォーラムには無かったが、USのフォーラムにはそれらしき対処方法があった。。。。。
ということで先日から試しているが、それ以降一度もハングしていない!!!!
やった〜〜〜。

とにかくAppleさん、ちゃんとバグ修正してね!!

以下、症状と対処方法を書いておきます。


症状:
MacBook Pro 15inchでMacOS X 10.5.7へアップデート後からSleepさせようとするとハングアップする。ハングアップしたまま冷却ファンが凄い勢いで廻りっぱなしになる。

Hang_when_sleep_002_2

対処方法:
システム環境設定→ネットワーク

Hang_when_sleep_001

左側のネットワークポートペインにイーサネットポートがリストされていない場合、本現象に遭遇する。"+"ボタンで使っていなくてもイーサーネットポートを追加する。
Hang_when_sleep_003
Hang_when_sleep_004
Hang_when_sleep_005

イーサーネットポートを追加したらOSを再起動する。このような対処でSleepさせようとするとhangしてしまう問題を回避できる。
(対処から4日経過したがいまのところ問題は再発していない。もし状況に変化があれば本記事を更新する予定。)

| | | コメント (0) | トラックバック (0)

2009年6月 9日 (火)

Safariのタブの位置がSafari 3と同じ場所で落ち着いた

Safari 4が正式リリースされたのでSafari 4 Betaから変更したらタブの位置がSafari 3までの所に。使い勝手はそのほうがいいもんね。

Safari 3
1_3

Safari 4 Beta - Windowのフレームなのかタブなのか微妙になってた。
7

Safari 4 - 正式リリースでタブは元の位置に。
2

| | | コメント (0) | トラックバック (0)

2009年6月 8日 (月)

OraTweet 1.0 あそび始めた。

OraTweet v1.0が公開されたということなので早速試してみた。といってもちょっとだけ。細かいところはみてないけどとりあえずは日本語も使えるみたい。ちょうどPL/SQL gatewayからTwitter APIを使って遊んでみようと思っていたところだから少し遊ぶか。
Oratweet01_2

Oratweet02

| | | コメント (0) | トラックバック (0)

2009年6月 5日 (金)

Leopard de Oracle10g R2 (Intel x86-64) #18 (APEX3.2と遊ぶ #11)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第十話。

Oracle HTTP ServerとPL/SQL gatewayをORACLE_HOMEごとPowerMacからIntel Mac移動して、Intel Macへインストール、構築したOracle 10g R2 10.2.0.4.0 for MacOSX(Intel x86-64) + APEX3.2へアクセスしちゃいます。RosettaがPowerPC版のOracle HTTP Server mod_plsqlをIntel Mac上で動かしてくれます。


まず、MacBook Proのオラクル所有者の環境変数の設定などはLeopard de Oracle10g R2 (Intel x86-64) #2の設定に加え、Oracle HTTP Server向けaliasと環境変数を追加。
ちなみに、/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apexをIntel Mac上でのAPExのHOMEディレクトリとしてOracle HTTP Serverを起動、停止スクリプトをaliasとして定義。(Oracle 10g R1 10.1.0.3.0 for MacOSXのCompanionCDでインストールされるOracle HTTP Serverは ORACLE_HOME(Oracle HTTP Serverの)/opmn/bin/opmnctl stopall 又は startallではなくORACLE_HOME(Oracle HTTP Serverの)/Apache/Apache/bin/apachectl start又はstopで起動/停止できます。)

guppy:˜ oracle$ cat .bashrc
alias ll='ls -lv'
alias startohs='$ORACLE_HTMLDB_HOME/bin/apachectl start'
alias stopohs='$ORACLE_HTMLDB_HOME/bin/apachectl stop'

export LANG=ja_JP.UTF-8
export ORACLE_BASE=/Users/shared/u01/app/oracle
export ORACLE_SID=leopard1
export ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
export NLS_LANG=Japanese_Japan.AL32UTF8
export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/network/lib:$DYLD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

#for Oracle11g and Jdeveloper Oracle Middleware HOME
export ORACLE_MIDDLEWARE_HOME=/Users/Shared/Oracle/Middleware

#for Oracle10g R1 Oracle HTTP ServerHome (include mod_plsql)
export ORACLE_HTMLDB_HOME=/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache
guppy:˜ oracle$

次に、PowerPC上でzipしたORACLE HTTP ServerのORACLE_HOMEディレクトリ以下を丸ごとIntel Mac上のOracle HTTP ServerのあたらしいHOMEディレクトリへ移動します。移動方法はrcpでもいいし、環境によってはscpでもいいしUSBメモリ経由でもmobileme経由でもお好きな方法でIntel Macへコピー/解凍します。PowerPC上のORACLE HTTP Serverホームディレクトリ以下は不要なのでHOMEディレクトリごと削除するもよし、ちゃんとOUIで削除してもいいですよん。
以下、MacBook Pro上で解凍した状態。MacBook Pro上のあたらしいHOMEディレクトリは、/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex



1

APEX3.2のimagesディレクトリのコピー。
APEX3.2のimagesディレクトリでOracle HTTP Serverのホームディレクトリ/marvel以下にあるimagesディレクトリを置き換えます。
この作業はAPEXのアップデート作業でもよく作業なのでお忘れなく。HTML DB1.5をAPEX3.2にアップデートしたようなものなので。

guppy:apex oracle$ pwd
/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/marvel
guppy:marvel oracle$ ls
10ins.sql core doc ins.sql jlib readme.html upgrade.sql
builder coreins.sql images install.lst logs sbs utilities
guppy:marvel oracle$ mv images images_htmldb_1_5
guppy:marvel oracle$ cp -rf /Users/oracle/Downloads/apex/images .
guppy:marvel oracle$


.confファイルの変更
ここからがメイン。PowerPC上でインストール構築したので各種.confファイルなどのパスはホスト名がPowerPC上の値に設定されています。それら全てを移動してきたMacBook Pro(Intel x86)上の値に変更していきます。
最初はOracle HTTP Server向けコンフィグファイルから。(全てのconfファイルを確認し要変更と確定できた変更前の*.confファイルは、*.conf.15として退避しておくことにします。)

/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apexは、MacBook Pro上でのOracle HTTP Serverのホームディレクトリ。


guppy:conf oracle$ pwd

/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf
guppy:conf oracle$
guppy:conf oracle$ ll
total 680
-rwxr-xr-x 1 oracle oinstall 348 11 16 2004 access.conf
-rwxr-xr-x 1 oracle oinstall 348 11 16 2004 access.conf.default
-rw------- 1 oracle oinstall 1623 5 18 14:16 dms.conf
-rw------- 1 oracle oinstall 1633 5 18 14:14 dms.conf.15
-rw------- 1 oracle oinstall 1626 7 2 2004 dms.conf.sbs
-rwxr-xr-x 1 oracle oinstall 41721 5 18 14:41 httpd.conf
-rwxr-xr-x 1 oracle oinstall 42011 5 18 14:16 httpd.conf.15
-rwxr-xr-x 1 oracle oinstall 42011 5 17 12:23 httpd.conf.default
-rwxr-xr-x 1 oracle oinstall 39710 12 17 2004 httpd.conf.tmp
-rwxr-xr-x 1 oracle oinstall 12965 11 16 2004 magic
-rwxr-xr-x 1 oracle oinstall 12965 11 16 2004 magic.default
-rwxr-xr-x 1 oracle oinstall 15161 11 16 2004 mime.types
-rwxr-xr-x 1 oracle oinstall 15161 11 16 2004 mime.types.default
-rw-r--r-- 1 oracle oinstall 484 5 18 14:42 mod_oc4j.conf
-rw-r--r-- 1 oracle oinstall 490 5 18 14:41 mod_oc4j.conf.15
-rw-r--r-- 1 oracle oinstall 490 5 17 12:25 mod_oc4j.conf.default
-rw-r--r-- 1 oracle oinstall 503 7 2 2004 mod_oc4j.conf.tmp
-rwxr-xr-x 1 oracle oinstall 779 5 17 12:23 mod_osso.conf
-rwxr-xr-x 1 oracle oinstall 779 12 17 2004 mod_osso.conf.tmp
-rwxr-xr-x 1 oracle oinstall 323 5 17 12:23 ohs_opmn.xml
-rwxr-xr-x 1 oracle oinstall 323 12 17 2004 ohs_opmn.xml.sbs
-rwxr-xr-x 1 oracle oinstall 566 5 18 14:44 ohstarget.xml
-rwxr-xr-x 1 oracle oinstall 575 5 18 14:44 ohstarget.xml.15
-rwxr-xr-x 1 oracle oinstall 585 12 17 2004 ohstarget.xml.tmp
-rwxr-xr-x 1 oracle oinstall 197 5 18 14:45 oracle_apache.conf
-rwxr-xr-x 1 oracle oinstall 217 5 18 14:45 oracle_apache.conf.15
drwxr-xr-x 2 oracle oinstall 68 5 17 12:23 osso
-rwxr-xr-x 1 oracle oinstall 357 11 16 2004 srm.conf
-rwxr-xr-x 1 oracle oinstall 357 11 16 2004 srm.conf.default
-rwxr-xr-x 1 oracle oinstall 7861 5 18 14:51 ssl.conf
-rwxr-xr-x 1 oracle oinstall 8016 5 18 14:46 ssl.conf.15
-rwxr-xr-x 1 oracle oinstall 7192 12 17 2004 ssl.conf.tmp
drwxr-xr-x 4 oracle oinstall 136 5 17 12:23 ssl.crl
drwxr-xr-x 3 oracle oinstall 102 5 17 12:23 ssl.wlt
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ ls *.*.15
dms.conf.15 httpd.conf.15 mod_oc4j.conf.15
ohstarget.xml.15 oracle_apache.conf.15 ssl.conf.15

guppy:conf oracle$
guppy:conf oracle$

以下、変更したconfファイルのdiff。


PowerPC上のORACLE_HOMEのパスとIntel Mac上のパスが異なるのでパス関連及び、ホスト名関連は変更対象。


例えば、PowerMac G5上でOracle HTTP Server用のORACLE_HOMEは

/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex


だったが、Intel Mac上では
/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex
とした。

guppy:conf oracle$
guppy:conf oracle$ diff dms.conf.15 dms.conf
30c30
< Alias /index.html /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/htdocs/index.html
---
> Alias /index.html /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/htdocs/index.html
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff mod_oc4j.conf.15 mod_oc4j.conf
15c15
< Allow from localhost g5server g5server
---
> Allow from localhost guppy guppy
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff ohstarget.xml.15 ohstarget.xml
5c5
< <Property NAME="OracleHome" VALUE="/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex"/>
---
> <Property NAME="OracleHome" VALUE="/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex" />
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff httpd.conf.15 httpd.conf
65c65
< ServerRoot "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache"
---
> ServerRoot "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache"
76c76
< #LockFile /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.lock
---
> #LockFile /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.lock
82c82
< PidFile /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.pid
---
> PidFile /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.pid
90c90
< ScoreBoardFile /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.scoreboard
---
> ScoreBoardFile /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.scoreboard
321c321
< ServerName g5server
---
> ServerName guppy
328c328
< DocumentRoot "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/htdocs"
---
> DocumentRoot "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/htdocs"
353c353
< <Directory "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/htdocs">
---
> <Directory "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/htdocs">
456c456
< TypesConfig /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/mime.types
---
> TypesConfig /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/mime.types
482c482
< MIMEMagicFile /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/magic
---
> MIMEMagicFile /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/magic
502c502
< ErrorLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/error_log
---
> ErrorLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/error_log
547c547
< CustomLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/access_log common
---
> CustomLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/access_log common
553,554c553,554
< #CustomLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/referer_log referer
< #CustomLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/agent_log agent
---
> #CustomLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/referer_log referer
> #CustomLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/agent_log agent
560c560
< #CustomLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/access_log combined
---
> #CustomLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/access_log combined
582,584c582,584
< Alias /icons/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/icons/"
< Alias /jservdocs/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Jserv/docs/"
< Alias /javacachedocs/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/javacache/javadoc/"
---
> Alias /icons/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/icons/"
> Alias /jservdocs/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Jserv/docs/"
> Alias /javacachedocs/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/javacache/javadoc/"
586c586
< Alias /perl/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin/"
---
> Alias /perl/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin/"
589c589
< <Directory "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/icons">
---
> <Directory "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/icons">
604c604
< ScriptAlias /cgi-bin/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin/"
---
> ScriptAlias /cgi-bin/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin/"
608c608
< # "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin" should be changed to whatever your ScriptAliased
---
> # "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin" should be changed to whatever your ScriptAliased
611c611
< <Directory "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin">
---
> <Directory "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin">
824a825,826
> AddType text/xml .xbl
> AddType text/x-compoment .htc
938c940
< Allow from localhost g5server g5server
---
> Allow from localhost quppy guppy
950c952
< # Allow from localhost g5server g5server
---
> # Allow from localhsot guppy guppy
989c991
< # CacheRoot "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/proxy"
---
> # CacheRoot "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/proxy"
1038c1040
< SetEnv PERL5LIB "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/lib/5.6.1:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/lib/site_perl/5.6.1"
---
> SetEnv PERL5LIB "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/lib/5.6.1:
/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/lib/site_perl/5.6.1"
1047c1049
< # PerlSetEnv PERL5LIB "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/lib/5.6.1:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/lib/site_perl/5.6.1"
---
> # PerlSetEnv PERL5LIB "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/lib/5.6.1:
/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/lib/site_perl/5.6.1"
1084,1086c1086,1088
< Alias /fastcgi/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/fastcgi/"
< ScriptAlias /fcgi-bin/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/fcgi-bin/"
< <Directory "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/fcgi-bin">
---
> Alias /fastcgi/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/fastcgi/"
> ScriptAlias /fcgi-bin/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/fcgi-bin/"
> <Directory "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/fcgi-bin">
1104c1106
< #include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Jserv/etc/jserv.conf"
---
> #include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Jserv/etc/jserv.conf"
1128c1130
< Allow from localhost g5server g5server
---
> Allow from localhost guppy guppy
1134c1136
< Allow from localhost g5server g5server
---
> Allow from localhost guppy guppy
1139c1141
< include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/mod_oc4j.conf"
---
> include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/mod_oc4j.conf"
1142c1144
< include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/dms.conf"
---
> include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/dms.conf"
1148c1150
< include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.conf"
---
> include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.conf"
1151c1153
< #include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/mod_osso.conf"
---
> #include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/mod_osso.conf"
1154c1156
< include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/oracle_apache.conf"
---
> include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/oracle_apache.conf"
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff oracle_apache.conf.15 oracle_apache.conf
1,2c1,2
< include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf/plsql.conf"
< include "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf/marvel.conf"
---
> include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/conf/plsql.conf"
> include "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/conf/marvel.conf"
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff ssl.conf.15 ssl.conf
23,25c23,25
< #SSLSessionCache dbm:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_scache
< #SSLSessionCache shmht:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_scache(512000)
< SSLSessionCache shmcb:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_scache(512000)
---
> #SSLSessionCache dbm:/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_scache
> #SSLSessionCache shmht:/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_scache(512000)
> SSLSessionCache shmcb:/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_scache(512000)
36c36
< SSLMutex file:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_mutex
---
> SSLMutex file:/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_mutex
45c45
< SSLLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_engine_log
---
> SSLLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_engine_log
81,85c81,85
< DocumentRoot "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/htdocs"
< ServerName g5server
< ServerAdmin you@your.address
< ErrorLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/error_log
< TransferLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/access_log
---
> DocumentRoot "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/htdocs"
> ServerName guppy
> ServerAdmin your@mail.address
> ErrorLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/error_log
> TransferLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/access_log
100c100
< SSLWallet file:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.wlt/default
---
> SSLWallet file/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.wlt/default
117,118c117,118
< #SSLCARevocationPath /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.crl
< #SSLCARevocationFile /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.crl/ca-bundle.crl
---
> #SSLCARevocationPath /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.crl
> #SSLCARevocationFile /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf/ssl.crl/ca-bundle.crl
177c177
< <Directory "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin">
---
> <Directory "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/cgi-bin">
186c186
< CustomLog /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_request_log \
---
> CustomLog /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/ssl_request_log \
guppy:conf oracle$


modplsql関連コンフィグファイルの変更
パスの変更とPlsqlDatabaseUsernameとPlsqlDefaultPageの値が変っているので注意。また接続先は、MacBook proにインストールしたOracle 10g R2 10.2.0.4.0 for MacOSX(Intel x86-64)になるので忘れずに変更する。

変更対象の.confファイルは予め、*.conf.15として退避しておいた。

guppy:conf oracle$ pwd
/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/conf
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff cache.conf.15 cache.conf
12c12
< PlsqlCacheDirectory /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/cache
---
> PlsqlCacheDirectory /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/cache
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff marvel.conf.15 marvel.conf
1,2c1,2
< Alias /i/ "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/marvel/images/"
< <Location /pls/htmldb>
---
> Alias /i/ "/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/marvel/images/"
> <Location /pls/apex>
7c7
< PlsqlDatabaseUsername HTMLDB_PUBLIC_USER
---
> PlsqlDatabaseUsername APEX_PUBLIC_USER
9,10c9,10
< PlsqlDatabaseConnectString localhost:1521:tiger.macdeoracle.info ServiceNameFormat
< PlsqlDefaultPage htmldb
---
> PlsqlDatabaseConnectString localhost:1521:leopard1.macdeoracle.jp ServiceNameFormat
> PlsqlDefaultPage apex
15c15
< PlsqlNLSLanguage AMERICAN_AMERICA.AL32UTF8
---
> PlsqlNLSLanguage JAPANESE_JAPAN..AL32UTF8
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$
guppy:conf oracle$ diff plsql.conf.15 plsql.conf
9c9
< LoadModule plsql_module /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/bin/modplsql.so
---
> LoadModule plsql_module /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/bin/modplsql.so
20c20
< PlsqlLogDirectory /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/logs
---
> PlsqlLogDirectory /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/logs
29c29
< include /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf/dads.conf
---
> include /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/conf/dads.conf
34c34
< include /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf/cache.conf
---
> include /Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/modplsql/conf/cache.conf
guppy:conf oracle$


Oracle HTTP ServerのHOMEディレクトリ以下にあるtnsnames.oraもMacBook ProのOracle 10g R2へ接続するよう変更(念のため)

変更前のtnsnames.oraはtnsnames.ora.15として事前に退避しておいた。

guppy:admin oracle$ pwd
/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/network/admin
guppy:admin oracle$
guppy:admin oracle$
guppy:admin oracle$ guppy:admin oracle$ diff tnsnames.ora.15 tnsnames.ora
1c1
< (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=tiger.macdeoracle.info))) =
---
> (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=leopard1.macdeoracle.jp))) =
7,16c7
< (SERVICE_NAME = tiger.macdeoracle.info)
< )
< )
< (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=tiger.macdeoracle.info))) =
< (DESCRIPTION =
< (ADDRESS_LIST =
< (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
< )
< (CONNECT_DATA =
< (SERVICE_NAME = tiger.macdeoracle.info)
---
> (SERVICE_NAME = leopard1.macdeoracle.jp)
guppy:admin oracle$

apache起動用シェルスクリプトの書き換え(パスの変更が主)

要変更と判断したshell scriptは事前に、*.15として退避しておいた。

guppy:bin oracle$ pwd
/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/bin
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$ diff apachectl.15 apachectl
25,26c25,26
< ORACLE_HOME=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex; export ORACLE_HOME
< NLS_LANG=${NLS_LANG="JAPANESE_JAPAN.JA16EUC"}; export NLS_LANG
---
> ORACLE_HOME=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex; export ORACLE_HOME
> NLS_LANG=${NLS_LANG="JAPANESE_JAPAN.AL32UTF8"}; export NLS_LANG
29c29
< PERL5LIB=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/lib/5.8.3:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/lib/site_perl/5.8.3 ; export PERL5LIB
---
> PERL5LIB=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/lib/5.8.3:
/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/lib/site_perl/5.8.3; export PERL5LIB
32c32
< TNS_ADMIN=${TNS_ADMIN="/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/network/admin"}; export TNS_ADMIN
---
> TNS_ADMIN=${TNS_ADMIN="/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/network/admin"}; export TNS_ADMIN
37c37
< LD_LIBRARY_PATH=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/lib:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/opmn/lib ; export LD_LIBRARY_PATH
---
> LD_LIBRARY_PATH=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/lib:
/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/opmn/lib; export LD_LIBRAR_PATH
39c39
< LD_LIBRARY_PATH=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/lib:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/opmn/lib:${LD_LIBRARY_PATH} ; export LD_LIBRARY_PATH
---
> LD_LIBRARY_PATH=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/lib:
/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/opmn/lib:${LD_LIBRARY_PATH}; export LD_LIBRARY_PATH
45c45
< DYLD_LIBRARY_PATH=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/lib:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/opmn/lib ; export DYLD_LIBRARY_PATH
---
> DYLD_LIBRARY_PATH=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/lib:
/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/opmn/lib; export DYLD_LIBRARY_PATH
47c47
< DYLD_LIBRARY_PATH=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/lib:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/opmn/lib:${DYLD_LIBRARY_PATH} ; export DYLD_LIBRARY_PATH
---
> DYLD_LIBRARY_PATH=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/lib:
/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/opmn/lib:${DYLD_LIBRARY_PATH}; export DYLD_LIBRARY_PATH
52c52
< PIDFILE=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.pid
---
> PIDFILE=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/httpd.pid
55c55
< HTTPD=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/bin/httpd
---
> HTTPD=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/bin/httpd
91c91
< if eval $HTTPD -d /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache $args
---
> if eval $HTTPD -d /Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache $args
129c129
< if eval $HTTPD -d /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache $args
---
> if eval $HTTPD -d /Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache $args
149c149
< if eval $HTTPD -d /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache -t $args > /dev/null
---
> if eval $HTTPD -d /Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache -t $args > /del/null
261c261
< if eval $HTTPD -d /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache -t "$args"
---
> if eval $HTTPD -d /Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache -t "$args"
guppy:bin oracle$

以下、apachectlと同じディレクトリにあるが利用されているか不明なシェルスクリプトもとりあえず変更した。

guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$ diff apxs.15 apxs
1c1
< #!/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/bin/perl
---
> #!/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/bin/perl
78,79c78,79
< my $CFG_PREFIX = q(/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache);
# substituted via APACI install
< my $CFG_SBINDIR = q(/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/bin);
# substituted via APACI install
---
> my $CFG_PREFIX = q(/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache);
> my $CFG_SBINDIR = q(/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/bin);
81,82c81,82
< my $CFG_LIBEXECDIR = q(/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/libexec);
# substituted via APACI install
< my $CFG_SYSCONFDIR = q(/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/conf);
# substituted via APACI install
---
> my $CFG_LIBEXECDIR = q(/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/libexec);
> my $CFG_SYSCONFDIR = q(/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/conf);
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$ diff dbmmanage.15 dbmmanage
1c1
< #!/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/bin/perl
---
> #!/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/bin/perl
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$ diff iasobf.15 iasobf
11c11
< ORACLE_HOME=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex
---
> ORACLE_HOME=/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$ diff log_server_status.15 log_server_status
1c1
< #!/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/perl/bin/perl
---
> #!/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/perl/bin/perl
70c70
< $wherelog = "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/graph/";
# Logs will be like "/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/logs/graph/19960312"
---
> $wherelog = "/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/graph/";
# Logs will be like "/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/logs/graph/19960312"
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$ diff root_sh_append.sh.15 root_sh_append.sh
3c3
< ORACLE_HOME="/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex";export ORACLE_HOME
---
> ORACLE_HOME="/Users/shared/u01/app/oracle/oracle/product/10.1.0/apex"; export ORACLE_HOME
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$
guppy:bin oracle$ diff ssl2ossl.15 ssl2ossl
8c8
< ORACLE_HOME=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex
---
> ORACLE_HOME=Users/shared/u01/app/oracle/oracle/product/10.1.0/apex
guppy:bin oracle$


実行してみる(listenerおよびOracle Databaseインスタンスは起動ずみ)
尚、startohsは、apachectl startをalias定義しておいたもの(本エントリの最初の部分参照)

guppy:˜ oracle$ startohs
/Users/Shared/u01/app/oracle/oracle/product/10.1.0/apex/Apache/Apache/bin/apachectl start: httpd started
guppy:˜ oracle$


まずOralce HTTP Serverにアクセスしてみる・・・・OK.

4


APEX3.2の管理画面にアクセスしてログイン.....OK
ログインしたついでに開発ユーザと作業領域を作成しておく。


5

6

13

14


開発ユーザでログインしてみる。......OK。やった〜〜〜!!!!! うまくいった

15

16


最後にバージョン等も確認しておく。

3


19

「Oracle 10g R2 10.2.0.4.0 for MacOSX (Intel x86-64)で未サポートとなっているOracle HTTP ServerとPL/SQL gatewayをOracle 10g R1 10.1.0.3.0 for MacOSX (PowerPC)環境から移動し、Rosettaの力でそれらを動かしてAPEX3.2を使う!。」・・・・・一件落着。。。。次回はOraTweetでも遊んでみますか...



バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)
Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)
Leopard de Oracle10g R2 (Intel x86-64) #12 (APEX3.2と遊ぶ #5)
Leopard de Oracle10g R2 (Intel x86-64) #13 (APEX3.2と遊ぶ #6)
Leopard de Oracle10g R2 (Intel x86-64) #14 (APEX3.2と遊ぶ #7)
Leopard de Oracle10g R2 (Intel x86-64) #15 (APEX3.2と遊ぶ #8)
Leopard de Oracle10g R2 (Intel x86-64) #16 (APEX3.2と遊ぶ #9)
Leopard de Oracle10g R2 (Intel x86-64) #17 (APEX3.2と遊ぶ #10)

| | | コメント (0) | トラックバック (0)

2009年6月 2日 (火)

Leopard de Oracle10g R2 (Intel x86-64) #17 (APEX3.2と遊ぶ #10)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第九話。

Intel版MacへOracle HTTP ServerとPL/SQL gatewayをORACLE_HOMEごと移動するための環境作りとしてPowerPC上でOracle 10g R1 10.1.0.3.0 + Oracle HTTP Server + HTMLDB 1.5をインストール及び構成する。のづづき。
前回、HTMLDB 1.5の構成でエラーが発生したが今回はそれを解決後、再実行してHTMLDBのログイン画面にアクセスするまで




78


発生したエラーを確認すると、前々回の場合と同様にjavaへのパスがおかしなことになってる。

--------------------------------------
次のConfiguration Assistantが正常に完了していません。これらのアシスタントは、製品を完全に構成するため、完了する必要があります。
ファイル/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/cfgtoollogs/configToolCommandsを実行して、
スキップまたは失敗したすべてのConfiguration Assistantを再実行します。
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/jdk/jre/bin/java
-classpath /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/marvel/jlib/htmlDBConfigClasses.jar:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/jdbc/lib/classes12.jar:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/jdk/jre/lib/rt.jar:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/jlib/ojmisc.jar:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/oui/jlib/OraInstaller.jar: htmlDBConfig
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex
localhost 1521 tiger.macdeoracle.info SYSAUX * 保護された値。ログは取られません。
* * 保護された値。ログは取られません。 *
en,ja (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=tiger.macdeoracle.info)))
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/marvel
--------------------------------------

上記赤太字部分を実行してみると・・・・

G5Server:˜ oracle$ /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/jdk/jre/bin/java
-su: /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/jdk/jre/bin/java: No such file or directory
G5Server:˜ oracle$

javaが見えてないね。細かく見ていくとシンボリックリンクjreが原因。ただ前々回のようにconfigToolCommandsを変更して再実行することはできない。
理由はconfigToolCommands内に全てのパラメータが記録されていない(「保護された値。ログは取られません。」となっている部分があるから...

ということでjavaへパスが通るように修正・・・・・

Oracle HTTP ServerをインストールしたORACLE_HOME/jdkへ移動してシンボリックリンクjreを作り直す。

G5Server:˜ oracle$ cd /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/jdk
drwxr-xr-x 42 oracle oinstall 1428 May 17 12:22 bin
lrwxrwxr-x 1 oracle oinstall 26 May 17 12:22 include -> /Library/Java/Home/include
lrwxrwxr-x 1 oracle oinstall 22 May 17 12:22 jre -> /Library/Java/Home/jre
drwxr-xr-x 38 oracle oinstall 1292 May 17 12:22 lib
lrwxrwxr-x 1 oracle oinstall 22 May 17 12:22 man -> /Library/Java/Home/man
G5Server:˜/u01/app/oracle/product/10.1.0/apex/jdk oracle$ rm jre
G5Server:˜/u01/app/oracle/product/10.1.0/apex/jdk oracle$ ln -s /System/Library/Frameworks/JavaVM.framework/Home jre
G5Server:˜/u01/app/oracle/product/10.1.0/apex/jdk oracle$ ll
total 24
drwxr-xr-x 42 oracle oinstall 1428 May 17 12:22 bin
lrwxrwxr-x 1 oracle oinstall 26 May 17 12:22 include -> /Library/Java/Home/include
lrwxr-xr-x 1 oracle oinstall 48 May 17 12:58 jre -> /System/Library/Frameworks/JavaVM.framework/Home
drwxr-xr-x 38 oracle oinstall 1292 May 17 12:22 lib
lrwxrwxr-x 1 oracle oinstall 22 May 17 12:22 man -> /Library/Java/Home/man
G5Server:˜/u01/app/oracle/product/10.1.0/apex/jdk oracle$


次Oracle HTTP ServerをインストールしたORACLE_HOME/oui/binへ移動後、OUIを起動。HTMLDBだけを再インストール、構成しちゃえば解決!!(これが嫌な場合はJDK1.4.2か1.5をデフォルトにしておいた方が無難だと思う。(但し、それでこの問題が再現しなくなるか確認したわけではありません。)

また、念には念ということでJAVA_HOME環境変数へもシンボリックリンクjreへ設定したパスを設定しておいた。JAVA_HOMEの設定が必要なのかどうか? という点に関して、ちょいとヤッツケモードだったので本当に必要なのかどうか確認していません。m(_ _)m

G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$ pwd
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/oui/bin
G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$ ll
total 336
-rwxr-xr-x 1 oracle oinstall 412 May 17 12:22 addNode.sh
-rwxr-xr-x 1 oracle oinstall 20576 Aug 17 2004 lsnodes
drwxr-xr-x 12 oracle oinstall 408 May 17 12:22 resource
-rwxr-xr-x 1 oracle oinstall 136524 Aug 17 2004 runInstaller
-rwxr-xr-x 1 oracle oinstall 105 May 17 12:22 runInstaller.sh
G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$ export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$ ./runInstaller &
[1] 7026
G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$ Starting Oracle Universal Installer...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2009-05-17_01-26-05PM.
Please wait ...Oracle Universal Installer, バージョン 10.1.0.3.0 製品版
Copyright (C) 1999, 2004, Oracle. All rights reserved.

Executing install_name_tool...
Done Executing install_name_tool...



83

84

85

86

87

88

89

90

91

Oracle HTTP Serverにアクセスしてみると・・・OK.うまくいってる。
92

HTML DBにアクセスしてみる・・・OK .準備完了。
93

[1]+  Done                    ./runInstaller
G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$
G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$ unset JAVA_HOME
G5Server:˜/u01/app/oracle/product/10.1.0/apex/oui/bin oracle$


うまくいった。わははは!


さてPowerMac上での最後の作業は、Oracle HTTP Server+HTMLDBをインストールしたORACLE_HOMEごとIntel Macへ移動する前にmarvel.confのPlsqlDatabasePasswordを再設定しておきます。(OUIで設定したHTML DBのパスワードとIntel MacにインストールしたAPEX3.2のパスワードを同じパスワードにすればこの作業は不要だと思われます。また、パスワードが分からなくなった場合でもAPEX3.2のパスワードを再設定後、以下の方法でmarvel.confのPlsqlDatabasePasswordを再設定、暗号化すれば解決できます。)

Oracle HTTP Server+HTMLDBをインストールしたORACLE_HOME/Apache/modplsql/confに移動して....
(ちなみに、Oracle HTTP Serverはdads.confでもmarvel.confでも使えるようになっているが、HTML DBの構成情報はmarvel.confに書き込まれるためmarvel.confを編集している。)

G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ pwd 
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ cp dads.conf dads.conf.org
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ cp marvel.conf marvel.conf.org
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ cp marvel.conf dads.conf
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ export ORACLE_HOME=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex
G5Server:~˜u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ perl dadTool.pl -o
----------------------------------------------------------------------------
Error : Cannot invoke utility 'dadobf'
Reason: The environment setting for PATH/LD_LIBRARY_PATH is not setup to load
the required libraries.
Action: Verify the environment settings needed for running this script


----------------------------------------------------------------------------
Hint: Use the '-h' option to get details on how to invoke the script
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ export PATH=$ORACLE_HOME:bin:.:$PATH
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ perl dadTool.pl -o

Information
----------------------------------------------------------------------------
Backed up older dads.conf as /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf/dads.conf.orig.2009-05-17_19-09

All passwords successfully obfuscated. New obfuscations : 0
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$
Information
----------------------------------------------------------------------------
Backed up older dads.conf as /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf/dads.conf.orig.2009-05-17_19-11

All passwords successfully obfuscated. New obfuscations : 1
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ mv dads.conf marvel.conf
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ mv dads.conf.org dads.conf
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$ diff marvel.conf.org marvel.conf
8c8
< PlsqlDatabasePassword apex
---
> PlsqlDatabasePassword @BTpCAhnG7HjcGKTr0ns63KI=
G5Server:˜/u01/app/oracle/product/10.1.0/apex/Apache/modplsql/conf oracle$

Oracle HTTP ServerとHTML DB(関連するPL/SQLパッケージを除く)のORACLE_HOMEごとIntel Macへの移動準備完了。Rosettaの力を借りる。To be continued!



バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)
Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)
Leopard de Oracle10g R2 (Intel x86-64) #12 (APEX3.2と遊ぶ #5)
Leopard de Oracle10g R2 (Intel x86-64) #13 (APEX3.2と遊ぶ #6)
Leopard de Oracle10g R2 (Intel x86-64) #14 (APEX3.2と遊ぶ #7)
Leopard de Oracle10g R2 (Intel x86-64) #15 (APEX3.2と遊ぶ #8)
Leopard de Oracle10g R2 (Intel x86-64) #16 (APEX3.2と遊ぶ #9)

| | | コメント (0) | トラックバック (0)

2009年6月 1日 (月)

Leopard de Oracle10g R2 (Intel x86-64) #16 (APEX3.2と遊ぶ #9)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第九話。

Intel版MacへOracle HTTP ServerとPL/SQL gatewayをORACLE_HOMEごと移動するための環境作りとしてPowerPC上でOracle 10g R1 10.1.0.3.0 + Oracle HTTP Server + HTMLDB 1.5をインストール及び構成する。のづづき。
CompanionCDからOracle HTTP ServerとHTMLDB(現在はAPEX)をインストール、構成しちゃいます。


OTNからOracle 10g R1 10.1.0.3.0 for MacOSX(PowerPC)のCompanion CDをダウンロード、解凍。解凍後に作成されるDisk1ディレクトリへ移動しOUIによるインストール、構成を行います。

G5Server:˜ oracle$ cd /Volumes/DiscusWork/temp/Disk1/ 
G5Server:/Volumes/DiscusWork/temp/Disk1 oracle$ ll
total 24
drwxr-xr-x 15 oracle oinstall 510 May 16 23:34 doc
drwxr-xr-x 7 oracle oinstall 238 May 16 23:34 fonts
drwxr-xr-x 12 oracle oinstall 408 May 16 23:34 install
-rwxr-xr-x 1 oracle oinstall 1259 Dec 17 2004 runInstaller
drwxr-xr-x 15 oracle oinstall 510 May 16 23:36 stage
-rwxr-xr-x 1 oracle oinstall 4188 Dec 17 2004 welcome.htm
G5Server:/Volumes/DiscusWork/temp/Disk1 oracle$ ./runInstaller &
[1] 5831
G5Server:/Volumes/DiscusWork/temp/Disk1 oracle$ Starting Oracle Universal Installer...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
・・・・以下略・・・・

以下、OUI各画面のスナップショット。インストール構成が今回のテーマではないのでポイントになる箇所以外解説はしていません。(過去の記事なども参考にしてみてください。)



60

61

ちなみに、インストールするORACLE_HOMEは他のDatabase等とは異なるディレクトリにするところがポイントですよん。
63

64

68

71

HTML DBのパスワードはIntel MacでインストールしたAPEX3.2で設定予定のパスワード(現時点では未設定)と同じにしておくと楽です。(異なっても問題はないです。)
それ以外の項目はこのデータベースのインストールで設定したりした値やパスワードです。
HTML DB(APEX)はSYSAUX以外の表領域でもいいですが、今回はSYSAUX以外にする必要はないのでSYSAUXにしてあります。

73_2

74

77

HTML DB Configuration Assistantでエラーが発生してますが、あとで再実行するのでここでは「OK」ボタンクリック後、エラーを無視してインストールを続行します。
78

79

お約束のroot.shの実行です。指示された場所にあるroot.shをrootユーザで実行します。が・・・・以前とは違いちょっとしたエラーが・・・・
80

お約束のroot.shを実行したら・・・・エラーですか・・・・
root_sh_append.shの該当行を見てみると・・・chownとchmodをfull path指定が間違っていたので修正。

G5Server:˜/u01/app/oracle/product/10.1.0/apex oracle$ sudo sh
Password:
sh-2.05b# /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/root.sh
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/
Apache/bin/root_sh_append.sh: line 7: /usr/bin/chown: No such file or directory
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/
Apache/bin/root_sh_append.sh: line 8: /usr/bin/chmod: No such file or directory
Running Oracle10 root.sh script...
¥nThe following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex

Enter the full pathname of the local bin directory: [/usr/local/bin]:

The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:n
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:n
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:n

Adding entry to /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
sh-2.05b#
sh-2.05b# which chmod
/bin/chmod
sh-2.05b# which chown
/usr/sbin/chown
sh-2.05b#
sh-2.05b#

root_sh_append.shの修正内容

sh-2.05b#
sh-2.05b# vi /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/bin/root_sh_append.sh
sh-2.05b# diff /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/bin/root_sh_append.sh.org
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/Apache/Apache/bin/root_sh_append.sh
7,8c7,8
< /usr/bin/chown root $SSOMIGRATE
< /usr/bin/chmod 6750 $SSOMIGRATE
---
> chown root $SSOMIGRATE
> chmod 6750 $SSOMIGRATE
sh-2.05b#

root.shを再実行。(こんどは上手く行った)

sh-2.05b#
sh-2.05b#
sh-2.05b# /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex/root.sh
Running Oracle10 root.sh script...
¥nThe following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/apex

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:n
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:n
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n) [n]:n

Adding entry to /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
sh-2.05b#

root.shを実行したらOUIを終了しておわり。
81

82


以前は発生していなかったのですが、HTMLDB Configuration Assistantで問題が発生しました。原因は前々回と同じくJavaSE6.0 Developer Preview 1をデフォルトにしていることが影響しているようです。ということで解決方法なども含めて、To be continued.



バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)
Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)
Leopard de Oracle10g R2 (Intel x86-64) #12 (APEX3.2と遊ぶ #5)
Leopard de Oracle10g R2 (Intel x86-64) #13 (APEX3.2と遊ぶ #6)
Leopard de Oracle10g R2 (Intel x86-64) #14 (APEX3.2と遊ぶ #7)
Leopard de Oracle10g R2 (Intel x86-64) #15 (APEX3.2と遊ぶ #8)

| | | コメント (0) | トラックバック (0)

2009年5月31日 (日)

Leopard de Oracle10g R2 (Intel x86-64) #15 (APEX3.2と遊ぶ #8)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第八話。

Intel版MacへOracle HTTP ServerとPL/SQL gatewayをORACLE_HOMEごと移動するための環境作りとしてPowerPC上でOracle 10g R1 10.1.0.3.0 + Oracle HTTP Server + HTMLDB 1.5をインストール及び構成する。のづづき。
dbcaでデータベースインスタンスを作っちゃいます。Oracle10g R1 10.1.0.3.0 for MacOSXをMacOSX Tigerで動作させるためのお約束の作業から開始!


OTNからダウンロードできるOracle 10g R1 10.1.0.3.0 for MacOSX(PowerPC)MacOSX Tiger以降ではdbcaがこけて起動しないのでUS OTNのフォーラムでもおなじみの以下の方法で解決する。

G5Server:˜ oracle$ cd $ORACLE_HOME/lib
G5Server:˜/u01/app/oracle/product/10.1.0/tiger/lib oracle$ mv libnnz10.dylib libnnz10.dylib.org
G5Server:˜/u01/app/oracle/product/10.1.0/tiger/lib oracle$ relink all
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/bin/genclntsh
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/lib/nautab.o

・・・・中略・・・・

Enterprise Manager native components relinked
IMPORTANT NOTE: To complete this Install/upgrade, please login as root and
execute the root.sh script.
G5Server:˜/u01/app/oracle/product/10.1.0/tiger/lib oracle$ mv libnnz10.dylib.org libnnz10.dylib
G5Server:˜/u01/app/oracle/product/10.1.0/tiger/lib oracle$ cd
G5Server:˜ oracle$

relinkが済んだらdbcaを起動してデータベースを作成。

G5Server:˜ oracle$ dbca &
[1] 5600
G5Server:˜ oracle$

以下dbcaの各画面。dbcaの使い方は今回のメインネタじゃないので各画面毎の解説はしていません。Tiger Server de Oracle10gマニュアルを参考にしてくださいね。)



Dbca_1

Dbca_2

Dbca_3

Dbca_4

Dbca_5_2

Dbca_6

Dbca_7

Dbca_8

Dbca_9_2

Dbca_10_2

Dbca_11

Dbca_12

Dbca_13

Dbca_14

Dbca_15

Dbca_16

Dbca_17

Dbca_18

Dbca_21

Dbca_22


データベースが作成できたら、リスナーの状態を確認してデータベースインスタンスの起動を確認!

G5Server:˜ oracle$ lsnrctl status

LSNRCTL for MacOS X Server: Version 10.1.0.3.0 - Production on 17-5月 -2009 12:06:27

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

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=g5server)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for MacOS X Server: Version 10.1.0.3.0 - Production
開始日 17-5月 -2009 11:46:47
稼働時間 0 日 0 時間 19 分 40 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/admin/listener.ora
ログ・ファイル /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/log/listener.log
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=g5server)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=g5server)(PORT=8080))(Presentation=HTTP)(Session=RAW))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=g5server)(PORT=2100))(Presentation=FTP)(Session=RAW))
サービスのサマリー...
サービス"PLSExtProc"には、1件のインスタンスがあります。
インスタンス"PLSExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
サービス"tiger.macdeoracle.info"には、1件のインスタンスがあります。
インスタンス"tiger"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"tigerXDB.macdeoracle.info"には、1件のインスタンスがあります。
インスタンス"tiger"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
G5Server:˜ oracle$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 日 5月 17 12:06:32 2009

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

SQL> conn sys@tiger as sysdba
パスワードを入力してください:
接続されました。
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE 10.1.0.3.0 Production
TNS for MacOS X Server: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production

SQL> col comp_name for a50
SQL> set linesize 132
SQL> select comp_name,version,status from dba_registry;

COMP_NAME VERSION STATUS
-------------------------------------------------- ------------------------------ -----------
Oracle Database Catalog Views 10.1.0.3.0 VALID
Oracle Database Packages and Types 10.1.0.3.0 VALID
Oracle Workspace Manager 10.1.0.2.0 VALID
JServer JAVA Virtual Machine 10.1.0.3.0 VALID
Oracle XDK 10.1.0.3.0 VALID
Oracle Database Java Packages 10.1.0.3.0 VALID
Oracle Expression Filter 10.1.0.3.0 VALID
Oracle interMedia 10.1.0.3.0 VALID
Oracle Data Mining 10.1.0.3.0 VALID
Oracle Text 10.1.0.3.0 VALID
Oracle XML Database 10.1.0.3.0 VALID
OLAP Analytic Workspace 10.1.0.3.0 VALID
Oracle OLAP API 10.1.0.3.0 INVALID
OLAP Catalog 10.1.0.3.0 VALID
Spatial 10.1.0.3.0 VALID
Oracle Ultra Search 10.1.0.3.0 VALID
Oracle Enterprise Manager 10.1.0.3.0 VALID

17行が選択されました。

SQL>
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS

SQL>


次回は当時HTMLDBと呼ばれていたAPEXとOracle HTTP ServerをPowerMac上でインストール、構成しちゃいます。

今回はここまで、To be continued.




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)
Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)
Leopard de Oracle10g R2 (Intel x86-64) #12 (APEX3.2と遊ぶ #5)
Leopard de Oracle10g R2 (Intel x86-64) #13 (APEX3.2と遊ぶ #6)
Leopard de Oracle10g R2 (Intel x86-64) #14 (APEX3.2と遊ぶ #7)

| | | コメント (0) | トラックバック (0)

Leopard de Oracle10g R2 (Intel x86-64) #14 (APEX3.2と遊ぶ #7)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第七話。

Intel版MacへOracle HTTP ServerとPL/SQL gatewayをORACLE_HOMEごと移動するための環境作りとしてPowerPC上でOracle 10g R1 10.1.0.3.0 + Oracle HTTP Server + HTMLDB 1.5をインストール及び構成する。のづづき。
Oracle 10g R1 10.1.0.3.0のインストール中netcaがコケていた。ログから原因を探ると、デフォルトのJDKをJavaSE6.0 Developer Preview 1にしちゃっているのが原因でインストール時にORACLE_HOME内に作成されるjreのシンボリックリンクが正しく作成されていない。(java2 1.4.2のjreへのシンボリックリンクを作成しようとしているみたい・・・)

というところから...


以下、OUIの指示に従い
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/cfgtoollogs/configToolCommandsを実行してみると、/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//bin/javaがNo such file or directoryとなる。
どうもシンポリックリンク先にjreが存在していない。Tiger Server de Oracle10g を試した頃はJDK1.4.2をデフォルトにしていたのでこの問題は発生しなかったがJavaSE6.0 Developer Preview 1に変更してある影響なんだろう。

G5Server:˜ oracle$ /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/cfgtoollogs/configToolCommands
Oracle Net Configuration Assistant
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/cfgtoollogs/configToolCommands: line 2:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//bin/java: No such file or directory
G5Server:˜ oracle$


ということで、/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//bin/javaの部分をjavaに書き換えて再実行すればOK。

G5Server:/u01/app/oracle/product/10.1.0/tiger oracle$ 
--------------------------------------
次のConfiguration Assistantが正常に完了していません。これらのアシスタントは、製品を完全に構成するため、完了する必要があります。
ファイル/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/cfgtoollogs/configToolCommandsを実行して、
スキップまたは失敗したすべてのConfiguration Assistantを再実行します。
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//bin/java
-Duser.dir=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/jlib
-classpath /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//lib/i18n.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//lib/rt.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ewt3.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ewtcompat-3_3_15.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/netcfg.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/jlib/netcam.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/jlib/netca.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/help4.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/jewt4.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/oracle_ice.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/share.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/swingall-1_1_1.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/srvmhas.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/srvm.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/tools
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ldapjclnt9.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ldapjclnt10.jar
oracle.net.ca.NetCA /orahome /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger
/orahnam OraDb10g_tiger /instype custom /inscomp client,oraclenet,javavm,server
/insprtcl tcp /cfg local /authadp NO_VALUE /nodeinfo NO_VALUE /responseFile
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/install/netca_typ.rsp
--------------------------------------

G5Server:˜ oracle$
G5Server:˜ oracle$ cat /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/cfgtoollogs/configToolCommands
G5Server:˜ oracle$ java
-Duser.dir=/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/jlib
-classpath /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//lib/i18n.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jdk/jre//lib/rt.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ewt3.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ewtcompat-3_3_15.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/netcfg.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/jlib/netcam.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/jlib/netca.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/help4.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/jewt4.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/oracle_ice.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/share.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/swingall-1_1_1.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/srvmhas.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/srvm.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/tools
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ldapjclnt9.jar
:/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/jlib/ldapjclnt10.jar
oracle.net.ca.NetCA /orahome /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger
/orahnam OraDb10g_tiger /instype custom /inscomp client,oraclenet,javavm,server
/insprtcl tcp /cfg local /authadp NO_VALUE /nodeinfo NO_VALUE /responseFile
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/install/netca_typ.rsp
コマンドライン引数の解析:
パラメータ "orahome" = /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger
パラメータ "orahnam" = OraDb10g_tiger
パラメータ "instype" = custom
パラメータ "inscomp" = client,oraclenet,javavm,server
パラメータ "insprtcl" = tcp
パラメータ "cfg" = local
パラメータ "authadp" = NO_VALUE
パラメータ "nodeinfo" = NO_VALUE
パラメータ "responsefile" = /Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/network/install/netca_typ.rsp
コマンドライン引数の解析が終了しました。
Oracle Net Servicesの構成:
デフォルトのローカル・ネーミング構成が完了しました。
次のリスナーを構成中:LISTENER
リスナーの構成が完了しました。
Oracle Net Listenerの起動:
リスナーの制御の実行:
/Volumes/Discus/4oracle/oracle/u01/app/oracle/product/10.1.0/tiger/bin/lsnrctl start LISTENER
リスナーの制御が完了しました。
リスナーの起動に成功しました。
プロファイルの構成が完了しました。
プロファイルの構成が完了しました。
デフォルトのローカル・ネーミング構成が完了しました。
作成されたネット・サービス名: tiger
Oracle Net Servicesの構成に成功しました。終了コードは次のとおりです。0
G5Server:˜ oracle$
G5Server:˜ oracle$

以下、netcaでlistenerとその構成中のスナップショット。(細かな解説は入れてませんのであしからず。)


Netca_1

Netca_2_2

Netca_3

Netca_4

Netca_5

Netca_6

Netca_7

Netca_8

Netca_9

Netca_10_2

Netca_11

Netca_12

Netca_13_2

Netca_14

Netca_15

Netca_16

Netca_16_2

Netca_17_2

Netca_18

次回はdbcaを利用したデータベース作成。

今回はここまで、To be continued.




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)
Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)
Leopard de Oracle10g R2 (Intel x86-64) #12 (APEX3.2と遊ぶ #5)
Leopard de Oracle10g R2 (Intel x86-64) #13 (APEX3.2と遊ぶ #6)

| | | コメント (0) | トラックバック (0)

2009年5月29日 (金)

Leopard de Oracle10g R2 (Intel x86-64) #13 (APEX3.2と遊ぶ #6)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第六話。

Intel版MacへOracle HTTP ServerとPL/SQL gatewayをORACLE_HOMEごと移動するための環境作りとしてPowerPCの環境でOracle 10g R1 10.1.0.3.0 + Oracle HTTP Server + HTMLDB 1.5をインストール及び構成するところから。


MacOSX 10.4.11とJavaSE6.0 Developer Preview 1となっている事以外は、Tiger Server De Oracle10g その6と同じである。(ちなみにMacOSXのカーネルパラメータはTiger Server De Oracle10gをやっていた当時のままなので今回の手順ではさらりと書いておくことにした。)

Oracle所有者の環境変数やカーネルパラメータはインストレーションガイド以前のものを参考にしてみてね。

参考資料
Oracle Database 10g Release 1 (10.1) Documentation for Apple Mac OS X

ちなみに、今回の環境変数設定などは以下、あらかじめインストールするディレクトリなどは決めているので事前に設定しておいた。(MySQL関係のは気にしないでね。)


G5Server:˜ oracle$ cat .bash_profile
alias ls='ls -v'
alias ll='ls -vl'
alias startapex='$ORACLE_HOME/../apex/Apache/Apache/bin/apachectl start'
alias stopapex='$ORACLE_HOME/../apex/Apache/Apache/bin/apachectl stop'

umask 022

# oracle environment
TEMP=/tmp
TMPDIR=/tmp
ORACLE_BASE=/Volumes/Discus/4oracle/oracle/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.1.0/tiger
ORACLE_SID=tiger
NLS_LANG=Japanese_Japan.AL32UTF8
DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:$DYLD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH
export TEMP TMPDIR ORACLE_BASE ORACLE_HOME ORACLE_SID NLS_LANG DYLD_LIBRARY_PATH PATH

export MYSQL_HOME=/usr/local/mysql
export DATADIR=$MYSQL_HOME/data
export PATH=$MYSQL_HOME/bin:$PATH
G5Server:˜ oracle$

TerminalでunzipしてできるDisk1以下のrunInstallerを起動してOracledatabase 10g R1のインストール開始(Tiger Server de Oracle10gも見てね


Install_db_1

Install_db_2

Install_db_3

Install_db_4_2

Install_db_5

今回はデータベースそのものよりOracle HTTP ServerとAPEXがメインなので必要最低限のオプションだけにしてインストール時間の節約。
Install_db_6_2

Install_db_7

Install_db_8

Install_db_9

インストール時にデータベース作成は行わない。
Install_db_10

Install_db_11

Install_db_12

お約束のroot.shの実行要求が表示されたらTerminalからrootユーザでroot.shを実行する。
Install_db_13

Configuration Assistantの実行でnetcaの実行に失敗するが、JavaSE6.0 Developer Preview 1を利用していることが影響していると考えられる内容であったためエラーを無視してすすめる。(netcaはこの後、手動で実行すれば問題ないので。)
JDK1.4.2又はJavaSE5.0を使っているのならこのエラーには遭遇しないと(思われる)。


Install_db_14

Install_db_15

Install_db_16

Install_db_17_2



OracleDatabase 10g R1のインストールでTiger Server De Oracle10gの頃にはなかったエラーがnetcaの実行中に発生したがこれはJavaSE6.0 Developer Preview 1をデフォルトのJDKに設定している(詳細は次回)ことが影響しているようなのでOUIのインストールではエラーを無視し後でnetcaを手動実行する。

今回はここまで、To be continued.





バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)
Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)
Leopard de Oracle10g R2 (Intel x86-64) #12 (APEX3.2と遊ぶ #5)

| | | コメント (0) | トラックバック (0)

2009年5月27日 (水)

Leopard de Oracle10g R2 (Intel x86-64) #12 (APEX3.2と遊ぶ #5)

随分間が空いてしまったが、Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第五話。

前回PowerMac G5へインストールしたOracle HTTP ServerとPL/SQL GatewayをそのままIntel Macへ移植移動しただけでOracle HTTP Server+PL/SQL gateway+Oracle Application Express3.2が動作した結果だけをお見せしたが、今回はその手順を。

前提としてIntel Mac以外に、PowerPC版のMacとMacOSX Tiger 10.4.11(ServerでもClient版でも可。)が必要。おそらく、PowerPC版MacはPantherでも可能(だと思う)。


手順の概要

PowerMac G5 (MacOSX Tiger Server 10.4.11)へ、Oracle 10g R1 10.1.0.3.0 for MacOSX (PowerPC版)のDatabase及び、CompanionCDよりOracle HTTP ServerとAPEX(当時はHTMLDBと呼ばれていた)をインストール及び構成(起動するところまで確認)後、Oracle HTTP Server用のORACLE_HOMEディレクトリをまるごとOracle 10g R2 10.2.0.4.0 for MacOSX(Intel x86-64)及びAPEX3.2インストール済みのMacBook Pro - MacOSX Leopard 10.5.6へ移動しコンフィグファイルを書き換えIntel Mac上で未サポート扱いのOracle HTTP Server + PL/SQL gateway + APEX3.2を使えるようにする。

まず、PowerMacの情報

gccは3.3を使うのでそれ以外の場合はgcc_selectで変更する。また、javaに関してはOracle10g R1のリリース当時はJDK1.4.2だったが、以前デフォルトをJavaSE6.0 Developer Preview 1へ切り替えたままで行うことにした。PowerPC版Macの場合JavaSE6.0は正式にリリースされていないのでJavaSE5.0までのほうが問題は少ない。。はずだが。

G5Server:˜ oracle$ sw_vers
ProductName: Mac OS X Server
ProductVersion: 10.4.11
BuildVersion: 8S169
G5Server:˜ oracle$
G5Server:˜ oracle$ uname -a
Darwin G5Server 8.11.0 Darwin Kernel Version 8.11.0: Wed Oct 10 18:26:00 PDT 2007;
root:xnu-792.24.17˜1/RELEASE_PPC Power Macintosh powerpc
G5Server:˜ oracle$
G5Server:˜ oracle$
G5Server:˜ oracle$ /usr/sbin/system_profiler SPHardwareDataType | grep CPU
CPU Type: PowerPC G5 (3.1)
Number Of CPUs: 2
CPU Speed: 2.7 GHz
L2 Cache (per CPU): 512 KB
G5Server:˜ oracle$
G5Server:˜ oracle$
G5Server:˜ oracle$ /usr/sbin/system_profiler SPApplicationsDataType | grep Xcode
Xcode:
Get Info String: Xcode version 2.4.1
Location: /Developer/Applications/Xcode.app

G5Server:˜ oracle$
G5Server:˜ oracle$ gcc --version
powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

G5Server:˜ oracle$
G5Server:˜ oracle$ gcc_select -l
Available compiler versions:
3.3 3.3-fast 4.0

G5Server:˜ oracle$
G5Server:˜ oracle$ sudo gcc_select 3.3
Password:
Default compiler has been set to:
gcc version 3.3 20030304 (Apple Computer, Inc. build 1819)
G5Server:˜ oracle$
G5Server:˜ oracle$ gcc -v
Reading specs from /usr/libexec/gcc/darwin/ppc/3.3/specs
Thread model: posix
gcc version 3.3 20030304 (Apple Computer, Inc. build 1819)
G5Server:˜ oracle$

G5Server:˜ oracle$
G5Server:˜ oracle$ java -version
java version "1.6.0-dp"
Java(TM) SE Runtime Environment (build 1.6.0-dp-b88-34)
Java HotSpot(TM) Core VM (build 1.6.0-b88-17-release, interpreted mode)
G5Server:˜ oracle$

次に、Intel Macの情報

Oracle 10g R2 10.2.0.4.0 for MacOSX(intel x86-64)インストール時のまま。

Macintosh:˜ discus$ /usr/sbin/system_profiler SPHardwareDataType | grep -E '(Processor|Cores|Memory)'
Processor Name: Intel Core 2 Duo
Processor Speed: 2.2 GHz
Number Of Processors: 1
Total Number Of Cores: 2
Memory: 2 GB
Macintosh:˜ discus$
Macintosh:˜ discus$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Macintosh:˜ discus$
Macintosh:˜ discus$ uname -a
Darwin Macintosh.local 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00
PST 2008; root:xnu-1228.9.59˜1/RELEASE_I386 i386
Macintosh:˜ discus$
Macintosh:˜ discus$ gcc --version
i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5488)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Macintosh:˜ discus$
Macintosh:˜ discus$ java -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_07-b06-57, mixed mode)
Macintosh:˜ discus$
Macintosh:˜ discus$ system_profiler SPApplicationsDataType | grep Xcode
Xcode:
Get Info String: Xcode version 3.1.1
Location: /Developer/Applications/Xcode.app
Macintosh:˜ discus$

長くなるので(というより息子が風邪(フツーの)で保育園に行けない。しかも熱が37度台になってきたので走り回ってたり私が集中できないという理由もあり)今日はここまで、次回へつづく。:)

もう、そろそろ昼寝していた息子が起きそうだ...相手してやらないと・・・





バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)
Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)

| | | コメント (0) | トラックバック (0)

2009年5月18日 (月)

Leopard de Oracle10g R2 (Intel x86-64) #11 (APEX3.2と遊ぶ #4)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第四話。

前回、Rosettaの力を借りて、PowerPC版のMacへインストールしたOracle HTTP Server + PL/SQL gatewayをIntel x86版のMacへHomeディレクトリごと移動してしまえば動作するだろう。(但し、構成ファイル等は手動で手直しする必要あり)と書いたが、試してみたところ上手く動作した。Rosetta やっぱり、すげー!(Rosettaを作ったTransitive社はIBMに買収された。

手順は長くなるので次回にするが、環境と動作したスナップショットを。。。。


クリックで拡大表示します。


Ohs_apex_version1

Ohs_apex_version2


環境

Oracle HTTP ServerとPL/SQL gatewayをインストールしたMac (PowerPC)
 ---- PowerMac G5 (PowerPC G5 Dual 2.7Ghz / MacOSX Tiger Server 10.4.11)

PowerPCへインストールしたOracle HTTP ServerとPL/SQL gatewayの移動先のMac (Intel x86)
 ---- MacBook Pro (Intel Core 2 Duo 2.2Ghz / MacOSX Leopard 10.5.6)


今日はここまで、次回へつづく。:)




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)
Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)

| | | コメント (0) | トラックバック (0)

Leopard de Oracle10g R2 (Intel x86-64) #10 (APEX3.2と遊ぶ #3)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第三話。
前回まででOracle 10g R2 10.2.0.4.0 for MacOSX (Intel x86-64)へAPEX3.2日本語リソースまでインストールすることができた。今回はOracle 10g R2 10.2.0.4.0 for MacOSX (Intel x86-64)ではCompanion CDにも含まれておらずインストールすらできないOracle HTTP ServerとPL/SQL gatewayなんとかしてみる。(それさえなんとかできればAPEX3.2が使えるはず。。)
方法は幾つ考えられるが、まずは、”なんとかできるはず”と思っている根拠について書いておこうかと・・・・。


”なんとかできるはず”だと考えているのにはそれなりの理由がある。それは、Rosettaの存在。
以前、Oracle Instant Client 10g R1 for MacOSX(PPC) is running under Rosetta on MacOSX LeopardでもRosettaの力でPowerPC版のOracle Instant Client 10g R1がMacOSX Leopard (intel x86)上で動作したという記事を書いたことがあるが、今回もRosettaのお世話になれば実現できるはず!。

いくつか考えられる方法のうち、Oracle10g R1 10.1.0.3.0 for MacOSX (PowerPC)版のCompanion CDを使いMacOSX Leopard (intel x86)上でインストールするという方法は、随分前にも試したことがあるOracl10g Databaseのインストールと同様に上手く行かない。(以下、NGシーンの再現)
Oracle10gr1_companinon_cd_4_powerpc


上記以外で確実な方法として、PowerPC版Mac上でインストール、構成までしたバイナリを、そのままIntel x86版Macへ移動して再構成(もちろん手動でね)すれば使えるようになるはず・・・・・・・。

ということで、次回へつづく。




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)
Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)

| | | コメント (0) | トラックバック (0)

2009年5月15日 (金)

Leopard de Oracle10g R2 (Intel x86-64) #9 - (APEX3.2と遊ぶ #2)

Oracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)でAPEX3.2と遊ぶの第二話。日本語リソースをインストールしてみた。とにかく結果をご覧くださいな。と。

ちなみに、データベースキャラクタセットはAL32UTF8。


2

日本語リソースは、APEX3.2を解凍したディレクトリ/builder/ja以下にある。例によってインストール方法はマニュアル読んでね

guppy:ja oracle$ pwd
/Users/oracle/Downloads/apex/builder/ja
guppy:ja oracle$
guppy:ja oracle$
guppy:ja oracle$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on 水 5月 13 19:49:22 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

> conn / as sysdba
接続されました。
SYS> alter session set current_schema=apex_030200;

セッションが変更されました。

SYS> @load_ja
. ____ ____ ____ ____
. / \ | \ /\ / | /
.| || / / \ | | |
.| ||--- ---- | | |--
.| || \ / \ | | |
. \____/ | \/ \ \____ |____ \____
.
. Application Express Hosted Development Service Installation.
.........................................................
Install Application Express applications

PL/SQLプロシージャが正常に完了しました。

APPLICATION 4420 - APEX - System Messages

・・・・中略・・・・

...done
APPLICATION 4009 - APEX - Application Builder

・・・・中略・・・・

...PAGE .4009: ページ0(ゼロ)
...PAGE 1.4009: アプリケーション・ビルダー
...PAGE 2.4009: サポートするオブジェクト
...PAGE 3.4009: ブレッドクラム・エントリ
...PAGE 4.4009: マスター表の定義
...PAGE 5.4009: ディテール表を定義
...PAGE 6.4009: アイテム・ラベルのグリッド編集
...PAGE 7.4009: 複数のアイテムの削除
...PAGE 8.4009: 参照コンポーネント
...PAGE 9.4009: 共有コンポーネント
...PAGE 10.4009: 未使用のリスト
...PAGE 11.4009: マスター・ディテールの作成
...PAGE 12.4009: マスター・ディテールの作成
...PAGE 13.4009: アイテム・ヘルプのシード
...PAGE 14.4009: アクティビティ
...PAGE 15.4009: レイアウトの選択
...PAGE 16.4009: SQLレポート
...PAGE 17.4009: 置換
...PAGE 18.4009: ページ属性
...PAGE 19.4009: 複数の検証の作成

・・・・中略・・・・


...PAGE 9016.4009: アプリケーション別のデフォルトのテンプレート
...lists

・・・・中略・・・・

Adjust instance settings

PL/SQLプロシージャが正常に完了しました。

SYS>


問題なく日本語リソースも無事インストールできた。予想通りOracle Application Server絡みで未サポートとなったのかな?・・・・・。

次回は、いよいよOracle10g R2 10.2.0.4.0 for MacOSX (Intel x86-64) ではインストールもできないOracle HTTP Server + PL/SQL Gatewayをなんとかしてみる・・・・・か。。

2009/5/15更新



バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)
Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)

| | | コメント (0) | トラックバック (0)

2009年5月14日 (木)

Leopard de Oracle10g R2 (Intel x86-64) #8 - (APEX3.2と遊ぶ #1)

さて、前回予告していたようにOracle10g R2 10.2.0.4.0 for MacOSX (Intel x86-64)へOracle Application Express 3.2をインストールして無理矢理使ってみましょう! の第一話。

Oracle Application Express3.2(以下、APEX3.2)は、http://www.oracle.com/technology/products/database/application_express/download.htmlからダウンロード。


2

今回はOracle10g R2 10.2.0.4.0 for MacOSX (Intel x86-64)APEX3.2の英語環境をインストールするところまでを試してみる。
PL/SQLパッケージ等の作成がメインだから問題になりそうな箇所はないんだけど、なんで未サポートなんだろう?。 Oracle HTTP Serverが未サポートだからその影響か?


上記URLからダウンロードしたAPEX3.2を解凍したディレクトリに移動(MacOSX Leopardでは通常Downloadフォルダへダウンロードされる。)

guppy:˜ oracle$ 
guppy:˜ oracle$ cd /Users/oracle/Downloads/apex
guppy:apex oracle$ ll
total 424
-r--r--r--@ 1 oracle oinstall 690 9 10 2008 apex_epg_config.sql
-r--r--r--@ 1 oracle oinstall 15749 1 18 17:38 apex_epg_config_core.sql
-r--r--r--@ 1 oracle oinstall 5208 1 8 13:33 apexins.sql
-r--r--r--@ 1 oracle oinstall 8476 1 8 13:33 apexvalidate.sql
-r--r--r--@ 1 oracle oinstall 1549 1 8 13:33 apxchpwd.sql
-r--r--r--@ 1 oracle oinstall 2830 12 23 18:39 apxconf.sql

・・・・中略・・・・

drwxr-xr-x@ 873 oracle oinstall 29682 2 11 05:50 images
-r--r--r--@ 1 oracle oinstall 1295 12 23 18:39 load_trans.sql
drwxr-xr-x@ 64 oracle oinstall 2176 2 8 19:34 owa
drwxr-xr-x@ 9 oracle oinstall 306 2 8 21:30 utilities
-rw-rw-r-- 1 oracle oinstall 4803 2 17 12:13 welcome.html
guppy:apex oracle$
guppy:apex oracle$

ディレクトリを移動後、SQL*Plusから赤太文字で示したapexins.sql(前述)を実行する。
実行時のパラメータはAPEXのマニュアルを見てね

guppy:apex oracle$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on 水 5月 13 19:08:04 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

> conn / as sysdba
接続されました。
SYS> @apexins SYSAUX SYSAUX TEMP /i/

セッションが変更されました。

. ____ ____ ____ ____
. / \ | \ /\ / | /
.| || / / \ | | |
.| ||--- ---- | | |--
.| || \ / \ | | |
. \____/ | \/ \ \____ |____ \____
.
. Application Express Installation.
...................................
.
... Checking prerequisites

・・・・中略・・・・

I. I N S T A L L P R E - C R E A T E T A B L E S P E C S
...wwv_flow_init_htp_buffer

プロシージャが作成されました。

エラーはありません。

権限付与が成功しました。

・・・・中略・・・・

II. I N S T A L L F L O W T A B L E S
...create v function stub

ファンクションが作成されました。

エラーはありません。
...create nv function stub

ファンクションが作成されました。

エラーはありません。

・・・・中略・・・・

III. I N S T A L L F L O W P A C K A G E S P E C S
...wwv_flow_hot_http_links

ファンクションが作成されました。

エラーはありません。

・・・・中略・・・・

Package Specsのタイミング。
経過: 00:00:11.13

IV. I N S T A L L F L O W P A C K A G E B O D I E S
...wwv_dbms_sql
エラーはありません。

・・・・中略・・・・

Package Bodiesのタイミング。
経過: 00:02:50.20

V. P E R F O R M F L O W G R A N T S
Installing flows_files objects 2
...create flows_files
...trigger wwv_biu_flow_file_objects
エラーはありません。
Grantsのタイミング。
経過: 00:00:00.09

VI. I N S T A L L F L O W S
define "^" (hex 5e)
...internal messages
APPLICATION 4411 - APEX - System Messages
Set Credentials...
Check Compatibility...
WWV_FLOW_API.FLOWS_API_LAST_EXTENDED20090112
WWV_FLOW_API.CURRENT_FLOWS_VERSION20090112

・・・・中略・・・・

......Message f4400_p12_howto_step7
......Message internal_users
......Message database_users
......Message f4400_p22_obj_created
......Message f4400_p10_queries_help
......Message f4400_p9_tables_help
......Message f4400_p22_table_info
......Message f4400_p8_forms_help
......Message f4400_p20_reports_help
......Message f4400_p49_defs_help
......Message wwv_flow_item_protection_save_item_internal_only_show
......Message wwv_flow_sw_parser_line_exceeds_32k
......Message wwv_flow_sw_api_check_priv_obj
......Message f4050_approved_account_req_display
......Message archivelog

・・・・中略・・・・

Install Internal Flowsのタイミング。
経過: 00:00:34.94

...Development install if necessary

セッションが変更されました。

I. O R A C L E S Y S I N S T A L L P R O C E S S
dev_grants
...grant APEX owner development privileges

・・・・中略・・・・

...done grant APEX owner core privileges
...CONNECT as the Oracle user who will own the APEX engine

セッションが変更されました。

III. I N S T A L L F L O W P A C K A G E S P E C S
wwv_flow_plsql_editor.sql

・・・・中略・・・・

Development Package Specsのタイミング。
経過: 00:00:40.17
wwv_flow_plsql_editor.plb

パッケージ本体が作成されました。

・・・・中略・・・・

Development Package Bodiesのタイミング。
経過: 00:00:29.69

権限付与が成功しました。


PL/SQLプロシージャが正常に完了しました。

VI. I N S T A L L F L O W S
define "^" (hex 5e)
APPLICATION 4000 - APEX - Application Builder
Set Credentials...
Check Compatibility...
API Last Extended:20090112
Your Current Version:20090112

・・・・中略・・・・

Install Internal Development Applicationsのタイミング。
経過: 00:09:10.55

load verification images

PL/SQLプロシージャが正常に完了しました。

エラーはありません。

・・・・中略・・・・

Thank you for installing Oracle Application Express.

Oracle Application Express is installed in the APEX_030200 schema.

The structure of the link to the Application Express administration services is as follows:
http://host:port/pls/apex/apex_admin (Oracle HTTP Server with mod_plsql)
http://host:port/apex/apex_admin (Oracle XML DB HTTP listener with the embedded PL/SQL gateway)

The structure of the link to the Application Express development interface is as follows:
http://host:port/pls/apex (Oracle HTTP Server with mod_plsql)
http://host:port/apex (Oracle XML DB HTTP listener with the embedded PL/SQL gateway)

JOB_QUEUE_PROCESSES: 10

PL/SQLプロシージャが正常に完了しました。


セッションが変更されました。


Performing Application Express component validation - please wait...

Completing registration process.
Validating installation.

PL/SQLプロシージャが正常に完了しました。

Validate Installationのタイミング。
経過: 00:02:04.77

・・・・中略・・・・

VII. L O A D E N G L I S H D I C T I O N A R Y

トリガーが変更されました。

...10000 rows
...20000 rows
...30000 rows
...40000 rows
...50000 rows
...60000 rows
...70000 rows
English Dictionaryのタイミング。
経過: 00:02:58.72
Upgradeのタイミング。
経過: 00:00:01.15
...End of install if runtime install
...create null.sql
Development Installationのタイミング。
経過: 00:17:28.33
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
guppy:apex oracle$
guppy:apex oracle$


特に問題もなくAPEX3.2の英語版はインストールできた。これなら次も順調かもよ・・・・・


次はAPEXのバージョン確認(FAQですが)。
apex_030200.wwv_flows_release関数を使えば確認できます。
ちなみにhtmldbなんて呼ばれていたころから flows_02000とか、リリース毎にスキーマ名が変る点にご注意を。但し関数名は変らないのでスキーマ名だけ注意すれば問題ないです。

guppy:apex oracle$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on 水 5月 13 19:08:04 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

> conn / as sysdba
接続されました。

SYS> select apex_030200.wwv_flows_release from dual;

WWV_FLOWS_RELEASE
--------------------------------------------------------------------------------
3.2.0.00.27

SYS>

次回、日本語リソースのインストール。毎回思うけど、apexins.sqlで一緒にやってくれないかな?
jaとか指定するとenにつづいてjaをインストールしてくれるとか・・・・面倒で・・・。




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)
Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)

| | | コメント (0) | トラックバック (0)

2009年5月13日 (水)

Leopard de Oracle10g R2 (Intel x86-64) #7 (iSQL*Plusのメッセージがものすごく怖い件)

ひさびさにOracleネタです。

Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)サポートされていないOracle Enterprise Managerは構成されないのに、同じくサポートされていないiSQL*PlusやUltra Searchなんかが構成されている(使える状態かどうかは定かでないがURLとPortがリストされているので構成はされている模様)と書いたが、あってもあまり用はないのだが、試しにiSQL*Plusを使ってみる事にした。(サポート対象外ということになっているので正しく動作しない可能性が高いのは承知の上で)

Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)では、guppy.macdeoracle.jp:5560となっているがlocalhostでも同じなのでlocalhost:5560へアクセスしてみると・・・・お〜〜〜起動してますな〜確かに(Oracle HTTP Serverではなく、起動しているのはApplication ServerのOC4Jみたい)。
Isqlplus_10gr2_intel_001

ではiSQL*Plusはどうか? localhost:5560/isqlplusへアクセスしてみと・・・・お〜〜〜表示される・・・・しか〜〜〜し、なんかやけにこわ〜〜〜〜〜〜いメッセージが表示されている。なんでこんなメッセージ表示してんだろう。オラクルさん。
Isqlplus_10gr2_intel_002

こわ〜〜〜〜いメッセージを横目で見つつログインしてみる・・・・え、エラーです。(動作しませんね〜.
iSQL*Plus。はどうしても必要な機能ではないのでこのままにしておきましょう...isqlplusctl stopで停止しておきましょう。インストール直後は起動したままになっているので。

Isqlplus_10gr2_intel_003

Isqlplus_10gr2_intel_004_2

強烈なメッセージがiSQL*Plusに表示されたので、もりもりやる気になってきた私。ということで、次回はサポート対象外となっているOracle Application Expressをインストール、しかも最新の3.2を。。え、どうするの? Oracle HTTP Serverも未サポートでOracle10g R2 10.2.0.4.0 for MacOSX (Intel x68-64)のCompanion CDには含まれていないのに..
ははは、ご心配なく、どうにかできると思うからかいているわけですが、当然その方法も未サポートな方法ですからそれらを理解した上で遊べばいいんです。はい。

ということで次回へつづく。



バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)
Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)

| | | コメント (0) | トラックバック (0)

2009年5月11日 (月)

Cache' デベロッパーズガイドを頂きました。m(_ _)m

先月の今頃だが、[CodeZine_News号外 2009-04-09]オブジェクトDB Caché入門書プレゼントという案内が来ていたので、いつものノリで応募していたのだが、プレゼントに当選したようで、Caché デベロッパーズガイドが本日届いた。ありがとうございました。

(最近よく当選するんだよな〜、くじ運は悪いのに・・・)

Mac で Oracleな当ブログですが過去、Cachéネタも幾つかあったりします。:)

10日後は何日?、翌月末日って何日?
Mac de Caché というか MUMPS というか Objectscript か



| | | コメント (0) | トラックバック (0)

USBメモリ de 暗号化ディスクイメージ

昨日、Audiのロゴ入りUSBメモリ(1GB) 暗号化ソフト付きノベルティを頂いてきたので、USBメモリで暗号化ソフトなどのセキュリティ機能の無いUSBメモリだった場合、セキュリティをどうするか? ということでMacOSXの暗号化機能を使い保護してみましょうか、というお話。

幾つかUSBメモリをノベルティとして頂いているが一番のお気に入りはメルセデスベンツCクラスキー型USBメモリ。でもこのUSBメモリはセキュリティ機能が無いのでこのままでは大切な情報は持ち歩けない・・・落として中身を見られても問題ないものしか入れられない・・・さてどうしよう・・・・
Cimg0935


利用するアプリケ−ションはMacOSXに付属するディスクユーティリティ。このユーティリティを使い暗号化したディスクイメージ(読み書き可能なディスクイメージ)を作成後、作成したディスクイメージを暗号化機能の無いUSBメモリにコピーすればOK.

では、早速。

USBメモリをマウント
Usd_de_encryption_001

次にディスクユーティリティを起動
起動するとマウントしたUSBメモリも表示される。

Usd_de_encryption_002

Usd_de_encryption_003

「新規イメージ」をクリック
Usd_de_encryption_004

ディスクイメージにお好きな名称を付け、ディスクイメージのサイズ、暗号化方法(AES-128を選択というかこれしかない。いまのところ)、フォーマット(読み込み/書き込みディスクイメージを選択)を指定して作成ボタンをクリック。
尚、今回は890MBのディスクイメージを作成したが利用しているUSBメモリの利用可能空きサイズに応じ適宜調整してくださいね。

Usd_de_encryption_005

ディスクイメージ作成が開始されるとパスワードが要求されるので絶対忘れないようなパスワードを入力する。(当然ですけどパスワードには電話番号とか誕生日とか簡単にバレそうなものは使わないといのはあたりまえ過ぎるけど、一応書いておきますね。)
Usd_de_encryption_006

作成されると自動的にマウントされる。その際、前ステップで設定したパスワードを要求されるので入力すると以下のような状態になる。
Usd_de_encryption_008

USBメモリへディスクイメージをコピーするためマウントされた暗号化ディスクイメージは一旦アンマウントする。
Usd_de_encryption_009

アンマウント後、ディスクイメージをUSBメモリへコピーする。ディスクイメージのサイズが大きいとコピー時間もそれなりに必要なのでご注意を。
Usd_de_encryption_010

Usd_de_encryption_011

コピーが終わったらオリジナルのディスクイメージは削除する。その後、USBメモリ上の暗号化ディスクイメージをダブルクリックしてマウントする。(パスワード要求あり)
Usd_de_encryption_012

Usd_de_encryption_013_2

マウントされた暗号化ディスクへテキストファイルなどを作成すればAES-128で暗号化されたディスクイメージを他のMacへUSBメモリ経由で持ち運べる(PowerPCとIntel間の相互利用も今のところ問題なし。:)

ちなみに以下の例で作成したテキストファイルは暗号化されたディスクイメージ上で作成保存したので私のMac上にも残らないようにしてみた。

Usd_de_encryption_014

書き込みもできるディスクイメージにしてあるのでファイルを追加することも可能。ただUSBメモリへ保存するファイル容量が大きいと時間がかかるのが難点といえば難点かも。マウントされた暗号化ディスクイメージ、USBメモリの順でアンマウントしてUSBメモリをドリ取り外せば持ち運べる :)
Usd_de_encryption_015

Usd_de_encryption_016


AESに関連する記事
AESファイナリストをめぐって - h2np.net
AES 概要説明 - A.I.Lab

2009/5/12
タイポ等修正、相変わらず打ちっ放しなところは治ってないw

| | | コメント (0) | トラックバック (0)

2009年5月10日 (日)

Oracle Database on ZFS filesystem ....

tuning redo apply on zfs - Ronald Rood's oracle blogなんて記事を見かけた、MacOSX Snow LeopardではZFSも標準サポートされるわけでなんとなく気になるネタ。ということでメモメモ。OracleのSun Microsystems買収でZFS辺りの動きも気になる。

関連記事:
一瞬でのバックアップを実現するSolaris ZFS - @IT

| | | コメント (0) | トラックバック (0)

2009年5月 8日 (金)

MacOSXでCDやDVDを焼く方法(初心者でも分かり易い方法)

義理の妹が妻のお下がりのIMac G5を使いだしてからいろいろと質問されることがあるのだが専門的な用語はあまり使えない(Mac初心者なので)。多分言葉より分かり易いのはやはり絵で見る方だよね?!。
ということで、一昨日「iPhotoで管理している画像ファイルをCDやDVDに記録するにはどうするの?」という質問への回答。
(ちなみに、MacOSXでCDやDVDに画像データ等を直接書き出す方法として複数の方法があるのだが今回はMacOSX初心者でも簡単な方法を紹介しておくね。)


「Finderのメニュー」→「ファイル」→「新規ディスク作成フォルダ」をクリック。
Finder_de_make_disc_001

ディスクトップ上に以下のようなフォルダが作成されるのでお好きな名前を付けておく
Finder_de_make_disc_002

新規ディスク作成フォルダをダブルクリックして開くと以下のようになっている。
Finder_de_make_disc_003

次にiPhotoを起動してCDやDVDに書き込みたい画像を選択する。(以下の例では、イベント単位で複数選択している。イベントを複数選択するときは⌘キーを押しながら該当イベントをクリックする。)
Finder_de_make_disc_005

次に「iPhotoメニュー」→「ファイル」→「書き出し」を選択する。
Finder_de_make_disc_006

「写真の書き出し」ダイアログが表示されるので、「ファイルの書き出し」タブで「種類」は”現在”、「サイズ」は”フルサイズ”となっていることを確認し「書き出し」ボタンをクリックする。
Finder_de_make_disc_007

次に「ファイル選択」で先ほど作成した「新規ディスク作成フォルダ」を選択して「OK]ボタンをクリック。
Finder_de_make_disc_008



Finder_de_make_disc_009

書き出しが終わったら、「新規ディスク作成フォルダ」内にある「ディスクを作成」ボタンをクリック。
空のCDかDVDを挿入するよう指示されるので、CD(CD-R/RW等)又はDVD(DVD-R/RW等)を挿入する。

Finder_de_make_disc_010

Finder_de_make_disc_011

挿入すると書き込み速度やディスク名を聞かれるので必要であれば入力する。(「新規ディスク作成フォルダ」に名称を付けていればその名称が設定される)
確認後、「ディスクを作成」ボタンをクリックする。(あとはディスクが焼終わるのを待つだけ。

Finder_de_make_disc_012

Finder_de_make_disc_013_2

この例ではCD-RWを利用して約8MBの画像ファイルを書き込んだ。書き込みが完了すると以下のような感じでデスクトップ上に現れる。ダブルクリックして開けばiPhotoから書き出した画像ファイルが確認できるはず。あとはディスクを取り出せば終わり。:)

ディスクに書き出した「新規ディスク作成フォルダ」はゴミ箱へポイしてしまえばOK.

どう? わかった? 簡単でしょ?!ーー>義妹

Finder_de_make_disc_014

Finder_de_make_disc_015




おまけ。

ちなみに、もし「新規ディスク作成フォルダ」へ、挿入するCDやDVDに書き込めないくらいの画像データ等を入れてしまった場合はちゃ〜〜〜〜んと、駄目よ〜〜〜と警告を出してくれるからCDやDVDに書き込める程度になるまでファイルを削除してね!、1枚に入りきれなければまた別のディスクを焼けばいいわけだから。:)


以下の例は、「新規ディスク作成フォルダ」へ約2.6GBのデータを入れた状態。(DVDじゃないと書き込めないサイズになってます。)
「ディスク作成」ボタンをクリックすると2.63GB以上の容量のあるディスクが必要だと警告を出してくれるし、書き込みまで進めてしまってもディスクに書き込む前に容量不足で書き込めないことを知らせてくれます。

Finder_de_make_disc_017

Finder_de_make_disc_018_2

Finder_de_make_disc_019

Finder_de_make_disc_020

Finder_de_make_disc_021




2010/10/10追記

MacOSXでCDやDVDを焼く方法(Unix/Linux使いだけど、MacOS Xは初心者って方向けの方法)
MacOSXでCDやDVDを焼く方法 #2(Unix/Linux使いだけど、MacOS Xは初心者って方向けの方法)

| | | コメント (2) | トラックバック (0)

2009年4月24日 (金)

Oracle Open World Tokyo 2009 #2(最終日) - Do you Poken?

Oracle Open World Tokyo 2009でOracle社員犬のWendyがPoken始めたというのでハイフォーしてきました。私以外にWendyとハイフォーした方いたのかな?

おっと、忘れるところでした、Unconferenceや他のセッション、そして最後に、Oracle Master de Night(なんとなく似ている? de だけね)にもちゃんと参加してきましたよ。

12

今話題のSun Microsystemsさんのブースにて(T5440の256スレッドのデモ中)、知っている営業の方がいたので、つい話し込んでしまいました。あはは。
Img_0348

そしてちょっとしたサプライズ、MacとiPhoneがWendyのブースのお隣に!!!!(できればもっと目立つところに・・・・)
Img_0352

そして最後はOracle Master de Night!
ここで名刺交換した方々がこのブログをよく見てくださっているようで、名刺交換した時の反応に私自身が驚いてしまいました。:)
見て頂いてありがとうございます。

Img_0366

ところで、Oracle Master de Night!とMac De Oracleの"de"がかぶってますが、Mac De Oracleの"De"は、Cube De Zopeから頂いた"De"なんですよ。実はそれほど売れなかったPowerMac G4 Cubeでしたが、私はあのデザインが好きで未だにPowerMac G4 Cube保管してます。SonnetのCPUカード付けて1.2GhzにClock-upしてますけど。

| | | コメント (2) | トラックバック (0)

2009年4月20日 (月)

Oracle SQL Developer 1.5.4がJavaSE6.0 Developer Preview 1(PowerPC版ね)を嫌だと言うので・・

さて、今日はSQL Developer 1.5.4 for MacOSX(PowerPC)の話題をちょっとだけ。

PowerMac G5 with MacOSX Tiger 10.4.11(PowerPC)へJDeveloper 11g for MacOSXをインストールした際、JavaSE6.0 Developer Preview 1をデフォルトのJavaVMに変更してしまったので、それ以前にイストールしていたOracle SQL Developer 1.5.4がJDK6.0 Developer Preview 1なんてダメダメ、ちゃんとしてくれなくちゃだわ!。とアラートを表示するので、Oracle SQL Developer1.5.4はJavaSE5.0を利用するよう変更した。。(警告がでるだけで今のところ特に問題はなかったのですが、起動するだびアラートが表示されうざいので。)

ついでにどうにもこうにもSQL Developerのアイコンが気に入らないのでアイコンはカスタマイズしちゃってます。:)



Icon

1

Java6dp1

デフォルトのJDKをJavaSE6.0 Developer Preview 1(PowerPC版では正式なJDK6.0は無いので)にしてしまったのだが、旧リリースもちゃんと残してあるのでOracle SQL Developer for MacOSXではsqldeveloper-Darwin.confを編集し、SetJavaHomeにJavaSE5.0のパスをセットして再起動すれば作業終了。

ちなみに、sqldeveloper-Darwin.confの場所は、SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin 以下。

G5Server:˜ discus$
G5Server:˜ discus$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions/
total 56
lrwxr-xr-x 1 root wheel 5 Sep 25 2008 1.3 -> 1.3.1
drwxr-xr-x 8 root wheel 272 Jul 21 2005 1.3.1
lrwxr-xr-x 1 root wheel 5 Sep 25 2008 1.4 -> 1.4.2
drwxr-xr-x 8 root wheel 272 Jul 21 2005 1.4.2
lrwxr-xr-x 1 root wheel 5 Sep 25 2008 1.5 -> 1.5.0
drwxr-xr-x 8 root wheel 272 Apr 9 10:02 1.5.0
lrwxr-xr-x 1 root wheel 5 Jul 21 2007 1.6 -> 1.6.0
drwxr-xr-x 10 root wheel 340 Mar 24 10:30 1.6.0
drwxr-xr-x 6 root wheel 204 Mar 17 19:53 A
lrwxr-xr-x 1 root wheel 1 Sep 25 2008 Current -> A
lrwxr-xr-x 1 root wheel 3 Mar 25 13:52 CurrentJDK -> 1.6
G5Server:˜ discus$
G5Server:˜ discus$
G5Server:˜ discus$ cd /Volumes/ExtraDisk/Application/
G5Server:/Volumes/ExtraDisk/Application discus$ ls SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin
G5Server:/Volumes/ExtraDisk/Application discus$ ll SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin
total 136
-rw-r--r-- 1 discus discus 0 Mar 2 21:47 jdk.conf
-rw-r--r-- 1 discus discus 315 Mar 2 21:47 logging-debug.conf
-rw-r--r-- 1 discus discus 316 Mar 2 21:47 logging.conf
-rw-r--r-- 1 discus discus 12702 Mar 2 21:47 splash.gif
-rw-r--r-- 1 discus discus 10286 Mar 2 21:47 splash.png
-r-xr-xr-x 1 discus discus 3168 Mar 2 21:47 sqldeveloper
-rw-r--r-- 1 discus discus 392 Apr 20 04:32 sqldeveloper-Darwin.conf
-rw-r--r-- 1 discus discus 350 Apr 20 04:32 sqldeveloper-Darwin.conf.org
-rw-r--r-- 1 discus discus 63 Mar 2 21:47 sqldeveloper-debug.conf
-rw-r--r-- 1 discus discus 170 Mar 2 21:47 sqldeveloper-nondebug.conf
-rw-r--r-- 1 discus discus 173 Mar 2 21:47 sqldeveloper.boot
-rw-r--r-- 1 discus discus 516 Mar 2 21:47 sqldeveloper.conf
-rw-r--r-- 1 discus discus 132 Mar 2 21:56 version.properties
G5Server:/Volumes/ExtraDisk/Application discus$
G5Server:/Volumes/ExtraDisk/Application discus$ cd
G5Server:˜ discus$ SQL_DEV_HOME=/Volumes/ExtraDisk/Application/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin
G5Server:˜ discus$ diff $SQL_DEV_HOME/sqldeveloper-Darwin.conf.org $SQL_DEV_HOME/sqldeveloper-Darwin.conf
6c6
< SetJavaHome /Library/Java/Home/
---
> SetJavaHome /System/Library/Frameworks/JavaVM.framework/Versions/1.5/home
G5Server:˜ discus$
G5Server:˜ discus$


以下、JDKをJavaSE6.0 DP1からJavaSE5.0へダウングレードした結果。
Java50

| | | コメント (0) | トラックバック (0)

2009年4月19日 (日)

Leopard de Oracle10g R2 (Intel x86-64) #6 (onsがバグっている?件..)

さて、Leopard de Oracle10g R2 (Intel x86-64)、その第六話。
onsがバグっている?件..

ということで、まずはonsのおさらいとして、ons (Oracle Notification Server)の略であり、昔のOracle Name Serverの略じゃないよ! 2
という辺りを参照してほしい。

該当記事で書いているが「Oracle10g release 1 10.1.0.3.0 for MacOSX Server (PowerPC)の既知の問題としてonsが紀藤起動していないとlistenerがハングしてしまうという問題があった」ので、Oracle10g release 2 10.2.0.4.0 for MacOSX Server (Intel x86-64)ではどうなのかを確認している際、listenerじゃなくて、ons、バグってね? 起動しないんだけど。。。。という事に気付いた次第。
ちなみに、listenerがハングしていたという問題はOracle10g R2 for MacOSX Server(intel x86-64) では改善されたようです。



以下のログを見てもらいたい。onsctlでpingするとonsが起動しないのにrunningを返してくる。あらら。(^^;;;;

guppy:˜ oracle$ onsctl ping
ons is running ...
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ ps -axc | grep -E '(tns|ons)'
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ lsnrctl start

LSNRCTL for MacOS X Server: Version 10.2.0.4.0 - Production on 18-4月 -2009 17:26:20

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

/Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/bin/tnslsnrを起動しています。お待ちください...

TNSLSNR for MacOS X Server: Version 10.2.0.4.0 - Production
システム・パラメータ・ファイルは/Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.oraです。
ログ・メッセージを/Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/network/log/listener.logに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=guppy.macdeoracle.jp)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for MacOS X Server: Version 10.2.0.4.0 - Production
開始日 18-4月 -2009 17:26:20
稼働時間 0 日 0 時間 0 分 0 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora
ログ・ファイル /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/network/log/listener.log
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=guppy.macdeoracle.jp)(PORT=1521)))
サービスのサマリー...
サービス"PLSExtProc"には、1件のインスタンスがあります。
インスタンス"PLSExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ ps -axc | grep -E '(tns|ons)'
oracle 1491 ?? 0:00.02 tnslsnr
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ lsnrctl stop

LSNRCTL for MacOS X Server: Version 10.2.0.4.0 - Production on 18-4月 -2009 17:29:28

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

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
コマンドは正常に終了しました。
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ onsctl ping
ons is running ...
guppy:˜ oracle$
guppy:˜ oracle$ ps -axc | grep -E '(tns|ons)'
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ onsctl stop
onsctl: shutting down ons daemon ...
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ onsctl start
onsctl: ons is already running
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ ps -axc | grep -E '(tns|ons)'
guppy:˜ oracle$

Oracle10g R1 10.1.0.3.0 for MacOSX Server(PowerPC)とOrcle10g R2 10.2.0.4.0 for MacOSX Server(Intel x86)でons -aとタイプしてみると・・・・・。やはりIntel版のonsではなにも返さず。。。。onsctlの内部を見てもdbshut/dbstartと同様にDYLD_LIBRARY_PATH環境変数の設定はないし、この辺りは手が入っていない感じがします。。まぁ、どうでもいいですけどね、onsが動作しなくても困らないようにはなっているようなので。

Oracle10g R1 10.1.0.3.0 for MacOSX Server(PowerPC)

G5Server:˜ oracle$ $ORACLE_HOME/opmn/bin/ons -a
Usage:
ons -a <cmd>
Where:
cmd = ping|shutdown|reload|debug
G5Server:˜ oracle$

Oracle10g R2 10.2.0.4.0 for MacOSX Server(Intel x86)

guppy:˜ oracle$ $ORACLE_HOME/opmn/bin/ons -a
guppy:˜ oracle$

2009/4/20:画像追加とタイポ修正。

今日はこれまで。次回へつづく。




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)
Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)

| | | コメント (0) | トラックバック (0)

2009年4月18日 (土)

Leopard de Oracle10g R2 (Intel x86-64) #5 (dbstart and dbshut does not work!! But....)

Leopard de Oracle10g R2の続きです。
Companion CDのプロダクトもインストールしましたので、今回はOracle10g R2 for MacOSX Server (Intel x86-64)を自動起動、自動停止するよう設定してみます。

Tiger以降のMacOSXではSystemStarterによる自動起動からLaunchDaemonによる起動が推奨されるようにはなったのですがOracle10g R2 for MacOSX Srever (Intel x86-64)のマニュアルにはlaunchd.plistの例が全く記載されていないのでLaunchDaemonによる起動、停止はひとまずお預け。(後で実験はしますけどね。)
LeopardでもStartupItemsフォルダへ自動実行するスクリプトを配置しておけばSystemStarterLaunchdから呼び出されるので、昔ながらの方法で自動起動、停止、再起動するよう設定してみることに。。


Panther de Oracle10g R1 (PowerPC)で使っていた起動用のshellとStartupParameters.plistをベースに環境変数等を書き換えただけでは動作しない。
Oracle10g R1 10.1.0.3.0までは、リスナーの起動及び停止は$ORACLE_HOME/bin/dbstart又は、dbshut内で行われていなかったが、Oracle10g R2以降のdbstart/dbshutでは、lsnrctlにより起動/停止されるようになっている。
また、$ORACLE_HOMEをパラメータして渡すよう変更されている。

Oracle10g R2向けのスクリプトへ変更を加えないまま流用したらどうなるか?、、とりあえずPanther de Oracle10g R1(PowerPC)で試した際に動作していた起動用shellとStartupParameters.plistを環境変数だけを書き換えて実行した場合、どのような状況になるか確認しておく。(結果からお伝えしておくと、does not workなのは明白なのですが、どのようなエラーになるか知っておくとためになるでしょうから。)



以下に、Panther de Oracle10g R1で使ったStartupItems用のshellスクリプトとStartupParameters.plistを”単純に”パス等を書き換え、dbstart/dbshut内で実行されるリスナー起動部分を削除、onsctl(今回は起動しておかなくてもリスナーがハングしなくなった。というかonsはちゃんと動作しない。詳細は後日)、oem及び、isqlplusの起動部分を削除した。(エラーになるのでマネしないでね。どんなエラーになるか知りたいだけなので)

guppy:˜ discus$ cat /Library/StartupItems/Oracle/Oracle
#!/bin/bash
# define globally used paths/variables
PATH=/bin:/sbin:/usr/bin:/usr/sbin

TEMP=/tmp
TMPDIR=/tmp

ORACLE_BASE=/Users/shared/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
ORACLE_SID= leopard1
NLS_LANG=Japanese_Japan.AL32UTF8
DYLD_LIBRARY_PATH=/usr/X11R/lib:$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:$DYLD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:/usr/X11R/bin:$PATH
ORACLE_OWNER_PATH=/Users/oracle
ORACLE_OWNER=oracle
TERM=vt100

export PATH ORACLE_BASE ORACLE_HOME ORACLE_OWNER ORACLE_OWNER_PATH ORACLE_SID DYLD_LIBRARY_PATH
export TERM NLS_LANG

# debug
echo '****************************'
echo ' env for Oracle'
echo '****************************'
env

echo ''
echo '*************************************'
echo ' hard and soft shell resource limits'
echo '*************************************'
echo 'Hard / Soft limit:'
launchctl limit

# get common system config setting
. /etc/rc.common

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo 'Oracle startup : cannot start'
echo ' (cannot find one or both of dbstart or $ORACLE_HOME)'
exit
fi

StartService ()
{
ConsoleMessage 'Starting Oracle database...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"
ConsoleMessage 'Started Oracle database'
}

StopService ()
{
ConsoleMessage 'Stopping Oracle Database...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut"
ConsoleMessage 'Stopped Oracle Database.'

ConsoleMessage 'Stopping TNS Listener...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
ConsoleMessage 'Stopped TNS Listener.'
}


RestartService ()
{
ConsoleMessage 'Stopping Oracle Database...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut"
ConsoleMessage 'Stopped Oracle Database.'

ConsoleMessage 'Stopping TNS Listener...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
ConsoleMessage 'Stopped TNS Listener.'

ConsoleMessage 'Starting TNS Listener...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
ConsoleMessage 'Started TNS Listener.'

ConsoleMessage 'Starting Oracle database...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"
ConsoleMessage 'Started Oracle database'
}

RunService "$1"

guppy:˜ discus$
guppy:˜ discus$ cat /Library/StartupItems/Oracle/StartupParameters.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Description</key>
<string>Oracle10g 10.2.0.4.0 Database Server</string>
<key>OrderPreference</key>
<string>Late</string>
<key>Provides</key>
<array>
<string>Oracle10g 10.2.0.4.0 Database</string>
</array>
<key>Requires</key>
<array>
<string>Disks</string>
</array>
<key>Uses</key>
<array>
<string>Disksv/string>
<string>Network</string>
<string>NFS</string>
</array>
</dict>
</plist>
guppy:˜ discus$
guppy:˜ discus$


4

上記をテスト実行してみると・・・・
以下のようなerrorになり動作しない。

errorの原因は複数あるようで、1つはConsoleMessageがshでしか認識されていないこと、dbstart及びdbshutの実行時$ORACLE_HOMEを引数として渡さないといけないこと、それとdbstart及びdbshut自体がバグっていることが原因。
特にOracle10g R1のdbstart/dbshutとOracle10g R2のdbstart/dbshutが異なっているのでOracle10g R1の頃のスクリプトはそのままでは使えない。
そのような状態でLeopardのSystemStarterで実行しようとすると以下のようなエラーでまくりでとなる訳です。(><)

この場合、特徴的なエラーメッセージがあるので、そのポイントを赤太字で強調しておいたので注意深くご覧ください。

guppy::˜ discus$ sudo /sbin/SystemStarter -nd start "Oracle10g 10.2.0.4.0 Database"
SystemStarter[2256]: Found item: HP IO
SystemStarter[2256]: Found item: HP Trap Monitor
SystemStarter[2256]: Uses: Evaluating HP IO
SystemStarter[2256]: Uses: Keeping HP IO
SystemStarter[2256]: Found item: IntegoCommon
・・・・中略・・・・
SystemStarter[2256]: Running command (2257): /Library/StartupItems/Oracle/Oracle start
・・・・中略・・・・
*************************************
hard and soft shell resource limits
*************************************
Soft / Hard limit:
cpu unlimited unlimited
filesize unlimited unlimited
data 6291456 unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 2068 2068
maxfiles 65536 65536
/Library/StartupItems/Oracle/Oracle: line 46: ConsoleMessage: command not found
dyld: Library not loaded: /b/227/network/lib/libnnz10.dylib
Referenced from: /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/bin/lsnrctl
Reason: image not found
/Library/StartupItems/Oracle/Oracle: line 48: ConsoleMessage: command not found
/Library/StartupItems/Oracle/Oracle: line 50: ConsoleMessage: command not found
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/bin/dbstart ORACLE_HOME
Processing Database instance "leopard1": log file /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/startup.log
/Library/StartupItems/Oracle/Oracle: line 52: ConsoleMessage: command not found
SystemStarter[2256]: Oracle10g 10.2.0.4.0 Database Server (2257) did not complete successfully
SystemStarter[2256]: none left
SystemStarter[2256]: The following StartupItems failed to properly start:
SystemStarter[2256]: /Library/StartupItems/Oracle
SystemStarter[2256]: - execution of Startup script failed
guppy:˜ discus$

上記のConsoleMessage: command not foundについてはスクリプトをbashではなくshで実行するようにすれば解決できる。
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listenerについては、dbstart及び、dbshutの実行時に$ORACLE_HOME環境変数を引数として渡してやれば解決できる。
最後に一番問題なのは
dyld: Library not loaded: /b/227/network/lib/libnnz10.dylib部分。この問題の解決方法はオラクルが提供しているdbstart/dbshutの問題部分(後述)を修正するか、
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"のように-lオプションなしのsuコマンドで起動(USの方で-lオプション無しのsuコマンドで回避した方がいる模様。)するしか手っ取り早く解決する方法はなさそう。

他にあるというツッコミ大歓迎です。m(_ _)m

ということで前述の問題点を変更した自動起動/停止スクリプトを以下に示します。
尚、dbstartとdbshutはdiffによる差分のみ示しておきますね。(そのほうが分かり易いでしょうから。)

・まずStartupItemsに配置するOracle起動/停止/再起動スクリプト
以前のスクリプトを変更した部分は赤字太文字にしてあります。(削除部分除く)

guppy:˜ discus$ cat  /Library/StartupItems/oracle/oracle
#!/bin/sh
# define globally used paths/variables
PATH=/bin:/sbin:/usr/bin:/usr/sbin

TEMP=/tmp
TMPDIR=/tmp

ORACLE_BASE=/Users/shared/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
ORACLE_OWNER=oracle
export PATH ORACLE_BASE ORACLE_HOME ORACLE_OWNER

# debug
echo '****************************'
echo ' env for Oracle'
echo '****************************'
env

echo ''
echo '*************************************'
echo ' hard and soft shell resource limits'
echo '*************************************'
echo 'Soft / Hard limit:'
launchctl limit

# get common system config setting
. /etc/rc.common

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo 'Oracle startup : cannot start'
echo ' (cannot find one or both of dbstart or $ORACLE_HOME)'
exit
fi

StartService ()
{
ConsoleMessage "Starting Oracle database..."
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
ConsoleMessage "Started Oracle database."
}

StopService ()
{
ConsoleMessage "Stopping Oracle Database..."
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
ConsoleMessage "Stopped Oracle Database."
}


RestartService ()
{
ConsoleMessage "Stopping Oracle Database..."
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
ConsoleMessage "Stopped Oracle Database."

ConsoleMessage "Starting Oracle database..."
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
ConsoleMessage "Started Oracle database"
}

RunService "$1"
guppy:˜ discus$


・StartupItemsに配置するStartupParameters.plistは前のままで変更なし。

guppy:˜ discus$ cat /Library/StartupItems/Oracle/StartupParameters.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Description</key>
<string>Oracle10g 10.2.0.4.0 Database Server</string>
<key>OrderPreference</key>
<string>Late</string>
<key>Provides</key>
<array>
<string>Oracle10g 10.2.0.4.0 Database</string>
</array>
<key>Requires</key>
<array>
<string>Disks</string>
</array>
<key>Uses</key>
<array>
<string>Disksv/string>
<string>Network</string>
<string>NFS</string>
</array>
</dict>
</plist>
guppy:˜ discus$


そして最後に一番重要なdbstartとdbshutの変更というか修正と...

MacOSXではLD_LIBRARY_PATHではなくDYLD_LIBRARY_PATH環境変数なので(Oracleさん修正宜しくね。;)
それも合わせて修正してあります。LD_LIBRARY_PATHを使っているのはバグでしょう。:)
以下、変更前のdbstartと変更後のdbstartと変更前のdbshutと変更後のdbshutのdiffです。

Oracle10g R2向け環境変数一覧(全プラットフォーム分)のマニュアルはこちら。

尚、Oracle10g release2 10.2.0.4.0 for MacOSX Server(Intelx86-64)のdbstart及びdbshutは$ORACLE_HOME/bin以下にあります。(書く必要はないと思いますが・・)

guppy:˜ oracle$ diff $ORACLE_HOME/bin/dbstart.org $ORACLE_HOME/bin/dbstart

86c86
< SAVE_LLP=$LD_LIBRARY_PATH
---
> #SAVE_LLP=$LD_LIBRARY_PATH
89a90
> DYLD_LIBRARY_PATH=$ORACLE_HOME_LISTNER/lib; export DYLD_LIBRARY_PATH
147c148
< LD_LIBRARY_PATH=${SAVE_LLP}:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
---
> #LD_LIBRARY_PATH=${SAVE_LLP}:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ diff $ORACLE_HOME/bin/dbshut.org $ORACLE_HOME/bin/dbshut
75c75
< SAVE_LLP=$LD_LIBRARY_PATH
---
> #SAVE_LLP=$LD_LIBRARY_PATH
78a79
> DYLD_LIBRARY_PATH=$ORACLE_HOME_LISTNER/lib; export DYLD_LIBRARY_PATH
117c118
< LD_LIBRARY_PATH=${SAVE_LLP}:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
---
> # LD_LIBRARY_PATH=${SAVE_LLP}/:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
guppy:˜ oracle$

さて、お待たせしました。上記変更したスクリプトとplistで起動/停止の動作確認です。以下のように問題なく起動するようになります。ニッコリ :)
まずは起動から。

guppy:˜ discus$ 
guppy:˜ discus$ sudo /sbin/SystemStarter -nd start "Oracle10g 10.2.0.4.0 Database"
SystemStarter[11715]: Found item: HP IO
SystemStarter[11715]: Found item: HP Trap Monitor
SystemStarter[11715]: Uses: Evaluating HP IO
SystemStarter[11715]: Uses: Keeping HP IO
・・・・中略・・・・
SystemStarter[11715]: Running command (11716): /Library/StartupItems/Oracle/Oracle start
****************************
env for Oracle
****************************
SHELL=/bin/bash
TERM=xterm-color
ORACLE_OWNER=oracle
USER=root
・・・・中略・・・・
ORACLE_HOME=/Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1
・・・・中略・・・・
*************************************
hard and soft shell resource limits
*************************************
Soft / Hard limit:
cpu unlimited unlimited
filesize unlimited unlimited
data 6291456 unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 2068 2068
maxfiles 65536 65536
Starting Oracle database...
Processing Database instance "leopard1": log file /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/startup.log
SystemStarter[11715]: Waiting for Oracle10g 10.2.0.4.0 Database Server
SystemStarter[11715]: Waiting for Oracle10g 10.2.0.4.0 Database Server
SystemStarter[11715]: Waiting for Oracle10g 10.2.0.4.0 Database Server
Started Oracle database.
SystemStarter[11715]: Finished Oracle10g 10.2.0.4.0 Database Server (11716)
SystemStarter[11715]: none left
guppy:˜ discus$
guppy:˜ discus$ ps -axc | grep tnslsnr
11728 ?? 0:00.03 tnslsnr
guppy:˜ discus$ ps -ax | grep ora_
11820 ?? 0:00.05 ora_pmon_leopard1
11822 ?? 0:00.04 ora_psp0_leopard1
11824 ?? 0:00.13 ora_mman_leopard1
11826 ?? 0:00.05 ora_dbw0_leopard1
11828 ?? 0:00.07 ora_lgwr_leopard1
11830 ?? 0:00.10 ora_ckpt_leopard1
11832 ?? 0:00.40 ora_smon_leopard1
11834 ?? 0:00.06 ora_reco_leopard1
11836 ?? 0:01.33 ora_cjq0_leopard1
11838 ?? 0:00.92 ora_mmon_leopard1
11840 ?? 0:00.07 ora_mmnl_leopard1
11842 ?? 0:00.02 ora_d000_leopard1
11844 ?? 0:00.02 ora_s000_leopard1
11848 ?? 0:00.03 ora_qmnc_leopard1
11918 ?? 0:00.03 ora_q000_leopard1
11924 ?? 0:00.03 ora_q001_leopard1
11931 ttys000 0:00.00 grep ora_
guppy:˜ discus$

次は停止。ところでLeopardのSystemStarterコマンドって-nオプション付けてもスクリプト実行しちゃうのね。今気付いた。www (^^;;;

guppy:˜ discus$ sudo /sbin/SystemStarter -nd stop "Oracle10g 10.2.0.4.0 Database"
・・・・中略・・・・
SystemStarter[11933]: Found item: Oracle
SystemStarter[11933]: Requires: Evaluating Disks
SystemStarter[11933]: Uses: Evaluating Disks
SystemStarter[11933]: Uses: Evaluating Network
SystemStarter[11933]: Checking Oracle10g 10.2.0.4.0 Database Server
・・・・中略・・・・
SystemStarter[11933]: Running command (11934): /Library/StartupItems/Oracle/Oracle stop
・・・・中略・・・・
Stopping Oracle Database...
Processing Database instance "leopard1": log file /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/shutdown.log
SystemStarter[11933]: Waiting for Oracle10g 10.2.0.4.0 Database Server
SystemStarter[11933]: Waiting for Oracle10g 10.2.0.4.0 Database Server
Stopped Oracle Database.
SystemStarter[11933]: Finished Oracle10g 10.2.0.4.0 Database Server (11934)
SystemStarter[11933]: none left
guppy:˜ discus$ ps -axc | grep tnslsnr
guppy:˜ discus$ ps -ax | grep ora_
12057 ttys000 0:00.00 grep ora_
guppy:˜ discus$

最後に、Pantherの頃だったか自動起動はするものの自動停止時にスクリプトが実行されていないという問題があったが、LeopardのSystemStarterでは解決しているようでOSの停止時にしっかり自動停止されていることが確認できた。以下、コンソールログとshutdown.log(自動停止時に記録するようになっているログファイル)


3


コンソールログ

4/18/09 1:20:03 AM com.apple.SystemStarter[25]  env for Oracle 
4/18/09 1:20:03 AM com.apple.SystemStarter[25] ORACLE_OWNER=oracle
4/18/09 1:20:03 AM com.apple.SystemStarter[25] ORACLE_BASE=/Users/shared/u01/app/oracle
4/18/09 1:20:03 AM com.apple.SystemStarter[25] ORACLE_HOME=/Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1
4/18/09 1:20:03 AM com.apple.SystemStarter[25] Stopping Oracle Database...
4/18/09 1:20:03 AM com.apple.SystemStarter[25] Processing Database instance "leopard1":
log file /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/shutdown.log
4/18/09 1:20:12 AM com.apple.SystemStarter[25] Stopped Oracle Database.

shutdown.logファイルの内容

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Apr 18 01:20:03 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

> Connected.
SYS> Database closed.
Database dismounted.
ORACLE instance shut down.
SYS> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Database instance "leopard1" shut down.


今日はこれまで。次回は、え〜〜〜〜!!! onsがバグってる?! というお話




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)
Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)

| | | コメント (0) | トラックバック (0)

2009年4月17日 (金)

Leopard de Oracle10g R2 (Intel x86-64) #4 (Companion CD installation)

Leopard de Oracle10g R2。データベースインストール、構成後、リスナーやデータベースインスタンスを停止してCompanion CD Installationへ。

TerminalからunzipしたCompanion CDディレクトリへ移動しrunInstaller.shを起動
Companion_cd_inst_002

Companion_cd_inst_003

あどは(訛ってどうするw)あとはOUIの指示に従いクリック、クリック。
Companion_cd_inst_004

Companion_cd_inst_005

Companion_cd_inst_006

Companion_cd_inst_007

Companion_cd_inst_008_2

Companion_cd_inst_009

Companion CDでは以下のプロダクトが提供されると書かれているがunsupported productであるUltra Searchはインストール、構成される模様。やはりOEMが構成されないのは構成自体がコケルからか・・・やはり??? 謎は深まる。。(爆
Companion_cd_inst_001

今日はこれまで。



バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2
Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)

| | | コメント (0) | トラックバック (0)

2009年4月16日 (木)

Leopard de Oracle10g R2 (Intel x86-64) #3 (ちょいと寄り道)

データベースをインストールして気付いたのだが、Oracle Enterprise Manager Database Controlが構成されていない。。。。Unsupported Productsのリストには記載されているけどiSQL*Plusは構成されているんだよな〜、使える使えない、サポートされるとかサポートされないとかは別としても。。。。
もしかしてOEMの構成自体がこけるとか?!・・・取りあえずリリースしたという感じがしないでもないOracle10g Release2 for MacOSX (Intel x86)ですが、Oracle11g release 1 for MacOSX (Intel x86) リリースへの伏線なのかも。
「MacOSXでもまだ営業中ですよ〜〜ん!」、というOracleさんの意志は感じますもの。。。:)

DBCAの画面でもOEMの構成は選択できない。
No_oem10g

しかし、同じくunsupportとなっているiSQL*Plusは何故か構成されているようだ。
Isqlplus

以下、Oracle10g R1 10.1.0.3.0 EE + APEX 3.0 for MacOSX Server Panther (PowerPC)Oracle10g R2 10.2.0.4.0 EE for MacOSX Server Leopard (Intel x86)のDBA_REGISTRYビューの比較。確かにOEMはR2には無いみたい。

 COMP_NAME                                VERSION              STATUS
---------------------------------------- -------------------- ---------------------------------
JServer JAVA Virtual Machine 10.1.0.3.0 VALID
OLAP Analytic Workspace 10.1.0.3.0 VALID
OLAP Catalog 10.1.0.3.0 VALID
Oracle Application Express 3.0.0.00.20 VALID
Oracle Data Mining 10.1.0.3.0 VALID
Oracle Database Catalog Views 10.1.0.3.0 VALID
Oracle Database Java Packages 10.1.0.3.0 VALID
Oracle Database Packages and Types 10.1.0.3.0 INVALID
Oracle Enterprise Manager 10.1.0.3.0 VALID
Oracle Expression Filter 10.1.0.3.0 VALID
Oracle OLAP API 10.1.0.3.0 VALID
Oracle Text 10.1.0.3.0 INVALID
Oracle Ultra Search 10.1.0.3.0 VALID
Oracle Workspace Manager 10.1.0.2.0 VALID
Oracle XDK 10.1.0.3.0 VALID
Oracle XML Database 10.1.0.3.0 VALID
Oracle interMedia 10.1.0.3.0 VALID
Spatial 10.1.0.3.0 VALID

18行が選択されました。

SYS>

COMP_NAME VERSION STATUS
---------------------------------------- -------------------- ---------------------------------
JServer JAVA Virtual Machine 10.2.0.4.0 VALID
OLAP Analytic Workspace 10.2.0.4.0 VALID
OLAP Catalog 10.2.0.4.0 VALID
Oracle Data Mining 10.2.0.4.0 VALID
Oracle Database Catalog Views 10.2.0.4.0 VALID
Oracle Database Java Packages 10.2.0.4.0 VALID
Oracle Database Packages and Types 10.2.0.4.0 VALID
Oracle Expression Filter 10.2.0.4.0 VALID
Oracle OLAP API 10.2.0.4.0 VALID
Oracle Rules Manager 10.2.0.4.0 VALID
Oracle Text 10.2.0.4.0 VALID
Oracle Workspace Manager 10.2.0.4.3 VALID
Oracle XDK 10.2.0.4.0 VALID
Oracle XML Database 10.2.0.4.0 VALID
Oracle interMedia 10.2.0.4.0 VALID
Spatial 10.2.0.4.0 VALID

16行が選択されました。

SYS>


今日はこれまで。




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1
Leopard de Oracle10g R2 (Intel x86-64) #2

| | | コメント (0) | トラックバック (0)

2009年4月14日 (火)

Leopard de Oracle10g R2 (Intel x86-64) #2

Leopard de Oracle10g release 2 (Intel x86-64)の続きです。

前回はOracle Universal Installerを起動したところまでだった。
今回はその続き。Oracle10g release 2 10.2.0.4.0の起動確認と停止まで確かめてみた。

guppy:˜ oracle$ cd /Users/Shared/db/Disk1
guppy:Disk1 oracle$ ll
total 16
drwxr-xr-x@ 10 discus staff 340 Apr 3 02:18 doc
drwxr-xr-x@ 15 discus staff 510 Apr 2 22:49 install
drwxr-xr-x@ 7 discus staff 238 Apr 2 22:49
response
-rwxr-xr-x@ 1 discus staff 1980 Apr 2 22:49 runInstaller
drwxr-xr-x@ 47 discus staff 1598 Apr 2 22:49 stage
-rw-r--r--+ 1 discus staff 3911 Apr 3 02:18 welcome.html
guppy:Disk1 oracle$ ./runInstaller &
[1] 738
guppy:Disk1 oracle$ Starting Oracle Universal Installer...

No pre-requisite checks found in oraparam.ini,
no system pre-requisite checks will be executed.
Preparing to launch Oracle Universal Installer from
/tmp/OraInstall2009-04-12_03-gguppguppguppy:Disggggguguguggguppy:Disk1 oracle$

21_2

インストールの模様はYouTubeでどうぞ。HD版がおすすめですよ。


22_3
上記画面が現れたらいつものお約束、root.shの実行

guppy:˜ discus$ sudo /Users/shared/u01/app/oraInventory/orainstRoot.sh
権限の変更:/Users/shared/u01/app/oraInventory : 770.
グループ名の変更:/Users/shared/u01/app/oraInventory : oinstall.
スクリプトの実行が完了しました
guppy:˜ discus$ sudo /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/root.sh
-bash: /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/root.sh: Permission denied
guppy:˜ discus$ sudo /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/root.sh
Running Oracle 10g root.sh script...

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
guppy:˜ discus$

これでOUIによるインストールは終了。MacOSX 10.5.6でもインストールできるでしょ!。:)

さて、仕上げは環境変数 .bashrcを以下のように設定(Oracle JDeveloper 11g with Oracle WebLogic Server for MacOSXをインストール済みなので関連する環境変数も入れてあるが気にしないでください。)

guppy:˜ oracle$ cat .bashrc
alias ll='ls -lv'

export ORACLE_BASE=/Users/shared/u01/app/oracle
export ORACLE_SID=leopard1
export ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
export NLS_LANG=Japanese_Japan.AL32UTF8
export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH

#for Oracle11g and Jdeveloper Oracle Middleware HOME
export ORACLE_MIDDLEWARE_HOME=/Users/Shared/Oracle/Middleware

guppy:˜ oracle$

では最後の確認を。

guppy:˜ oracle$ . .bashrc
guppy:˜ oracle$ onsctl ping
ons is running ...
guppy:˜ oracle$ lsnrctl status

LSNRCTL for MacOS X Server: Version 10.2.0.4.0 - Production on 12-4月 -2009 16:51:09

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

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for MacOS X Server: Version 10.2.0.4.0 - Production
開始日 12-4月 -2009 16:49:57
稼働時間 0 日 0 時間 1 分 12 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora
ログ・ファイル /Users/shared/u01/app/oracle/oracle/product/10.2.0/db_1/network/log/listener.log
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=guppy.macdeoracle.jp)(PORT=1521)))
サービスのサマリー...
サービス"PLSExtProc"には、1件のインスタンスがあります。
インスタンス"PLSExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
サービス"leopard1.macdeoracle.jp"には、1件のインスタンスがあります。
インスタンス"leopard1"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"leopard1XDB.macdeoracle.jp"には、1件のインスタンスがあります。
インスタンス"leopard1"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"leopard1_XPT.macdeoracle.jp"には、1件のインスタンスがあります。
インスタンス"leopard1"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
guppy:˜ oracle$
guppy:˜ oracle$
guppy:˜ oracle$ sqlplus sys@leopard1 as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on 日 4月 12 16:51:25 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

パスワードを入力してください:


Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for MacOS X Server: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
guppy:˜ oracle$

guppy:˜ oracle$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on 日 4月 12 16:59:33 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

SQL> conn / as sysdba
接続されました。
SQL> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
guppy:˜ oracle$ lsnrctl stop

LSNRCTL for MacOS X Server: Version 10.2.0.4.0 - Production on 12-4月 -2009 16:59:58

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

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
コマンドは正常に終了しました。
guppy:˜ oracle$

Copyright 2007というのが2009に登場したのだからOracle11gは意外とすんなりリリースされたりして・・・・・

次回はCompanion CDで追加インストールでもやりましょうか・・・・




バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)
Leopard de Oracle10g R2 (Intel x86-64) #1

| | | コメント (0) | トラックバック (0)

2009年4月13日 (月)

Leopard de Oracle10g R2 (Intel x86-64) #1

ひさびさに、Mac De Oracleらしい内容かも。。。:)

Oracle® Database Installation Guide 10g Release 2 (10.2) for Apple Mac OS X (Intel)を元にホスト名等を変更していますが、ホスト名はhogehoge.localのような形式でも問題なはず(試したわけではないので駄目かもしれませんが、以前のリリースではOKだったので)。また、該当マニュアルにはMacOSX PantherやTigerの初期をイメージした記述があるのでLeopard向けに一部マニュアルとは異なるコマンド等を利用しています。

前回は結果だけをお見せしたので、今日からはインストールの模様を数回に分けてか書く予定です。
今回はインストール環境を整えてOUI(Oracle Universal Installer)を起動するところまで。

まず、HardwareとSoftwareの確認から。(お約束なので。)
今回利用したマシンはApple MacBook Pro 15inchです。

インストレーションガイドにはOnly the versions listed in the previous table are supported. Do not install the software on other versions of Apple Mac OS X.と書いてありますが、お遊び環境ならそれ以外でもインストールできますよ。またJDK1.4.2と書かれていて、laterとはかかれていないことも気になったが取りあえずJavaSE6.0でいきます。(JDeveloper11gとかOracle WebLogic Serverもインストール済みなので。。。)

Macintosh:˜ discus$ /usr/sbin/system_profiler SPHardwareDataType | grep -E '(Processor|Cores|Memory)'
Processor Name: Intel Core 2 Duo
Processor Speed: 2.2 GHz
Number Of Processors: 1
Total Number Of Cores: 2
Memory: 2 GB
Macintosh:˜ discus$
Macintosh:˜ discus$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.6
BuildVersion: 9G55
Macintosh:˜ discus$
Macintosh:˜ discus$ df -h /
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s2 111Gi 66Gi 45Gi 60% /
Macintosh:˜ discus$
Macintosh:˜ discus$ df -h /tmp
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s2 111Gi 66Gi 45Gi 60% /
Macintosh:˜ discus$
Macintosh:˜ discus$ uname -a
Darwin Macintosh.local 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00
PST 2008; root:xnu-1228.9.59˜1/RELEASE_I386 i386
Macintosh:˜ discus$
Macintosh:˜ discus$ gcc --version
i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5488)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Macintosh:˜ discus$
Macintosh:˜ discus$ java -version
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_07-b06-57, mixed mode)
Macintosh:˜ discus$
Macintosh:˜ discus$ system_profiler SPApplicationsDataType | grep Xcode
Xcode:
Get Info String: Xcode version 3.1.1
Location: /Developer/Applications/Xcode.app
Macintosh:˜ discus$

次はOracle所有者のグループ及びOracle所有者の作成
既存gidとuidを確認後、oinstall及びdbaグループを作成し、oracleユーザーを作成します。
LeopardではNetInfoManagerが無くなったのでPantherの頃利用していたniclコマンドは使えないので、替わりにdsclコマンドを使って作成します。

Macintosh:˜ discus$ sudo dscl . -list /groups gid name | more
・・・中略・・・
netusers 52
network 69
nobody -2
nogroup -1
・・・中略・・・
Macintosh:˜ discus$
Macintosh:˜ discus$ sudo dscl . -create /groups/oinstall
Password:
Macintosh:˜ discus$ sudo dscl . -append /groups/oinstall gid 502
Macintosh:˜ discus$ sudo dscl . -append /groups/oinstall passwd "*"
Macintosh:˜ discus$
Macintosh:˜ discus$ sudo dscl . -create /groups/dba
Macintosh:˜ discus$ sudo dscl . -append /groups/dba gid 503
Macintosh:˜ discus$ sudo dscl . -append /groups/dba passwd "*"
Macintosh:˜ discus$ sudo dscl . -list /groups gid name | grep -E '(dba|oinstall)'
dba 503
oinstall 502
Macintosh:˜ discus$
Macintosh:˜ discus$ sudo dscl . -list /users uid name | more
・・・中略・・・
daemon 1
discus 502
nobody -2
root 0
uucp 4
(END)

Macintosh:˜ discus$
Macintosh:˜ discus$ sudo dscl . -create /users/oracle
Macintosh:˜ discus$ sudo dscl . -append /users/oracle uid 503
Macintosh:˜ discus$ sudo dscl . -append /users/oracle gid 502
Macintosh:˜ discus$ sudo dscl . -append /users/oracle shell /bin/bash
Macintosh:˜ discus$ sudo dscl . -append /users/oracle home /Users/oracle
Macintosh:˜ discus$ sudo dscl . -append /users/oracle realname "Oracle software owner"
Macintosh:˜ discus$ sudo mkdir /Users/oracle
Macintosh:˜ discus$ sudo chown oracle:oinstall /Users/oracle
Macintosh:˜ discus$ sudo passwd oracle
Changing password for oracle.
New password:
Retype new password:
Macintosh:˜ discus$ sudo dscl . -append /groups/dba GroupMembership oracle
Macintosh:˜ discus$ id oracle
uid=503(oracle) gid=502(oinstall) groups=502(oinstall),503(dba)
Macintosh:˜ discus$
Macintosh:˜ discus$
Macintosh:˜ discus$ sudo dscl . -read /users/oracle
・・・中略・・・
NFSHomeDirectory: /Users/oracle
Password: ********
PrimaryGroupID: 502
RealName:
Oracle software owner
RecordName: oracle
RecordType: dsRecTypeNative:users
UniqueID: 503
UserShell: /bin/bash
Macintosh:˜ discus$ sudo dscl . -read /groups/dba
AppleMetaNodeLocation: /Local/Default
GroupMembership: oracle
Password: *
PrimaryGroupID: 503
RecordName: dba
RecordType: dsRecTypeNative:groups
Macintosh:˜ discus$


これもお約束の作業、カーネルパラメータの調整です。既存の値を確認してインストレーションガイドで指定された値より小さければ変更します。変更するパラメータは/etc/sysctl.confへ設定しておきます。

Macintosh:˜ discus$ /usr/sbin/sysctl -a | grep sem
kern.sysv.semume: 10
kern.sysv.semmsl: 87381
kern.sysv.semmnu: 87381
kern.sysv.semmns: 87381
kern.sysv.semmni: 87381
kern.posix.sem.max: 10000
security.mac.sysvsem_enforce: 1
security.mac.posixsem_enforce: 1
Macintosh:˜ discus$ /usr/sbin/sysctl -a | grep shm
kern.sysv.shmall: 1024
kern.sysv.shmseg: 8
kern.sysv.shmmni: 32
kern.sysv.shmmin: 1
kern.sysv.shmmax: 4194304
machdep.pmap.hashmax: 11
security.mac.sysvshm_enforce: 1
security.mac.posixshm_enforce: 1
Macintosh:˜ discus$ /usr/sbin/sysctl -a | grep maxfiles
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
Macintosh:˜ discus$ /usr/sbin/sysctl -a | grep ortrange
net.inet.ip.portrange.hilast: 65535
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.last: 65535
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.lowfirst: 1023
Macintosh:˜ discus$ /usr/sbin/sysctl -a | grep corefile
kern.corefile = /cores/core.%P
kern.corefile: /cores/core.%P
Macintosh:˜ discus$ /usr/sbin/sysctl -a | grep maxproc
kern.maxproc = 532
kern.maxprocperuid = 266
kern.maxproc: 532
kern.maxprocperuid: 266
Macintosh:˜ discus$
Macintosh:˜ discus$
Macintosh:˜ discus$
Macintosh:˜ discus$ cat /etc/sysctl.conf
#for Oracle10gR2 setting
kern.sysv.shmall=2097152
kern.sysv.shmmni=4096
kern.sysv.shmmax=1073741824
kern.maxfiles=65536
kern.maxfilesperproc=65536
net.inet.ip.portrange.first=1024
kern.maxproc=2068
kern.maxprocperuid=2068
Macintosh:˜ discus$

次にShell limitの設定。

マニュアルには/System/Library/StartupItems/IPServices/IPServices scriptを編集する・・・
とありますがLeopardではこのスクリプト自体というかSystemStarterが非推奨となりStartupItemsというディレクトリがあるだけでスクリプトはありません。替わりにlaunchdが用意されているので/etc/launchd.confに設定します。
一応LeopardでもStartupItemsにスクリプトを置けば実行してくれますが。。。元になるIPServicesスクリプトが無いのでね。Leopardには。(^^;;;;

現在の値を確認するにはulimitコマンドを利用してもいいですが、launchctlコマンドが用意されているのでこれを使ったほうがソフトリミット/ハードリミットの両方を一度に確認できて便利です。umaskは問題ないのでlimitだけ調整しておきます。

Macintosh:˜ discus$ umask
0022
Macintosh:˜ discus$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data 6291456 unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 266 352
maxfiles 12288 65530
Macintosh:˜ discus$
Macintosh:˜ discus$ ulimit -aS
core file size (blocks, -c) 0
data seg size (kbytes, -d) 6144
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 12288
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 266
virtual memory (kbytes, -v) unlimited
Macintosh:˜ discus$
Macintosh:˜ discus$ ulimit -aH
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 65530
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 65532
cpu time (seconds, -t) unlimited
max user processes (-u) 352
virtual memory (kbytes, -v) unlimited
Macintosh:˜ discus$
Macintosh:˜ discus$
Macintosh:˜ discus$ cat /etc/launchd.conf
limit maxproc 2068 2068
limit maxfiles 65536 65536
Macintosh:˜ discus$


マウントポイントとORACLE_BASEとするディレクトリを作成しておきます。今回は/Users/Shared以下に作成することにしました。分かり易いようにu01としておきます。
詳細はマニュアル参照のこと

Macintosh:˜ discus$ cd /Users/Shared
Macintosh:Shared discus$ mkdir u01
Macintosh:Shared discus$ cd /Users/Shared/u01
Macintosh:u01 discus$ mkdir app
Macintosh:u01 discus$ mkdir app/oracle
Macintosh:u01 discus$ cd ..
Macintosh:Shared discus$ sudo chown -R oracle:oinstall u01
Macintosh:Shared discus$ sudo chmod -R 755 u01


そしてネットワーク関連の構成(自宅のLAN環境は固定IPなので今回利用するMacBook Proにはguppyと名付けてホスト名と/etc/hostsを構成します。この箇所はインストレーションガイドのChecking the Network Setupの内容とは異なりますのでご注意ください。)
ホスト名の変更にはhostnameコマンドの他、scutilコマンドを使いました。

Macintosh:˜ discus$ sudo hostname guppy
Macintosh:˜ discus$ hostname
guppy
Macintosh:˜ discus$ sudo scutil --set LocalHostName $(hostname)
Macintosh:˜ discus$ sudo scutil --set HostName $(hostname)
Macintosh:˜ discus$ hostname
guppy.macdeoracle.jp
Macintosh:˜ discus$ sudo scutil --get LocalHostName
guppy
Macintosh:˜ discus$ sudo scutil --get HostName
guppy.macdeoracle.jp
Macintosh:˜ discus$
Macintosh:˜ discus$ cat /etc/hosts | grep guppy
192.168.1.6 guppy.macdeoracle.jp guppy


ここでMacOSXを再起動


変更したkernel parameter値、及びshell limit値を確認

guppy:˜ discus$ sysctl -a | grep -E '(portrange.last|portrange.first)'
net.inet.ip.portrange.last: 65535
net.inet.ip.portrange.first: 1024
guppy:˜ discus$ sysctl -a | grep -E '(shmall|shmmni|shmmax)'
kern.sysv.shmall: 2097152
kern.sysv.shmmni: 4096
kern.sysv.shmmax: 1073741824
guppy:˜ discus$ sysctl -a | grep -E '(maxfiles|maxfilesperproc)'
kern.maxfiles: 65536
kern.maxfilesperproc: 65536
guppy:˜ discus$ sysctl -a | grep -E '(maxproc|macprocperuid)'
kern.maxproc: 2068
kern.maxprocperuid: 2068
guppy:˜ discus$
guppy:˜ discus$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data 6291456 unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 2068 2068
maxfiles 65536 65536
guppy:˜ discus$


ここまでできたら、Fast User Switchでoracleユーザへログインし、Terminalを起動する。
Terminalを起動したら以下の環境変数を.bashrcに設定、反映させる。(あらかじめORACLE_BASEとして定義するディレクトリは作成しておいた。)

guppy:˜ oracle$ echo $ORACLE_BASE
/Users/shared/u01/app/oracle
guppy:˜ oracle$ echo $ORACLE_SID
leopard1
guppy:˜ oracle$


21

22_2


23


次に、ダウンロード、解凍したOracle10g R2 for MacOSX Server (Intel x86-64) DBのDisk1ディレクトリへ移動し、runInstaller起動してインストール開始。
(今回は特にカスタマイズせず、Enterprise Editionをインストールし、汎用タイプとして構成されたデータベースを作成。)

guppy:˜ oracle$ cd /Users/Shared/db/Disk1
guppy:Disk1 oracle$ ll
total 16
drwxr-xr-x@ 10 discus staff 340 Apr 3 02:18 doc
drwxr-xr-x@ 15 discus staff 510 Apr 2 22:49 install
drwxr-xr-x@ 7 discus staff 238 Apr 2 22:49
response
-rwxr-xr-x@ 1 discus staff 1980 Apr 2 22:49 runInstaller
drwxr-xr-x@ 47 discus staff 1598 Apr 2 22:49 stage
-rw-r--r--+ 1 discus staff 3911 Apr 3 02:18 welcome.html
guppy:Disk1 oracle$ ./runInstaller &
[1] 738
guppy:Disk1 oracle$ Starting Oracle Universal Installer...

No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
Preparing to launch Oracle Universal Installer
from /tmp/OraInstall2009-04-12_03-gguppguppguppy:Disggggguguguggguppy:Disk1 oracle$

22

次回へつづく。



バックナンバー

Oracle10g R2 for MacOSX (Intel x86-64) released !!!
Leopard de Oracle10g release 2 (Intel x86-64)

| | | コメント (0) | トラックバック (0)

2009年4月12日 (日)

Leopard de Oracle10g release 2 (Intel x86-64)

昨日、Oracle10g R2 for MacOSX Server Leopard (Intel x86-64)版がなが〜〜い月日を経てようやくUS OTNからダウンロードできるようになったと書いたが早速インストールしてみた。

だたし、今日はデータベースのインストールの結果のみ。

(但し、うまくインストールできたが、幾つか気に入らないところもあるのでそれは後で。US OTNではその辺りを突っ込んでる方もいるみたいだけど。:)

22_3

Intel x86のみとはいえ、MacOSX Leopard 上で使えるOracle10g R2を見れるということはうれしい。(あとは11gね。)
ちなみに、Oracle10g R2 for MacOSX Server Leopard (Intel x86-84)版だが、今回はMacOSX Leopard、そうServerではなくてもインストールは可能、以前のように。:)
尚、動作確認された環境でないことは承知のうえで試してくださいね。

上記はMacOSX Tiger Server 10.4.11のOracle Instant Client 10g R1から接続している様子です。


| | | コメント (0) | トラックバック (0)

2009年4月11日 (土)

Oracle10g R2 for MacOSX (Intel x86-64) released !!!

え〜〜、やった〜〜、ついにMacOSX版 Oracle10g R2リリース!!!
試すぞ〜〜〜〜。なが〜〜〜〜〜〜〜〜いことまったよ。w
11gのリリースも急いでね。楽しみにしてるから。:)

23

2009/4/12追記
いや〜Installation Guide見てて、かなり古いリリースでテストしていたんですね、という感じを受けた。でもOracle10g Release2が他のプラットフォームでリリースされていたのはこのころだったかもしれないけど....MacOSX 10.5.4でJDK1.4.2だからなぁ。JDKは古いバージョンのもあるけど、JavaSE6.0にしたからなぁ。まあ、どうにでもできる環境だからとりあえず全て最新ということでまずは試してみるか!

22

2009/4/13:タイポなど修正

| | | コメント (0) | トラックバック (0)

2009年4月 9日 (木)

Oracle SQL Developer 1.5.4 for MacOSXでキーボードプリセットがロードされていない件

「Oracle SQL Developer 1.5.4 がリリースされたので早速入れ替えてみた」という記事を書いたが、使い始めてさらに気付いたことがあった。それはコードエディタで既存プロシージャを編集中にタイプミスした文字を削除しようとしたことから発覚。以下、発見当時の生中継! w

backspaceをタイプ。

ん?
backspace

backspace、ん?

backspace backspace backspace

あれ〜〜、backspaceが効かない。

enter keyをタイプしても改行しない!!


Oracle SQL Developer 1.5.4ってMacOSXのkeyboardにキ−イベントをちゃんとハンドリングしてくれてない?!。command+sで保存もできないし〜〜。なんで〜〜〜。

というところから捜査は始まった!

しかし、US OTNで同様の話題があることを発見しすぐに解決。MacOSXのkeyboard presetが正しくロードされていないのが原因らしい。。
次期リリースでは改善されることを期待します。オラクル様


6

上記のhogehoge部分を削除したいだけなのだがbackspaceが効かない。US OTNの該当スレッドによれば単純にkeyboard presetがロードされていないということなのでやってみた。
7

1

9_2

10

12

お〜〜〜めでたくbackspaceキーで削除できた。改行もenterキーでできた!。 command+sで保存もできた。ふ〜〜っ。やれやれ。

| | | コメント (0) | トラックバック (0)

2009年4月 8日 (水)

MobileMeユーザを狙ったフィッシングメール(ついに来たか?!):注意してね

MobileMeユーザーを狙ったフィッシング詐欺が発生(ZDNet Japan)でも書かれているMobileMeユーザーを狙ったフィッシングメールが送られて来た。(もちろん英語で。日本語だったらあぶなかったかも。。なんて冷や汗たら〜〜〜り。多分間違いなく例のフィッシングメールだと思う。だって、もうMobileMeの更新処理は済んでますもの。私。)

以下、メールの画像
メールのサブジェクトは「Mobileme Service interruption」となっている。これを見た瞬間。え〜〜MobileMeが使えなくなる〜と焦りましたが・・・いや、ちょっと待て!!!、おかしいぞ〜このメール・・・・

44_2

メールはHTMLメールで巧妙に偽造されているのでパッと見はフィッシングメールであることに気付きにくい。が、日本人には日本語で来るのだよ。Appleさんからは・・・。日本語だったら少々甘くなるところだったが・・・(汗)
ZDNet Japanの元ネタとなっている「MobileMe users targeted in phishing scam again」という記事で紹介されている通りの内容だ。メールのタイトル等は微妙に変っているようだが。
HTMLメールのフッター部分のソースを見るとApple USへの正しいリンクが貼ってある。但し、「Login」となっているボタンの飛び先は怪しいドメイン(Appleのドメインではない)。しかも、"http"、そう"https"ではなく、"http"。重要な入力をするのに"http"は無いでしょう・・

39

そして、怪しいと思ったら、メールヘッダを確認してみましょう!!!!

見てみると・・・・、あ、やっぱり。Received: from がAppleのドメインではない!!!。
しかも、MailerがなんとMicrosoft Outlook Express 6となっている。Appleの中の人からのメールがOutlook Expressで送られてくるわけないでしょうに。

39_2

現在、このメールが例のフィッシングメールである可能性が高いためAppleへ確認している。(Apple社からの回答でやはりフィッシングであることが確認されたので、該当メールを対策チームへ転送した。)
MacユーザでMobileMeユーザーの日本人の皆さん、このような特徴のあるメールを受信したら注意してくださいね。このような偽メールを受け取ったらAppleに確認することも大切ですよ。

MobileMe News - フィッシングサギについてのご注意
http://www.apple.com/jp/mobileme/news/2008/08/post.html


2009/4/8追記
2009/4/9:Apple MobileMe Newsで昨年発生したフィッシングについての注意を追記
2009/4/10:Apple MobileMe担当よりAppleからフィッシングメールであるとの回答追加。

| | | コメント (0) | トラックバック (0)

2009年4月 3日 (金)

Nostalgia Break: VirtualPC 7 de Oracle PowerBrowser1.5

元ネタは昨年のOracle AppsLabの「Nostalgia Break: Oracle PowerBrowser」という記事なのだが、Mac de Oracleでも過去、Personal Oracle7 for PowerMacintoshやOracle PowerObjectなどNostalgiaなネタもあったのでつい反応して書いてみる。元ネタとは異なりNostalgiaな度合いど高めるため???、VirtualPC 7上で起動してみた。:)

ところでVirtualPC 7といえばConnectixがマイクロソフトに買収された後、最終版としてマイクロソフトからリリースされたもの。(最近は滅多に起動することもなくなりましたけど・・・・・)

思い出したのでついでに書いておくと、そのころOracle PowerBrowser、Personal Oracle7 for PowerMacintosh、Oracle PowerObject for PowerMacintoshなどなどその後に姿を消す事になる製品に振り回されていた私だったなぁ。Oracle9i/10gとDatabaseはMacOSXで復活するにはしたが・・・・・・どうなるんでしょ。USのforumなど見ているとそう思います。

1

尚、Oracle PowerBrowser1.5.04は現在ここからダウンロードできるようだ。
2

5

8_2

9

10

7

ボタンは当時のNetscapeそっくり。デザイン的にも時代を感じるよな〜〜〜。(^^;;;;
12

| | | コメント (0) | トラックバック (0)

Dashboard de Aquarium v1.3 - あ〜Top50圏外だ〜

今日のDashboard de Aquarium v1.3はついにTop50圏外に〜〜。

ということで今日はアクアリウム好きなあなたに送るiPhone/iPod touch向け115円でmなかなかお買い得なFreshwater Aquariumというアプリケ−ションを紹介しようと思う。FreshWater Aquarium

FreshWater Aquarium

このアプリケーション、単なる水槽を泳ぐ熱帯魚を眺めているだけのアプリケーションではなく、暇つぶしゲーム+AQUAZONE的な要素も持っていて115円と有料アプリながらお得感たっぷり。
暇つぶしゲームとして「釣りゲーム」があり、釣った熱帯魚は自分の水槽へポチャン。増えるわけですな。Dashboard de Aquariumの作者としても参考になります、このアプリ。

Img_0005_2

Img_0011_2

Img_0008

Img_0009

Img_0012

| | | コメント (0) | トラックバック (0)

2009年4月 2日 (木)

ちょいと迷惑だったストアドファンクション(おまけ)

〜〜〜〜し〜〜し〜〜でぃ〜〜っ。む、ぶん!
やけに耳の残っちゃうんだよな〜。あの声とアクセント

なんて関係ない話はおいといて。。と



以前、
ちょいと迷惑だったストアドファンクション
ちょいと迷惑だったストアドファンクション(つづき)

ということを書いていたが、ちょいと迷惑だったストアドファンクションの例外ハンドラーで問題解決の手がかりとするためログ出力が実装されていたらどうするの? っていうこともあるのでおまけのおまけということで書いておきます。

以前の例では例外ハンドラーをバッサリ切り捨ててしまったのですが、例外ハンドラーで問題解決の手がかりとするためのログ出力が実装されていて例外ハンドラーを取り除くことが出来ない場合、例外名無しのRAISE文を使えば解決できますよ。:)

ちょいと迷惑だったストアドファンクションの例外ハンドラーで問題解決の手がかりとするためのログ出力を実装していたらという例・・・・(赤太字部分)

尚、この例ではオープンソースのPL/SQL向けロギングフレームワークLog4PLSQLを利用している。

CREATE OR REPLACE
PACKAGE inconvenient_package
AS
TYPE employeesType IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER;
TYPE membersType IS RECORD (
deptNo dept.deptNo%TYPE
,deptName dept.dName%TYPE
,employees employeesType
);
FUNCTION inconvenient_function(iDeptNo IN dept.deptNo%TYPE)
RETURN membersType;
END inconvenient_package;
/
show errors


CREATE OR REPLACE
PACKAGE BODY inconvenient_package
AS
FUNCTION inconvenient_function(iDeptNo IN dept.deptNo%TYPE)
RETURN membersType
AS
members membersType;
Log4PlsqlCtx plogparam.log_ctx := plog.init(pDBMS_OUTPUT => TRUE); -- Log4PLSQL setting
BEGIN
SELECT
deptNo
,dName
INTO
members.deptNo
,members.deptName
FROM
dept
WHERE
deptNo = iDeptNo
;
--
SELECT *
BULK COLLECT INTO
members.employees
FROM
emp
WHERE
deptno = iDeptNo
;
RETURN members;
EXCEPTION
WHEN NO_DATA_FOUND THEN
plog.warn(Log4PlsqlCtx, sqlerrm()); -- Log4PLSQL warnning
RETURN NULL;
END inconvenient_function;
END inconvenient_package;
/
show errors


変更前ファンクションの例外ハンドラー部分にある"RETURN NULL;"を"RAISE;"(例外名無しのRAISE文)に変更するだけ。

CREATE OR REPLACE
PACKAGE BODY inconvenient_package
AS
FUNCTION inconvenient_function(iDeptNo IN dept.deptNo%TYPE)
RETURN membersType
AS
members membersType;
Log4PlsqlCtx plogparam.log_ctx := plog.init(pDBMS_OUTPUT => TRUE); -- Log4PLSQL setting
BEGIN
SELECT
deptNo
,dName
INTO
members.deptNo
,members.deptName
FROM
dept
WHERE
deptNo = iDeptNo
;
--
SELECT *
BULK COLLECT INTO
members.employees
FROM
emp
WHERE
deptno = iDeptNo
;
RETURN members;
EXCEPTION
WHEN NO_DATA_FOUND THEN
plog.warn(Log4PlsqlCtx, sqlerrm()); -- Log4PLSQL warnning
RAISE;
END inconvenient_function;
END inconvenient_package;
/


例外ハンドラー内で例外名を省略すると該当する例外がさらに外側のブロックへスローされます。詳細はマニュアル(Oracle Database PL/SQL Language Reference 11g Release 1 : RIASE statement)及び、Oracle Database PL/SQL Language Reference 11g Release 1 : How PL/SQL Exceptions Propagate参照のこと。

SCOTT> set linesize 132
SCOTT> set serveroutput on
SCOTT> l
1 DECLARE
2 members inconvenient_package.membersType;
3 Log4PlsqlCtx plogparam.log_ctx := plog.init(pDBMS_OUTPUT => TRUE);
4 BEGIN
5 BEGIN
6 members := inconvenient_package.inconvenient_function(99);
7 DBMS_OUTPUT.PUT_LINE(
8 'Dept name/id:'
9 ||members.deptname
10 ||'/'||TO_CHAR(members.deptno)
11 );
12 FOR i IN members.employees.FIRST..members.employees.LAST LOOP
13 DBMS_OUTPUT.PUT_LINE(' -- '||members.employees(i).ename);
14 END LOOP;
15 EXCEPTION
16 WHEN NO_DATA_FOUND THEN
17 plog.warn(Log4PlsqlCtx, sqlerrm());
18 END;
19* END;
SCOTT> /
12:35:27:02-WARN-block-->SCOTT.INCONVENIENT_PACKAGE ORA-01403: データが見つかりません。
12:35:27:03-WARN-block ORA-01403: データが見つかりません。

PL/SQLプロシージャが正常に完了しました。

SCOTT> l
1 DECLARE
2 members inconvenient_package.membersType;
3 Log4PlsqlCtx plogparam.log_ctx := plog.init(pDBMS_OUTPUT => TRUE);
4 BEGIN
5 BEGIN
6 members := inconvenient_package.inconvenient_function(10);
7 DBMS_OUTPUT.PUT_LINE(
8 'Dept name/id:'
9 ||members.deptname
10 ||'/'||TO_CHAR(members.deptno)
11 );
12 FOR i IN members.employees.FIRST..members.employees.LAST LOOP
13 DBMS_OUTPUT.PUT_LINE(' -- '||members.employees(i).ename);
14 END LOOP;
15 EXCEPTION
16 WHEN NO_DATA_FOUND THEN
17 plog.warn(Log4PlsqlCtx, sqlerrm());
18 END;
19* END;
SCOTT> /
Dept name/id:ACCOUNTING/10
-- CLARK
-- KING
-- MILLER

PL/SQLプロシージャが正常に完了しました。

SCOTT>

| | | コメント (0) | トラックバック (0)

2009年4月 1日 (水)

Dashboard de Aquarium v1.3 - 46位

1

Dashboard de Aquarium v1.3 - 本日は46位、株価みたいな乱高下 :)

| | | コメント (0) | トラックバック (0)

2009年3月31日 (火)

Dashboard de Aquarium v1.3 - 35位

1

Dashboard de Aquarium v1.3 - 本日は35位。ダウンロードしてくださったみなさんありがとうございます。再び浮上しました。:)

| | | コメント (0) | トラックバック (0)

2009年3月30日 (月)

Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #6(おまけ)

Oracle JDeveloper 11gのQuickStartからオンラインマニュアルへジャンプできなくても大した問題ではないのですが・・・とりあえず書いときます。
QuickStartからオンラインドキュメントへジャンプできるようになっているようなのだが、クリックすると、「ブラウザが見つかりません」と言われ、「了解」ボタンをクリックすると開く「ブラウザ選択」でSafariを選んでも「ブラウザが見つかりません」と言われる。ン〜〜。という状態、QuickStartにはPerferenceも無いようなのでFirefoxで試すことはしてない・・・面倒なのとQUickStartから開けなくても困らないから。というの理由で。

1

QuickStartのオンラインドキュメントのアクセスをクリックすると「ブラウザが見つかりません」。。なんで?
2

「了解」ボタンをクリックしてブラウザ(この例ではSafari)を選択して.....と
3

でもやっぱりブラウザが見つかりません・・・・なんですよね。OTNのドキュメントダウンロードすればいいのでこれ以上は調べてないですが・・・
2





バックナンバー
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #1
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #2
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #3
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #4
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #5

| | | コメント (0) | トラックバック (0)

2009年3月29日 (日)

Dashboard de Aquarium v1.3 - 49位

Dashboard de Aquarium v1.3 - 再び土俵際。の49位
49位

| | | コメント (0) | トラックバック (0)

2009年3月28日 (土)

Dashboard de Aquarium v1.3 - Apple(Japan)でも公開

7

いつのまにかApple(japan)でもDashboard de Aquarium v1.3が公開されていました。(^^;;

| | | コメント (0) | トラックバック (0)

創る心とおもてなし~第一回webエンジニア料理対決に参加した

第一回Webエンジニア料理対決
に参加してきた。
最近よく参加している勉強会は最後に懇親会が定番だけど、今回は料理対決がメインでその後にライトニングトーク。料理も美味かったし。第二回も是非開催してください。できればパスタ料理対決で。(^^

では、その模様をちょっとだけ。。。。。

そういえば、料理対決に参加しているリクルート メディアテクノロジーラボさんのコマーシャライザー使わせてもらってます。(2009/3/30追記)

※ブラウザのJavaScriptをONにして、Flash Player9以上をインストールしてください。
Get Adobe Flash Player


料理対決に参加したチームはクックパッドチーム、Yahoo! Japanチーム、リクルートメディアテクノロジーラボチーム。

各チームの料理は・・・・・

・クックパッドチーム:餃子

アジャイルな餃子と、なっとうチーズ餃子、羽根つき餃子(ニーハオを思い出す)の3種
なっとうチーズは期待していたけどチーズがどっかに行っちゃってました。残念。

Img_0122


・リクルート メディアテクノロジーラボチーム:味つけは自分でやってねっ! タコス
結構ソースとか具とか適当に乗っけて食べたんですが、意外に砕いたポテチがアクセントで美味かった。
Img_0128


・Yahoo! Japanチーム:オムライス
このオムライスが個人的には一番美味かった。しかもライスはケチャップライスじゃなく、キムチライスみたい。一番辛いのが一番美味かったよ〜〜。ごちそうさまでした。
Img_0129


そして最後に、ライトニングトーク。初めにクックパッド:佐野 陽光さんの挨拶から
Img_0140

上からYahoo! Japan:一条裕仁さん、リクルート メディアテクノロジーラボ:寺井周平さん、クックパッド:根岸義輝さんのプレゼン。
寺井さんのプレゼンおもしろかったというかそこまで考えていたのかと感じるところが多かった。UIより裏方のDB側の比重が高い私には新鮮だった。と、空きっ腹にビール飲んでしまったのでこんな程度しか書けなくて m(_ _)m

Img_0141

Img_0142

Img_0149

ということで、楽しかったクックパッドを後にしたのでした・・・
Img_0152

あ、そうそうプロフィールには書いているけど、ついでなのでクックパッドにあるMy Kitchenのご紹介。w
6

ここで食べたものは妻のブログ:今日のゴハンでも載せる予定。た。(2009/3/30更新)

| | | コメント (0) | トラックバック (1)

2009年3月27日 (金)

Dashboard de Aquarium v1.3 - 43位

3

Dashbaord de Aquarium v1.3、今日は43位。再浮上できるかな〜。

| | | コメント (0) | トラックバック (0)

Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #5

PowerMac G5 + Java SE6.0 DP1 de Oracle JDeveloper 11gとOracle Weblogic Server 10.3をインストールしちゃうぞ〜の最終回。

前回はJDeveloper 11gを起動して超簡単な動作確認までだった。

今回はBEA Weblogic Server改めOracle WebLogic Server 10.3のコンフィギュレーションから起動確認まで


QuickStartから「Oracle ADFのドメインコンフィギュレーション」をクリック
(2009/4/11画像が間違っていたので入れ替えた)

Jdev11g_powerpc_macosx104_018

見慣れない(当然ですが)スプラッシュが..
Jdev11g_powerpc_macosx104_030

特に変更するところもなくインストーラのデフォルト設定でコンフィギュレーションした。この例で管理ユーザ名はweblogicにしたが、scottにもできるよ。w
Jdev11g_powerpc_macosx104_031

Jdev11g_powerpc_macosx104_032

Jdev11g_powerpc_macosx104_033

Jdev11g_powerpc_macosx104_034

Jdev11g_powerpc_macosx104_035

ドメインを入力(この例ではmac_de_oracle)して・・・・
Jdev11g_powerpc_macosx104_036

Jdev11g_powerpc_macosx104_037
ということで無事コンフィギュレーション終了。

続いて、Oracle Weblogic Server 10.3を起動してAdministration Consoleへログインできることを確認。

その前に 山本祐介さんのWebLogic Server 10g Release 3 を Mac OSX にインストール に記載されているSetDomainEnv.shのJAVA_VENDORの変更を行う。

G5Server:/Volumes/DiscusWork/Development/Oracle/Middleware/user_projects/domains/mac_de_oracle/bin discus$ diff setDomainEnv.sh.org setDomainEnv.sh
89c89,90
< JAVA_VENDOR="Unknown"
---
> # JAVA_VENDOR="Unknown" #modified at 2009/3/18
> JAVA_VENDOR="Sun"

G5Server:˜ discus$
G5Server:˜ discus$ cd /Volumes/DiscusWork/Development/Oracle/Middleware/user_projects/domains/mac_de_oracle/bin
G5Server:/Volumes/DiscusWork/Development/Oracle/Middleware/user_projects/domains/mac_de_oracle/bin discus$ ./startWebLogic.sh
/Volumes/DiscusWork/Development/Oracle/Middleware/user_projects/domains/mac_de_oracle/bin/startWebLogic.sh: Don't know how to set the shared library path for Darwin.
.
.
JAVA Memory arguments: -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m
.
WLS Start Mode=Development
.
・・・・中略・・・・
.
***************************************************
* To start WebLogic Server, use a username and *
* password assigned to an admin-level user. For *
* server administration, use the WebLogic Server *
* console at http://hostname:port/console *
***************************************************
starting weblogic with Java version:
java version "1.6.0-dp"
Java(TM) SE Runtime Environment (build 1.6.0-dp-b88-34)
Java HotSpot(TM) Core VM (build 1.6.0-b88-17-release, interpreted mode, sharing)
Starting WLS with line:

・・・・中略・・・・

<2009/03/18 7時28分12秒 JST> <Notice> <WebLogicServer> <BEA-000365> <サーバ状態が RUNNING に変化しました。>
<2009/03/18 7時28分12秒 JST> <Notice> <WebLogicServer> <BEA-000360> <サーバが RUNNING モードで起動しました。>

変更後、startWebLogic.shのままTerminalから起動してもいいし、.sh拡張子を.commandへ変更しダブルクリックで起動してもOK。
2

Jdev11g_powerpc_macosx104_039

Jdev11g_powerpc_macosx104_040
使えそうですね。:)






バックナンバー
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #1
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #2
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #3
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #4

| | | コメント (0) | トラックバック (0)

2009年3月26日 (木)

Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #4

PowerMac G5 + Java SE6.0 DP1 de Oracle JDeveloper 11gとOracle Weblogic Server 10.3をインストールしちゃうぞ〜の続きです。

前回はJDeveloper 11gをインストールしてQuickStartが起動したところまでだった。今回はそのつづきでインストールしたJDeveloper 11gを起動し、JDeveloper 10gで作成したProjectを取込むところまでを確認しておく。

「JDeveloper 11g の起動」をクリック
Jdev11g_powerpc_macosx104_018

「ロールの選択」ダイアログでは「デフォルトのロール」ラジオボタンを選択後、毎回起動時に聞かれるのはうざいので「起動時にロール選択を常に要求」チェックボックのチェックをはずして「OK」ボタンをクリック
Jdev11g_powerpc_macosx104_021

見慣れたJDeveloperのスプラッシュ
Jdev11g_powerpc_macosx104_022

「ユーザ設定の移行」では「はい」ボタンをクリックして移行を許可。(お、ちょっとしたバグ発見、ダイアログの文言が「以前のリリースから設定を移行しま か」と「す」が全角空白になってる。)
Jdev11g_powerpc_macosx104_023

「ユーザー設定の移行」は参照先をそのまま受け入れるので「OK」ボタンをクリックする。
Jdev11g_powerpc_macosx104_024

preview releaseでも見慣れたJDeveloper 11g
あとはJDeveloper 10gで作成したプロジェクトを開くと11gに合わせて移行してくれる。

Jdev11g_powerpc_macosx104_026
Jdev11g_powerpc_macosx104_027
Jdev11g_powerpc_macosx104_028
Jdev11g_powerpc_macosx104_029

PowerMac向けのJava SE 6.0 DP1でも取りあえず遊べそうね。:)



バックナンバー
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #1
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #2
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #3

| | | コメント (0) | トラックバック (0)

2009年3月25日 (水)

Dashboard de Aquarium v1.3 - 36位

2

土俵際で踏ん張って36位まで再浮上。:)

| | | コメント (0) | トラックバック (0)

Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #3

PowerMac G5 + Java SE6.0 DP1 de Oracle JDeveloper 11gとOracle Weblogic Server 10.3をインストールしちゃうぞ〜の続きです。

前回はローカルJDKをInstallerが認識できるようにしたところまでだった。

今回はそのそのつづき。
JDeveloper 11gのインストールからQuickStartが起動するまで。

JDKを認識したので「次へ」ボタンをクリックしてインストール開始
Jdev11g_powerpc_macosx104_011_3

Jdev11g_powerpc_macosx104_012_2

Jdev11g_powerpc_macosx104_013

あとは終了まで、暫し待つ・・・

Jdev11g_powerpc_macosx104_014_2

Jdev11g_powerpc_macosx104_015

Jdev11g_powerpc_macosx104_016

「QuickStart実行」チェックボックスをチェックして「完了ボタン」をクリック。

Jdev11g_powerpc_macosx104_017

Installerが終了するとQuickStartが起動する。

Jdev11g_powerpc_macosx104_018

うまくインストールできたようですね。
次回は、インストールしたJDeveloper 11gを起動してみる。ということでつづく。。






バックナンバー
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #1
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #2

| | | コメント (0) | トラックバック (0)

2009年3月24日 (火)

Dashboard de Aquarium v1.3 - 49位

49位

あ〜〜49位だ〜、土俵際。

| | | コメント (0) | トラックバック (0)

Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #2

PowerMac G5 + Java SE6.0 DP1 de Oracle JDeveloper 11gとOracle Weblogic Server 10.3をインストールしちゃうぞ〜の続きです。


前回はOTNからJDeveloper 11g Studio Edition (Base Install For all the platforms without JDK 6)を入手したところまでだったので、今回はOracleあたらしいインストーラ?!(どうもBEAさんのものをベースにしたみたい・・・インストーラを起動するとcom.bea・・・と表示されるし)を起動するところまで。
Jdev11g_powerpc_macosx104_012

ということで早速取りかかる..

・ダウンロードしたJDeveloper 11g installのjarファイル
JDeveloper 11g installer

ファインダーからアプリケーション→ユーティリティ→Java→Java SE 6→Java Preferenceを起動し、Java Application Running SettingでJava SE 6が一番上に来ていることを確認。(このようになっていないとダブルクリックでは起動できないのでご注意を。)
Java Preference

Java SE 6.0 PD1のJava PreferenceのJava Application Running Settingだけではshell上のパスまでは変更してくれないので、手動でJDKへのパスをJava SE 5.0からava SE 6.0へ変更しちゃいます。(PowerPC版のMacOSXではJava SE 6は正式にはリリースされていないので面倒なのは仕方ないですね。)
シンボリックリンク CurrentJDKが1.5を指してしるので1.6に切り替えちゃいます。これでJava SE 6.0 DP1が動きます。

G5Server:˜ discus$ cd /System/Library/Frameworks/javaVM.framework/Versions
G5Server:/System/Library/Frameworks/javaVM.framework/Versions discus$ ll
total 48
lrwxr-xr-x 1 root wheel 5 Sep 25 21:27 1.3 -> 1.3.1
drwxr-xr-x 8 root wheel 272 Jul 21 2005 1.3.1
lrwxr-xr-x 1 root wheel 5 Sep 25 21:27 1.4 -> 1.4.2
drwxr-xr-x 8 root wheel 272 Jul 21 2005 1.4.2
lrwxr-xr-x 1 root wheel 5 Sep 25 21:27 1.5 -> 1.5.0
drwxr-xr-x 9 root wheel 306 Mar 17 19:54 1.5.0
lrwxr-xr-x 1 root wheel 5 Jul 21 2007 1.6 -> 1.6.0
drwxr-xr-x 10 root wheel 340 Mar 24 10:30 1.6.0
drwxr-xr-x 6 root wheel 204 Mar 17 19:53 A
lrwxr-xr-x 1 root wheel 1 Sep 25 21:27 Current -> A
lrwxr-xr-x 1 root wheel 3 Mar 24 10:32 CurrentJDK -> 1.5
G5Server:/System/Library/Frameworks/javaVM.framework/Versions discus$ java -version
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-275)
Java HotSpot(TM) Client VM (build 1.5.0_16-132, mixed mode)
G5Server:/System/Library/Frameworks/javaVM.framework/Versions discus$ ll
total 48
lrwxr-xr-x 1 root wheel 5 Sep 25 21:27 1.3 -> 1.3.1
drwxr-xr-x 8 root wheel 272 Jul 21 2005 1.3.1
lrwxr-xr-x 1 root wheel 5 Sep 25 21:27 1.4 -> 1.4.2
drwxr-xr-x 8 root wheel 272 Jul 21 2005 1.4.2
lrwxr-xr-x 1 root wheel 5 Sep 25 21:27 1.5 -> 1.5.0
drwxr-xr-x 9 root wheel 306 Mar 17 19:54 1.5.0
lrwxr-xr-x 1 root wheel 5 Jul 21 2007 1.6 -> 1.6.0
drwxr-xr-x 10 root wheel 340 Mar 24 10:30 1.6.0
drwxr-xr-x 6 root wheel 204 Mar 17 19:53 A
lrwxr-xr-x 1 root wheel 1 Sep 25 21:27 Current -> A
lrwxr-xr-x 1 root wheel 3 Mar 24 10:32 CurrentJDK -> 1.5
G5Server:/System/Library/Frameworks/javaVM.framework/Versions discus$ sudo rm CurrentJDK
G5Server:/System/Library/Frameworks/javaVM.framework/Versions discus$ sudo ln -s 1.6 CurrentJDK
G5Server:/System/Library/Frameworks/javaVM.framework/Versions discus$ cd
G5Server:˜ discus$
G5Server:˜ discus$ java -version
java version "1.6.0-dp"
Java(TM) SE Runtime Environment (build 1.6.0-dp-b88-34)
Java HotSpot(TM) Core VM (build 1.6.0-b88-17-release, interpreted mode)
G5Server:˜ discus$

ということで、jdevstudio11110install.jarをダブルクリックしてinstallerを起動!

お〜〜起動しました〜〜パチパチ。

Jdev 11g splash

あとはインストーラの指示にしたがいクリックしていくだけ。
(この例ではOracle MIddleware Home Directoryを/Volumes/DiscusWork/Development/Oracle/Middlewareにしてあります。)

Installer#1

installer#2

installer#3

ん、ん、あれ〜、Java Perference及びJava SE 6.0 DP1へのパスを変更したのにJDKが見えないとでますね〜。
Jdev11g_powerpc_macosx104_010

no jdk alert

あ〜、忘れてました。これはRelease Noteに書かれていた既知の問題の一つですね。
Release NoteにはClasses.jarとrt.jarへシンボリックリンクを張るように記載されていますが、この例では山本祐介さんのWebLogic Server 10g Release 3 を Mac OSX にインストールで紹介されている方法で対処しました。

G5Server:˜ discus$ cd /System/Library/Frameworks/javaVM.framework/Versions/CurrentJDK/Home 
G5Server:/System/Library/Frameworks/javaVM.framework/Versions/CurrentJDK/Home discus$ ll
total 8
drwxr-xr-x 42 root wheel 1428 Jul 21 2007 bin
lrwxr-xr-x 1 root wheel 10 Jul 21 2007 include -> ../Headers
drwxr-xr-x 38 root wheel 1292 Mar 17 19:56 lib
drwxr-xr-x 24 root wheel 816 Jul 21 2007 man
G5Server:/System/Library/Frameworks/javaVM.framework/Versions/CurrentJDK/Home discus$ sudo mkdir jre
Password:
G5Server:/System/Library/Frameworks/javaVM.framework/Versions/CurrentJDK/Home discus$ sudo mkdir jre/lib
G5Server:/System/Library/Frameworks/javaVM.framework/Versions/CurrentJDK/Home discus$ sudo touch jre/lib/rt.jar
G5Server:/System/Library/Frameworks/javaVM.framework/Versions/CurrentJDK/Home discus$ sudo touch jre/lib/core.jar
G5Server:/System/Library/Frameworks/javaVM.framework/Versions/CurrentJDK/Home discus$

前述の対処でローカルJDKを認識したようですね。ただし、unknown JDK :)
jdk ok

次回へつづく。。。





バックナンバー
Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #1

| | | コメント (0) | トラックバック (0)

2009年3月23日 (月)

Oracle JDeveloper 11g (Build 5188) - with Oracle WebLogic Server 10.3 - #1

Oracle JDeveloper 11g (Build 5188) - Base Install (For all the platforms without JDK6.0で、Oracle JDeveloper11g にOracle WebLogic Server 10.3がバンドルされリリースされていたのでいままで使っていたJDeveloper10gと入れ替えてみた。

尚、
MacOSX 10.4.11 Tiger/PowerPC G5かつ今は多分入手できないんじゃないかと思うけどPowerPC/MacOSX Tiger向けJava SE6.0 Developer Preview 1という環境なので、ちょっとした確認なら使えない事もないかな〜ぐらいの軽い気持ちで使うのが吉ですよん。たぶん。
Java SE6.0 DP1を使うので。

(あ、そうそう、Intel版の64bit環境かつMacOSX 10.5 Leopardはすんなり出来そうなので後日。)

尚、MacOSXへインストールする際の注意があるので事前に把握しておくといいですよ。
JDeveloper 11g Release Notes
Installing JDeveloper on Mac OS

それと山本祐介さんのWebLogic Server 10g Release 3 を Mac OSX にインストールの記事も参考にさせて頂いた。

まずは今回の環境から:

・H/W : Apple PowerMac G5 Dual 2.7Ghz RAM 3GB
・OS : MacOSX 10.4.11 Tiger Server(Serverである必要はないですよ。)
・JDK : Java SE 6.0 Developer Preview 1
という環境へOracle JDeveloper 11g とOracle WebLogic Server 10.3をインストールする。

OTNからOracle JDeveloper 11g Studio Edition (Base Install
For all the platforms without JDK 6)をダウンロードする。
Jdev11g_powerpc_macosx104_001

ながくなるので次回へつづく。

| | | コメント (0) | トラックバック (0)

2009年3月21日 (土)

Dashboard de Aquarium v1.3 - 39位

4

Dashboard de Aquarium v1.3。今日は39位。踏ん張ってますね〜、最近Twitterで熱帯魚好きな?方々にフォローされまくっているのもこの影響か?・・・

| | | コメント (0) | トラックバック (0)

2009年3月20日 (金)

妻がWindows Vista Businessエディションを買おうかなぁ〜と言うので・・・

妻が仕事でWindowsを使っているのだが、調べものしたり実験したり、その他実際にWindowsを使わないと確認できないことも多いわけで、仕方なくWindows Vista Businessエディションを購入してMacBook ProでBootCampするか〜な〜〜〜〜〜っ。という話をしていた。で、Windows Vista Businessの価格を見てみたら、たまげたね〜〜〜、安くて3万円ほど、高いところで39000円だった。値段を見て買う気が失せた。(爆)
MacOSXであればMac Box Set(MacOSX Leopard/iWork '09/iLife '09のセット。なんとなくBig Mac Setみたいな名称だけど)24,800円のファミリーパックを買えば5台のマックにインストールできて1台あたり、4,960円なのに〜〜〜。(Windows VistaならUltimate以上の機能がこの値段だよ。仕事で必要なWindows Vista Businessとはいえあまりにも高過ぎるね、Windows)

| | | コメント (0) | トラックバック (0)

2009年3月19日 (木)

Dashboard de Aquarium v1.3 - 45位

45位

ん〜〜〜、45位にダウン。まだ踏ん張れるか〜〜〜。w

| | | コメント (0) | トラックバック (0)

2009年3月18日 (水)

Dashboard de Aquarium v1.3 - 27位

27位
Dashbaord de Aquarium v1.3徐々に順位を上げて本日は27位。いい感じですね〜。

| | | コメント (0) | トラックバック (0)

2009年3月17日 (火)

Dashboard de Aquarium v1.3 - 36位

36位

お〜〜、踏ん張ってます、今日は36位

| | | コメント (0) | トラックバック (0)

2009年3月14日 (土)

Dashboard de Aquarium v1.3 - 45位

45位

今日は45位、Top50ランクアウトは早いかも。踏ん張れるかな〜w

| | | コメント (0) | トラックバック (0)

2009年3月13日 (金)

Dashboard de Aquarium v1.3 - Top50ランクイン

Apple Japanの分はカウントされていないのでApple USからダウンロードされたカウントだけのようですが、v1.3リリース後初のTop50ランクイン。本日は43位。どこまでいくでしょうか。今回は。:)
43位

| | | コメント (0) | トラックバック (0)

2009年3月12日 (木)

Dashboard de Aquarium v1.3 - Apple(US)で公開されました

Dashboard de Aquarium v1.3

| | | コメント (0) | トラックバック (0)

2009年3月 8日 (日)

Dashboard de Aquarium v1.3 released!

Dashboard de Aquarium v1.6 released.
(v1.6をリリースしましたよ〜 2012/01/01)


Dashboard de Aquarium v1.3をリリースしました。今回のリリースではFallin Hobby (formaly discus family)のhideさんのご協力により3種のディスカスを追加しました。hideさんありがとうございました。

尚、現時点では旧リリースのv1.2もダウンロード可能ですが、Apple US/Japanでv1.3公開後にはv1.2のダウンロードを停止予定です。


動作確認した機種とMacOSXのバージョンは以下の通り。
(H/W models and the version of MacOSX that I checked the operation as follows.)

System Requirements : MacOSX Tiger 10.4 or later -- Freeware.

PowerBook G4 1Ghz - MacOSX 10.4.11 (Tiger)
PowerMac G5 Dual 2.7Ghz - MacOSX 10.4.11 (Tiger)
MacBook Pro 2.2Ghz Core 2 Duo - MacOSX 10.5.6 (Leopard)

Mixed_jaNeontetra_ja
Discus_jaWild_king_solid_blue_f1_ja
Licksons_red_spotted_jaHides_wild_blue_wild_brown_ja
Back_with_pref_2

★★2009/7/11 Dashboard de Aquarium v1.4 をリリースしました。詳細はこのリンクをクリック!★★

★★ 11-Jul-2009 Dashboard de Aquarium v1.4 released
See download page. ★★

日本語(Japanese):
"Mac OS X 10.4 Tiger以降が必要です。ダウンロードにSafariを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。Safari以外のブラウザを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、解凍したウィジェットを /ライブラリ/Widgets/ フォルダに配置してください。ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。"

English:
"Mac OS X 10.4 Tiger or later is required. If you’re using Safari, click the download link. When the widget download is complete, show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it. If you’re using a browser other than Safari, click the download link. When the widget download is complete, unarchive it and place it in /Library/Widgets/ in your home folder. show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it."


Note: 国際化対応しています。言語環境が英語であれば以下のように表示されます。
(Internationalized. When language setting is in English, it's displayed as follows.)

MixedNeontetra
DiscusWild_king_solid_blue_f1
Licksons_red_spottedHides_wild_blue_wild_brown
Back_with_pref_3

| | | コメント (0) | トラックバック (0)

2009年3月 4日 (水)

Oracle SQL Developer 1.5.4 がリリースされたので早速入れ替えてみた


S/N Ratio:Oracle SQL Developer 1.5.4 リリース

のアナウンスがあったので早速Linux(CentOS5)/WindowsXP Professional(Vista入れてないの〜)/MacOSX Tiger/Leopardの各プラットフォームで旧リリースをアップグレードしてみた。
取りあえず入れ替えて起動〜Oracle11gへ接続(TNS接続)できるところまで確認。
小さいな問題なのだが英語版では気付かなかったが日本語にローカライズされ文字列が長くなってしまった為にデータベース接続の作成/選択ダイアログで「ネットワーク別名」とドロップダウンメニューの表示がオーバーラップしている。私が使っている範囲ではそれ以外に問題はさそう。。もうちょっと本気で使うと何か出てくるかもしれないけどね。:)


12

まず、MacOSX Tiger/Leopardのデータベース接続の作成/選択ダイアログ。赤丸部分で表示がオーバーラップしてしまっている。
尚、MacOSXのOracle SQL DeveloperでTNSを利用する方法は「Oracle SQL Developer for MacOSX で Oracle Instant Clientを使ってみる」を参照のこと。


7


次はLinux(CentOS5)で起動したSQL Developerの同ダイアログ。(同じくオーバーラップしている)
ちなみに以下はMacOSX側でX11 forwardingを利用してCentOS側のOracle SQL Developerを起動している。


5


WindowsXP Professionalで起動したSQL Developer1.5.4の同ダイアログでも現象は同じ。(ダイアログのスナップショットではわからないですが、Remote Desktop Connection for MacOSX経由でWindowsのSQL Developerを起動している。うちではまだリアルな環境しかないので・・w)

6

Linux環境で以下の様なメッセージで起動できない場合

Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path will be stored in ˜/.sqldeveloper/jdk
JDKのインストール先へのフルパスを.bashrc等でJAVA_HOME環境変数に設定してやればOK。以下の例ではJava SE6 update 12へのフルパスを設定している。
[oracle@corydoras ˜]$ echo $JAVA_HOME
/usr/java/jdk1.6.0_12

| | | コメント (0) | トラックバック (0)

2009年2月27日 (金)

Safari 4 - Smart Search Field and Search Suggestions

Safari4 - 150 featuresより

Smart Search Field
Find what you’re looking for instantly. As you enter text in its search field, Safari recommends relevant searches courtesy of Google Suggest
and lists your most recent searches, presenting them in an easy-to-read list.
Search Suggestions
Safari uses Google Suggest to complete search queries as you type, based on popular search terms.

この機能も便利です。YouTubeの検索などでも同じようなSuggestionsは出るようになっていますけどSafari4のSmart search fieldでも同様の機能や直近の検索フレーズが自動的にリストされるようになっています。

Safari3のsearch fieldに検索フレーズを入力しても何も起こらないが虫眼鏡アイコンをクリックすると検索履歴がポップアップする。

Safari3




Safari4だと自動的にSuggestionsとRecent searchesがポップアップする。

Safari4

| | | コメント (0) | トラックバック (0)

2009年2月25日 (水)

Safari 4 Beta登場 - カバーフローや開発者に嬉しい機能も

Safari 4 beta Release!
いや〜おもしろいSafari4。
いろいろな記事で知っていたけどOperaなどですでに採用されているFull-Page Zoom In/Outのサポートはもちろんのこと、ブックマーク管理でITunesでおなじみのCover Flowのサポート、Top Sitesでは気に入ったWeb Pageのサムネールが一覧できたり、また、見た目ではタブが最上部に移動している。新機能が沢山ありすぎて全てを一度には体験することはできそうにないくらいの新機能の数々。開発者にも嬉しい機能が沢山あるようだ。私が気になるのは開発ツールに含まれているDatabase Brower機能かな、テーブルを参照したりクエリを実行できるとある。。。気になるねぇ〜

Oracle11gがどんなに機能てんこ盛りにしてもあまりワクワクしなくなったけど、Safariの場合はワクワクするな〜。


5

Safari 4 - 150 Features

3

4

ページズームアウトとズームインをためしてみたところ。
8

7

9

尚、Safari4 BetaをインストールするとSafari3.xは上書きされてしまうので要注意。Safari4 Betaにはアンインストーラーも付属している。

| | | コメント (2) | トラックバック (0)

2009年2月23日 (月)

Dashboard de Aquarium v1.3 alpha #3 - Wild blue × Wild brown

Fall in Hobby (formaly: Discus Family)のhideさんのご協力によりDiscusの画像からDashboard de Aquarium v1.3向けのディスカス、その第三弾としてWild Blue とWild Brownの交配として紹介されているディスカスの画像を使ってみた。(これもいい感じ。)ということで3つの画像は決まり。あとは微調整してリリースしようかな。。と。

Hide_wildblue_wildbrown

Dashboard de Aquarium v1.3をリリースしたらOracleネタにしますかね。。(^^;;

2008/2/24追記
HideさんのWild blueとWild brown自家産なので、Hide's Wild blue * Wild brown としておきましょうかね。

| | | コメント (0) | トラックバック (0)

2009年2月19日 (木)

Dashboard de Aquarium v1.3 alpha #2

Fall in Hobby (formaly: Discus Family)のhideさんのご協力によりDiscusの画像からDashboard de Aquarium v1.3向けのディスカス、その第二弾としてリクソンコピーブリードで紹介されているメス親の画像を使ってみた。(いい感じです。)
Lickson_copy_f1

この他に1匹選ぶ予定。

hideさんに確認したところ正式名は存在せず、ペナンのブリーダーであるリクソン氏の作出の赤系スポットディスカスの改良種ということだけは分かっているとのこと
Rickson's red spotted とでもしておこうかな?!

| | | コメント (0) | トラックバック (0)

2009年2月13日 (金)

Dashboard de Aquarium v1.3 alpha - まずはWild Diaの雰囲気を試す!

Fall in Hobby (formaly: Discus Family)のhideさんのご協力によりDiscusの画像を利用させて頂くことができたので幾つかピックアップしてDashboard de Aquarium v1.3向けのディスカスとして試しているところなのですが、その第一弾としてワイルドダイヤの画像を使ってみた。
V13_test1


背景かディスカスの色合いか輝度のどちらかもしくはその両方を調整したほうがいいような気もする。まだ確定ではないので他のディスカスも試して数匹まで絞り込む予定だ。

hideさんより正式名を教えて頂いたので追記
正式名:Wild King Solid Blue F1

| | | コメント (0) | トラックバック (0)

2009年2月 7日 (土)

Dashboard de Aquarium v1.2 - 再びTop50圏外

30

再びTop50圏外。
Quicktime Streaming版aquariumがウケてる模様。ん〜〜〜。

| | | コメント (0) | トラックバック (0)

2009年2月 6日 (金)

Dashboard de Aquarium v1.2 - Apple(Japan)でも公開されました。

12
Apple(US)に遅れること数週間、やっと日本のAppleでもDashboard de Aquarium v1.2が公開されました。これに伴いv1.1のダウンロードは停止します。

| | | コメント (0) | トラックバック (0)

In Oracle Database 11g, native dynamic SQL now supports statements bigger than 32K characters

久々にOracleネタ。

Oracle11gのPL/SQLのDynamic SQLでCLOBが使えるようになったようなので試してみた。
10gまではexecute immediate文で使えるのは最大でVARCHAR2(32767)までだったワケで、ど〜〜〜〜〜〜しても(書きたくないけど・・)巨大なSQL文をダイナミックに実行しなきゃいけない人には朗報?なんでしょうね。(DWH系ではCLOBが必要なくらい巨大なクエリをダイナミックに生成するなんてこともあるんでしょうね。私は今のところ32Kを超えるクエリは書いたことないけどそれに近いのは過去1度あったかな?! という程度。)

ということで10gと11g for linux(x86)を使って確認!(ClientはMacOSX(PPC)版Instant Clientですよん

まず最初はOracle10g
execute immediate文に利用できるのはVARCHAR2(32767)が最大サイズなのでダイナミックに生成するSQL文もそのサイズに制限されちゃう。VARCHAR2(32767)を超えるとORA-06502が発生する。(尚、10gの場合でもDBMS_SQLを使えばもっと大きいサイズの動的SQLも使用できる。)

G5Server:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 金 2月 6 1:19:22 2009

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

> conn scott@catfish
パスワードを入力してください:
接続されました。
SCOTT> set serveroutput on
SCOTT> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE 10.1.0.3.0 Production
TNS for Linux Server: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production

SCOTT> l
1 CREATE OR REPLACE PROCEDURE dynamic_sql_test10g(iLength IN NUMBER)
2 IS
3 vSQL VARCHAR2(32767);
4 vResult NUMBER;
5 BEGIN
6 vSQL := 'SELECT 1';
7 FOR i IN 1.. iLength LOOP
8 vSQL := vSQL || '+1';
9 END LOOP;
10 vSQL := vSQL || ' FROM DUAL';
11 EXECUTE IMMEDIATE vSQL INTO vresult;
12 DBMS_OUTPUT.PUT_LINE('Result:'||TO_CHAR(vresult));
13* END;
SCOTT> /

プロシージャが作成されました。

SCOTT> exec dynamic_sql_test10g(16374);
Result:16375

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec dynamic_sql_test10g(16375);
BEGIN dynamic_sql_test10g(16375); END;

*
行1でエラーが発生しました。:
ORA-06502: PL/SQL: 数値または値のエラー:
文字列バッファが小さすぎます。が発生しました ORA-06512:
"SCOTT.DYNAMIC_SQL_TEST10G", 行10
ORA-06512: 行1

SCOTT>

11gの場合
execute immediate文にCLOBが使えるようになったことで以下のように32K超えの動的SQLも実行できちゃうのだ。

注)
以下のコードで遊ぶときは個人で遊べるデータベースでやってくださいね。(本番データベースや多数の開発者で共有しているテスト/開発データベースでとんでもなく巨大なクエリを実行すると他の方の迷惑になるので・・・・・)

SCOTT> 
SCOTT> conn scott@lampeye
パスワードを入力してください:
接続されました。
SCOTT>
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SCOTT>
SCOTT> l
1 CREATE OR REPLACE PROCEDURE dynamic_sql_test11g(iLength IN NUMBER)
2 IS
3 vSQL CLOB;
4 vResult NUMBER;
5 BEGIN
6 vSQL := 'SELECT 1';
7 FOR i IN 1.. iLength LOOP
8 vSQL := vSQL || '+1';
9 END LOOP;
10 vSQL := vSQL || ' FROM DUAL';
11 EXECUTE IMMEDIATE vSQL INTO vresult;
12 DBMS_OUTPUT.PUT_LINE('Result:'||TO_CHAR(vresult));
13* END;
SCOTT> /

プロシージャが作成されました。

SCOTT> set serveroutput on
SCOTT> exec dynamic_sql_test11g(32767);
Result:32768

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> set timi on
SCOTT> exec dynamic_sql_test11g(1000000);
Result:1000001

PL/SQLプロシージャが正常に完了しました。

経過: 00:06:25.93
SCOTT>

| | | コメント (0) | トラックバック (0)

Dashboard de Aquarium v1.2 - ギリギリ Top50ランクイン再び!

2

Wow! Top50に返り咲き。いつまで残っていられるか・・・w

| | | コメント (0) | トラックバック (0)

2009年2月 5日 (木)

Dashboard de Aquarium v1.2 - 早くもTop50圏外か〜

30

Top50圏外じゃ〜。
今回は早いな落ちるの、とおもったら似たようなWidgetが登場してるのね〜w
じゃ早速v1.3の準備にでも取りかかるか〜

| | | コメント (0) | トラックバック (0)

2009年2月 4日 (水)

Broken my iphone accelerometer! But...

iPhone 3Gのaccelerometer(加速度計)が壊れたようで縦や横へまわしても画面が切り替らない。当然iPodのカバーフロー等も表示されない...ということで困ったときのGenius Bar!
早速予約を取って行ってきました。で診断結果はやはり壊れているということでその場で本体毎交換とあいなりました。素早い対応、ステキです。(^^)

Apple Storeが出来る前はApple製品の対面修理と言えば、クリッククイックガレージさんや、ビット・システム・サービス株式会社ぐらいしか無かったけど随分便利になったものです。:)
ただ今iTunesに繋いでバックアップからリストア完了したばかり。


| | | コメント (0) | トラックバック (0)

Dashboard de Aquarium v1.2 - 今日は34位

26
今日は34位か〜今回は15位が最高かなぁ〜。

| | | コメント (0) | トラックバック (0)

2009年2月 3日 (火)

Dashboard de Aquarium v1.2 - 今日は28位

1
Oracleネタも書きたいのがあるけど風邪が治ってからじゃ〜。

| | | コメント (0) | トラックバック (0)

2009年1月31日 (土)

Dashboard de Aquarium v1.2 - 今日の順位(20)

17
Dashboard de Aquarium v1.2の今日の順位は20位。さて、そろそろv1.3のネタに使うdiscusの画像など決めるとするか〜。

| | | コメント (0) | トラックバック (0)

2009年1月30日 (金)

Dashboard widget top16 - Dashboard de Aquarium v1.2

13
今日のDashbaord de Aquarium v1.2は4ランクアップで16位 (^^

| | | コメント (0) | トラックバック (0)

2009年1月29日 (木)

Dashboard widget top20 - Dashboard de Aquarium v1.2

2
Dashboard de Aquarium v1.2今日は20位と2ランクダウン。

| | | コメント (0) | トラックバック (0)

2009年1月28日 (水)

Dashboard widget top18 - Dashboard de Aquarium v1.2

4

昨日より3ランクダウンの18位 (><)

| | | コメント (0) | トラックバック (0)

2009年1月27日 (火)

Dashboard widget top15 - Dashboard de Aquarium v1.2

2

Dashboard de Aquarium v1.2、前回より1ランクアップのTop15入り。さて明日はどうなるか・・・

ところで13位のオバマ widgetがなんとなく気になる。(まだダウンロードしてないので後でダンロードしてみるか〜

| | | コメント (0) | トラックバック (0)

2009年1月26日 (月)

10日後は何日?、翌月末日って何日?

ichii386さん「相対的な日付って」記事に背骨というか脊髄反応的にコメントした勢いで、今日の10日後は何日?翌月末日って何日?の算出を幾つかやってみた。(「オリジナルの記事は今月末を求めているんですけど・・・・」・・・・ハイ、私が読み間違えて”翌月末”と勘違いしてました。今気付いたよ。w)

なんでgnuとphpだけなの? という突っ込みはなしで…。
なんでFirebirdが無いのかとか、CachéでSQLを使わないでMUMPSというかM言語というかCaché ObjectScriptなのかとか、Oracle11gなのに、MySQLは5.0PostgreSQLは7.4.9なのかとか、というツッコミはなしで...w

前提:
今日は1月24日として、10日後、翌月末日を算出します。

まずはPowerPC版のは古いのしかなかったのでCaché 5.2 for MacOSX(PowerPC)
MUMPS(M言語)がCachéで拡張?されてObjectiveになっちゃってObjectScriptと呼ばれているのには少々戸惑うけど、そこは昔取った杵柄。SQLも使えるけどM言語の方が作り易かったので。。w
ObjectScriptだと日付レベルで何日前とか何日後という計算は簡単なのだが、何ヶ月後とかいう計算は面倒なので。
(算出方法は翌々月の1日の前日が翌月末という考え方です。)

G5Server:˜ discus$ csession cache -U user

USER>
USER>w !,$zversion

Cache for UNIX (Mac OS X/32-bit) 5.2 (Build 329U_su) Wed Jun 21 2006 11:29:29 EDT
USER>
USER>
USER>w !,$zd($h+10,3)

2009-02-03
USER>s now=$h, y=$e($zd(now),7,10), m=$e($zd(now),1,2) w !,$zd($zdh($s(m<11:y_m+2_"01", m>10:y+1_m-10_"01"),5)-1,3)

2009-02-28
USER>
USER>halt
G5Server:˜ discus$

次は、Oracle11g EE 11.1.0.6.0 for Linux(x86)
OracleのSQLだとlast_day()や期間リテラルで簡単に算出できる。お気楽モード :-)

G5Server:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 土 1月 24 13:53:33 2009

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

> conn scott/tiger@lampeye
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SCOTT>
SCOTT> alter session set nls_date_format = 'yyyy-mm-dd';

セッションが変更されました。

SCOTT> select sysdate + interval '10' day from dual;

SYSDATE+IN
----------
2009-02-03

SCOTT> select last_day(sysdate + interval '1' month) from dual;

LAST_DAY(S
----------
2009-02-28

SCOTT>
SCOTT> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
G5Server:˜ discus$

お次は、MySQL Community Server 5.0.67 for MacOSX(PowerPC)版
MySQL5.0でもOracleと同様にlast_day()と期間リテラルだけで算出できます。こちらもOracle同様、余計なことを悩まなくてすみますね。(^^)

G5Server:˜ discus$ mysql --version
mysql Ver 14.12 Distrib 5.0.67, for apple-darwin8.11.0 (powerpc) using readline 5.1
G5Server:˜ discus$ mysql -u scott -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 177
Server version: 5.0.67 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select curdate() + interval 10 day;
+-----------------------------+
| curdate() + interval 10 day |
+-----------------------------+
| 2009-02-03 |
+-----------------------------+
1 row in set (0.00 sec)

mysql> select last_day(curdate() + interval 1 month);
+----------------------------------------+
| last_day(curdate() + interval 1 month) |
+----------------------------------------+
| 2009-02-28 |
+----------------------------------------+
1 row in set (0.00 sec)

mysql>
mysql> exit
Bye
G5Server:˜ discus$

最後にPosgreSQL 7.4.9 for MacOSX(PowerPC)版
10日後は期間リテラルで単純に算出可能だが、OracleやMySQLとは異なりlast_day()のような関数が無い(マニュアルをみたけど該当する関数が見当たらない)ので翌々月1日の前日で算出してみた。

G5Server:˜ discus$ psql -U scott postgresql749
Password:
Welcome to psql 7.4.9, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit

postgresql749=#
postgresql749=# select version();
version
-------------------------------------------------------------------------------------------------------------------------
PostgreSQL 7.4.9 on powerpc-apple-darwin8.3.0, compiled by GCC gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1809)
(1 row)

postgresql749=# select cast(current_date + interval '10 day' as date);
date
------------
2009-02-03
(1 row)

postgresql749=# select cast(to_date(to_char(current_date + interval'2 months','yyyymm')||'01','yyyymmdd') - interval '1 day' as date);
date
------------
2009-02-28
(1 row)


postgresql749=# \q
G5Server:˜ discus$


CachéではObjectScript(M言語)を使ったので脇に置いといて、他の3つのデータベースのSQLでは期間リテラル(interval)の書き方が微妙に異なる点は知っておいたほうがいいかも。



今日も息子は保育園でバイバイせず結構泣いてた、最近、保育園にくるとパパもママもSee Ya! といっていなくなってしまうことに気付いた模様。いずれ慣れるだろうけど。。

| | | コメント (0) | トラックバック (0)

2009年1月25日 (日)

Dashboard widgetのstylable popup menuで・・

Dashboard de Aquarium v1.2の初期設定パネルでDashcodeのstylable popup menuを利用したのだがその際に発見したLeopard上で発生するちょっとした問題点(これまた備忘録)

stylable popup menuではmouseoverとmouseoutイベントでマウスカーソルのスタイルをpointerとautoに切り替えているのだがMacOSX10.4.11(Tiger)では想定通りに動作するがMacOSX10.5.6(Leopard)だとstylable popup menuの淵の所でだけマウスカーソルがpointerに変化する。(stylable popup menu本体はmouseout扱いされている模様。対処方法よくわからんので今のところ放置。)

2_2

まずはMacOSX10.4.11(Tiger)で正しくマウスカーソルが変更されている状態から。
Dashcode_stylable_popup_002





つづいてMacOSX10.5.6(Leopard)でstylable popup menuの淵だけでマウスカーソルのスタイルが変更されている模様。
Dashcode_stylable_popup_001_2

マウスカーソルをpopup menu本体の上に移動させてくると。。。あれまぁ〜。(><)
Dashcode_stylable_popup_001

| | | コメント (0) | トラックバック (0)

2009年1月24日 (土)

Dashboard de Aquarium v1.2 - Top20

Dashboard de Aquarium v1.2、早くもDownload Top20入り :)

今回はどこまで上がるだろうか〜〜

8

| | | コメント (0) | トラックバック (0)

2009年1月23日 (金)

Dashcodeのstylable popup menuの国際化で少々ハマったこと(備忘録)

Dashboard de Aquarium v1.2の初期設定ペインでstylable popup menu(Dashcodeの部品に含まれている)を利用しているのだが、その国際化の際少々ハマったというかDashcodeのコード自動生成の癖というかバグ?に気付いたので備忘録として書いておく(ウッカリ見落とすと英語が表示されるべき状況で日本語が表示されることになってしまうので。他のボタンなどは国際化を定義しやすいのだがstylable popup menuはちょいと気を使う。Dashcodeの問題点としていずれ修正されるかも・・・)

Dashcodeのバージョンは以下
2_2

言語設定がenglishである場合に正しく表示されているstylable popup menu
Picture_3 Picture_4

上記のように表示させるため、デフォルト言語をEnglishとしてwidgetプロジェクトを作成し、言語設定が日本語である場合には日本語の文字列がセットされるようローカライズしてあるのだが、stylable popup menuの場合はボタンの場合とは異なりローカライズキーと値の設定がインスペクター上で行えない。

ボタンの場合、インスペクター上で英語と日本語の定義が一度に行える。

2

しかし・・、stylable popup menuではメニューアイテムの定義しかなく、インスペクター上でローカライズを済ませてしまうことができない。。ということで事前にローカライズした文字列を定義した。
3

4

ローカライズ文字列とキーを定義後、以下のようにstylable popup menuのメニューアイテムにローカライズキーを設定するとインスペクター上でも自動的に日本語文字列が設定されるのだが...
2_3

widgetを実行してみると以下のようにstylable popup menuだけが日本語になってしまう。。
Picture_1 Picture_2

で、いろいろ調べてみたがうまい解決方法が見当たらないので泥臭い方法だが、一旦コード自動生成を停止、setup.js(Dashcodeにより自動生成されるwidget上に配置される部品のスペック定義)の該当部分を手動修正後、自動生成を再開させるという方法を取った。ほかにうまい方法はないのか〜〜〜w(尚、再度メニューアイテムを追加したしたり修正した場合には同じ手順でコードを修正する必要がある。)

コードの自動生成停止
6

setup.jpの日本語化されてしまったstylable popup menuのメニューアイテムの文言を英語(ローカライズのキーにもなっている)に変更。
3_2

2_4

Dashcodeのコード自動生成を再開
7


この状態でwidgetを実行したり生成すれば英語と日本語双方がそれぞれの言語設定で正しく表示されるようになります。
6 Picture_4_2

さて、そろそろ子供を迎えに、保育園に行かなきゃ..(^^

| | | コメント (0) | トラックバック (0)

2009年1月22日 (木)

Dashboard Widgets Top50

Apple(US)で公開されてから2日目ですがDashboard de Aquarium v1.2がDashboard Widgets Top50入りしたようです。ダウンロードしてくださった皆さんに感謝! (Thank you for downloading Dashboard de Aquarium v1.2!)
5

| | | コメント (0) | トラックバック (0)

2009年1月20日 (火)

Dashboard de Aquarium v1.2 - Apple(US)で公開されました

Dashboard de Aquarium v1.2 - Apple(US)で公開されました。登録してから2日で公開されるんですねUSのAppleでは。なんか良いテンポです。でもApple(Japan)の方はまだ公開されず、2週間に一度程度なんでしょうかねぇ。公開のタイミングって。。。USと歩調を合わせてほしいです。m(_ _)m


9

ちなみに次期リリース予定のv1.3ではdiscusの種類を増やす予定です。

| | | コメント (0) | トラックバック (0)

2009年1月18日 (日)

Dashboard de Aquarium v1.2 released!!

前回の予告したようにDashboard de Aquarium v1.2をリリースしました。今回のリリースで魚種(discus/neon tetra/mix:default)を選択することができるようになりました。
(Dashboard de Aquarium v1.2 new feature : Added preference pane and you can choose fish species(discus, neon tetra or mix:default).


(2009/1/18現在:
しばらくの間はv1.1もダウンロードできるようにしておきますが、Appleからのリンクが更新された時点でv1.1はダウンロードできなくする予定ですのでご了承ください。)

20-Jan-2009:
Apple(US)からのリンクは変更されましたがApple(Japan)からのリンクはまだ変更されていないようなのでもうしばらくv1.1のダウンロードは可能なままにしておきます。

6-Feb-2009
Apple(Japan)でも公開されたので旧リリースのダウンロードは停止します。

11-Mar-2009
Dashboard de Aquarium v1.3リリースに伴い、Apple US/Japanで公開後にv1.2のダウンロードは停止する予定です。


動作確認した機種とMacOSXのバージョンは以下の通り。
(H/W models and the version of MacOSX that I checked the operation as follows.)

System Requirements : MacOSX Tiger 10.4 or later -- Freeware.

PowerBook G4 1Ghz - MacOSX 10.4.11 (Tiger)
PowerMac G5 Dual 2.7Ghz - MacOSX 10.4.11 (Tiger)
MacBook Pro 2.2Ghz Core 2 Duo - MacOSX 10.5.6 (Leopard)

v1.2(default)
v1.2(Discus) v1.2(neon tetra)
v1.2 back
v1.2 preference pane v1.2 popupmenu

Download Dashboard De Aquarium v1.2 Now!
Download! v1.2 dashboard_de_aquarium.zip (708KB)

日本語(Japanese):
"Mac OS X 10.4 Tiger以降が必要です。ダウンロードにSafariを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。Safari以外のブラウザを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、解凍したウィジェットを /ライブラリ/Widgets/ フォルダに配置してください。ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。"

English:
"Mac OS X 10.4 Tiger or later is required. If you’re using Safari, click the download link. When the widget download is complete, show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it. If you’re using a browser other than Safari, click the download link. When the widget download is complete, unarchive it and place it in /Library/Widgets/ in your home folder. show Dashboard, click the Plus sign to display the Widget Bar and click the widget’s icon in the Widget Bar to open it."


Note: 国際化対応しています。言語環境が英語であれば以下のように表示されます。
(Internationalized. When language setting is in English, it's displayed as follows.)

v1.2 default
v1.2(discus) v1.2(neon tetra)
v1.2 back
v1.2 preference pane Picture_4

| | | コメント (0) | トラックバック (0)

2009年1月17日 (土)

Dashboard de Aauarium v1.2  やっと最終段階

今年初めのエントリはやはり、このネタ。

1年以上放置していたDashboard de Aquariumですが、子供に邪魔されつつなんとか一気にリビジョンアップ。
現在最終確認中!・・・・ですが、画像だけ載せておきましょう。今しばらくお待ちを。

3_2



MacOSXの言語設定が英語の場合、左の画像のように表示され、日本語の場合、右側の画像のように表示されます。
(When language seting of MacOSX is English, it is displayed like left pictures , and displayed like right pictures in case of Japanese.)

Picture_1 8
Picture_2 4
Picture_3 7
Picture_6 5
Picture_1_2 3
Picture_9 10
Picture_11 11

今回のリリースから設定パネル(Drawer風にしてあります)を追加し、魚種(今のところ以前のリリースから魚種は増やしていませんが)を選択できるように機能追加しました。

| | | コメント (0) | トラックバック (0)

2009年1月 4日 (日)

謹賀新年

この画面を見るためだけの目的でMacOS9を起動...w
33

| | | コメント (0) | トラックバック (0)

2008年12月28日 (日)

よいお年を!

さて、来年はいいことあるでしょうかね。みなさん、良いお年を!

懐かしいMacOS9のHappy new year風のスタートアップスクリーンで。

35

| | | コメント (0) | トラックバック (0)

2008年12月 9日 (火)

Mighty Mouseのリンゴマークにも光を!

先日メルセデスベンツSLK型USBマウスを頂いた。これマウスとしてはかなり使いにくいのだが、ヘッドライト、テールライトがいい感じに輝くので気に入っている。

Slk_usb_mouse1

Slk_usb_mouse2


で、Apple Mighty Mouseの話。
光るリンゴマークといい、光るキーボードといいMacBookのgimmickは気に入っているし、Mighty Mouseの機能は十分なんですが以下の絵のように薄暗い中ではMighty mouseが少々寂しい。

Mighty_mouse

ということで(SLK型USBマウスのように)Mighty Mouseのリンゴマークにも光を!
こんな感じのgimmickがあったらいいなぁ

Apple様 m(_ _)m (こんなgimmick好きは小数派だろうけど。。)

Mighty_mouse_gimmick

注)上記mighty mouseの光るリンゴマークは合成です。(書かなくても大丈夫だろうけど。)

| | | コメント (0) | トラックバック (0)

2008年12月 4日 (木)

Sun Tech Days 2008 in Tokyo 2日目

Sun Tech Days 2008 in Tokyo 2日目は(J)Ruby and Railsにだけ。JRuby関連で知らなかったことと知っているところ半々という内容だったので今後の参考になる内容だった、私にとってはいろいろな遊びのネタになりそう。

ところで、Sunの方のMac率、かなり高いよね。GoslingからしてMacBookだし(^^)

頂いたノベルティは「ブログ de ノベルティ」にて。

| | | コメント (0) | トラックバック (0)

2008年12月 3日 (水)

Sun Tech Days 2008 in Tokyo 1日目

今日はSun Tech Days 2008 in Tokyo 1日目に行って来た。
受講セッションは、Key note、Java SE 6 Update 10 and Deployment、Java Persistence APIs
そしてなぜかレセプションも。というのも、うちの奥さんがレセプションの終わり頃なら帰れるよん。というメールをくれたので、うちの子供を連れて行けばレセプションへ参加できる状況になったから。(子育て中の身では時間調整やらなんやらで、こちらの思う通りにはなかなか出来ないのだが、子育ての負荷分散に貢献している妻にも感謝。ベコリ)

そんな苦労などおかまいなしの息子は、展示会会場のSun方たちに愛想振りまいて大はしゃぎ。うちの息子は基本的に人見知りしないので・・・相手の顔をじ〜〜〜〜〜っと見てから、ニッコリ。最近はその次に何故かニコニコしながら拍手を始めます。(場の雰囲気作りが上手いのは息子の特技のようです。w)

余計な話が多くなったのでこの辺で・・

いつものように頂いたノベルティは「ブログ de ノベルティ」にて。

追記:
そういえばSun Tech Daysに中学生が参加していたなぁ。私はうちの子供に気を取られて話すチャンスなかったけどレセプションで目の前を歩いてたっけ。
将来、この業界で仕事しちゃう少年かもね

あ、忘れてた。VirtualBoxの話をブースで聞いたこともあり少々遊んでみたくなった。NetBeans6.5も良さげなのでそれも後であそんでみようかと・・


Img_0250

何故アナグリグ?
D-Traceで取得した情報をJMonkey Engineを利用して3Dで可視化するデモの為だったんです。個人的にはJavaFXの高速デモの方が面白かったのですがね。

Img_0247

Goslingさんのプレゼン。前の方の頭が見切れて上手く撮影できず。そしてお約束のT-シャツ。しかしゲットできず。
Img_0249

レセプションの軽食の一部。。。
Img_0252

さて妻も六本木に着いたようなので帰宅しますか〜
Img_0265

ここ最近、子育ての負荷分散を妻と実践?実験?しているのだが、実際にやってみると、地下鉄のエレベータもまだまだ未整備なことが気になったりいろいろ気付くことは多い。そういえば、この手のこのコンファレンスに参加しているエンジニアの方々にも小さい子供を育てているおとうさん、おかあさんは沢山いると思うので、子育て中のおとうさん、おかあさん応援セッションみたいな枠があってもいいんじゃないかと。
その時間帯とその前後くらいの時間は託児ルームも開設してあったら便利かも・・・と勝手に想像してたりして。

| | | コメント (1) | トラックバック (0)

2008年11月27日 (木)

つい買ってしまった。SONY HandyCAM UX7 その2

iMac G5 - RAM 2GB / MacOSX 10.4 Tiger / iMovie'08という環境で、SONY HandyCam HDR-UX7で撮影したハイビジョン映像をどのようにしてiMovie'08へ取込むかという方法の続き。

前回書いたようにiMac G5 - RAM 2GB / MacOSX 10.4 Tiger / iMovie'08という環境ではSONY HandyCam HDR-UX7で撮影したハイビジョン映像は直接取込めない。

ではどうするか?

SharewareのVoltaicHD for Mac(このソフトを試したときはversion 1.2.3だったが現在は1.6.2とかなりバージョンアップしているので初期設定ダイアログが随分変ってしまっているのであしからず。最新版の1.6.2で試すことがあったら追記するつもりではいるが。。。)を利用してAVCHDフォーマットをAICフォーマット(Apple Intermediate Codec)へ変換(拡張子は.movになるのでQuickTimeでも開ける)してからiMovie'08の素材として取込む。


ちなみにVoltaicHD for Macはデモモードで評価することができるが変換するファイルサイズが最大50MBMに制限されているので試しに変換する際には数秒間だけ撮影した映像を使うようにすればよいと思だろう。(変換及びiMovie'08への取り込みができるか確認してから購入すればいいので正式に購入するのは後でもOK)

では早速変換できるか試してみる。。

VoltaicHD for Macをダンロード(このネタを纏めている時点ではversion 1.2.3だったので初期設定ダイアログが現在ダウンロードできる1.6.2とは随分違うのでご注意を

ダウンロードしたら解凍、アプリケーションフォルダに移動(しなくてもいいけど。。)して起動!
Sony_ux7_001

Sony_ux7_002

予めSONY HandyCam UX7はMacと接続しておいたので、AICへ変換するファイルをVoltaicHDに追加する。(UX7をMacに繋げば接続画面が現れるので簡単に接続できるのでここではUX7とMacの接続方法については省略)。
Sony_ux7_003

マウントされたSONY HandyCam UX7->BDMV->STREAM以下に撮影した映像ファイルがあるので変換したいファイルを選択する。ファイルの拡張子は、m2tsとなっている。
Sony_ux7_004

変換するファイルを登録したところ。
Sony_ux7_005

プリファレンスを開いて変換後ファイルの保存先を変えておく。(必須ではないですが使い易いフォルダへ保存するのがいいです。)
ちなみに、version1.2.3ではiMovieかFinal Cut向けに変換するか選択するラジオボタンがあるが最新版の1.6.2では該当する設定は無くなった模様)

Sony_ux7_006

Sony_ux7_007

Sony_ux7_008

startボタンをクリックして変換開始!(数秒の映像ですが変換時間はそれなりにかかるので本気で撮影した映像(例えば30分程度の映像を変換しようとするとかなり長時間かかると思ったほうが無難。)
Sony_ux7_009

Sony_ux7_010


正常に変換できたようだ。変換後のファイル拡張値は、.movになる。
Sony_ux7_011

今日はここまで、次回へつづく。


メモ:
VoltaicHD for Mac version 1.2.3ではSONY HandyCam UX7のHD画質(ハイビジョン)で撮影した映像はAICへ変換できたのだが、SD画質(こちらのほうが長時間撮影できるのでこちらで撮影したくなる)で撮影した映像はAICへ変改できなかったのでご注意を(尚、最新版version 1.6.2では未確認)

尚、最新version 1.6.2ではどうなのかいずれ追記する予定。

| | | コメント (0) | トラックバック (0)

2008年11月24日 (月)

つい買ってしまった。SONY HandyCAM UX7 その1

久々にMacオンリーなネタです。

以前、「つい買ってしまった。ビクターエブリオ」というエントリを書いていたのだが、今回は妻の妹夫婦が購入したSONY HandyCam UX7について、PowerPC版MacでMacOSX Tiger10.4とiMovie'08を利用している際に遭遇する問題の解決方法について書いておくことにする。(全ての組み合わせを試した訳ではないので解決方法の一つとして考えてください。


今日はその第一回目ということで、利用する機器とソフトウェア回りから。
(今回利用した環境に類似する機器をお持ちならこれから示す解決方法で対処できる。)

・iMac G5 - RAM 2GB / MacOSX 10.4 Tiger / iMovie'08
・SONY HandyCam HDR-UX7

SONY HandyCam HDR-UX7はHD画質(ハイビジョン)では、MPEG4(AVC/H.264)、SD画質では、MPEG2で記録すると記載されているのだが、現時点(2008年11月23日現在)でMacOSX 10.4 Tiger + iMovie'08という組み合わせではSONY HandyCam UX7で撮影した映像をiMovie'08で直接取込むことができないのだ。

iMovie08_alert_avchd

当然、妹夫婦は折角購入したビデオカメラで撮影した子供達の晴れ姿をiMovie'08で編集しiDVD'08でDVDに焼く事ができないというかわいそうな状況になっていた。

で、私の出番ということに・・・次回へつづく。


XCode3.1+iPhone SDK。
サンプルコードをシュミレータで起動したところ。

1

2

5

4

| | | コメント (0) | トラックバック (0)

2008年9月20日 (土)

BEAがオラクルにmergeされたので

WebLogicもMac De Oracleの興味の対象に。。なんて。ということで備忘録。

WebLogic Server 10g Release 3 を Mac OSX にインストール

| | | コメント (0) | トラックバック (0)

2008年9月 7日 (日)

トリガーカスケード制限 #3

前回まではLinux(32bit)環境(CentOS5)だったが気になったのでWindows XP Professional (32bit)でも試してみた。

結果を先に書くがLinux(32bit)と同じくトリガーカスケードの最大値は49となっている。ついでに調べたところOracle10g for MacOS X Serverでも同じであった。
Oracleのトリガーカスケードの最大値が32という制限値が正しい?!としても私が普段利用するプラットフォームでは49で正解のようだ。

9

以下、Windows XP Professional(32bit)上のログ

SCOTT> 
SCOTT>
SCOTT> create table master(seq# number);

表が作成されました。

SCOTT> create sequence master_seq
2 start with 1
3 increment by 1
4 nocache
5 noorder;

順序が作成されました。

SCOTT>
SCOTT> create or replace trigger ins_cascade_test
2 after insert on master
3 begin
4 insert into master values(master_seq.nextval);
5 end;
6 /

トリガーが作成されました。

SCOTT>
SCOTT> select last_number
2 from user_sequences
3 where sequence_name = 'MASTER_SEQ';

LAST_NUMBER
-----------
1

SCOTT>
SCOTT> insert into master values(-100);
insert into master values(-100)
*
行1でエラーが発生しました。:
ORA-00036: 再帰的SQLレベルの最大値(50)を超えました ORA-06512:
"SCOTT.INS_CASCADE_TEST", 行2
ORA-04088: トリガー'SCOTT.INS_CASCADE_TEST'の実行中にエラーが発生しました ORA-06512:
"SCOTT.INS_CASCADE_TEST", 行2
ORA-04088: トリガー'SCOTT.INS_CASCADE_TEST'の実行中にエラーが発生しました ORA-06512:
"SCOTT.INS_CASCADE_TEST", 行2
ORA-04088: トリガー'SCOTT.INS_CASCADE_TEST'の実行中にエラーが発生しました ORA-06512:
"SCOTT.INS_CASCADE_TEST", 行2
ORA-04088: トリガー'SCOTT.INS_CASCADE_TEST'の実行中にエラーが発生しました ORA-06512:
"SCOTT.INS_CASCADE_TEST", 行2
ORA-04088: トリガー'SCOTT.INS_CASCADE_TEST'の実行中にエラーが発生しました ORA-06512:
"SCOTT.INS_CASCADE_TEST", 行2
ORA-04088: トリガー'SCOTT.INS_CASCADE_TEST'の実行中にエラーが発生しました ORA-06512:
"SCOTT.INS_CASCADE_TEST", 行2
ORA-04088: トリガー'SCOTT.INS_CASCADE_TEST'の実行中にエラーが発生しました ORA-06512:


SCOTT>
SCOTT> select last_number
2 from user_sequences
3 where sequence_name = 'MASTER_SEQ';

LAST_NUMBER
-----------
51

SCOTT>


ところで半年振りに起動した自宅のWindowsマシンのコードレスキーボードが壊れたらしく、仕方ないのでRDCをダウンロードしてMacOSXから利用することに。。。。


7

| | | コメント (0) | トラックバック (0)

2008年8月 3日 (日)

ケース

私は普段PowerBookを持ち歩いてます。(悲しい事に、最近PC持ち込み、持ち出し申請をすれば持ち込めるところもあるけど全く受け付けない! なんていうところもある。仕事道具持ち込ませないで、なにをしろと言うんだい?! =>OTNのオンラインマニュアル見れます「但し、BLOGや掲示板は見れない。」からとか言ってる、それで済むなら誰も苦労しねぇでしょうに。。。話が他の方向に行きそうなのでこれぐらいにしておこう。w)

話を元に戻す。。。。
で。PowerBookを取り出だそうとすると、そのケースMacBook/PowerBookのサイズにピッタリですね? どこで売ってるんですか? と聞かれることがよくある。

返事はいつも、「あ、これ!?。(^^)。 オーダーメイドなんですよ。」
と言うと、必ずと言ってよいほど、高いんでしょうね? と返ってくる。
いえいえ、通常品をちょいとカスタマイズするのでその手間賃で倍になる程度ですよ。(元の製品は15000円程)

ということでその会社を教えておきますね。とは言ってもMacのインナーケースも作っている会社なのでMacBook/PowerBookユーザの方なら知っている方は多いと思いますけど。

以下の写真は、17inchに合わせてもらったアルミケース(ピッタリで緩衝材も入っています)
Cimg3302

薄での書類なら一緒に入る程度の余裕はありますよ。
Cimg3303

17inchサイズならTX100シリーズをカスタマイズでオーダーすればOK.
株式会社 舘林製作所

興味のある方は、一度、問い合わせてみては?

| | | コメント (0) | トラックバック (0)

2008年6月29日 (日)

Mac de Ruby on Rails - #14 - IntelMac編 #5

さて、準備は整ったのでサンプルを作ってみましょう。利用するのはSCOTTスキーマのemp表。

Macintosh:test discus$ rails -d oracle emp_list
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
create lib

・・・・・・中略・・・・・・

create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
Macintosh:test discus$
Macintosh:test discus$

scaffoldを使ってサンプルを作ってみます。
database.ymlの編集なども以前の記事と同じなので省略しますね。)

Macintosh:test discus$ vi emp_list/config/database.yml
Macintosh:test discus$
Macintosh:test discus$
Macintosh:test discus$ cd emp_list
Macintosh:emp_list discus$ rails ruby script/generate scaffold Emp ename:string job:string mgr:integer hiredate:date sal:integer
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
create lib
create lib/tasks
create log

・・・・・・中略・・・・・・

create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
Macintosh:emp_list discus$ ruby script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.0 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel 1.1.4 available at 0.0.0.0:3000
** Use CTRL-C to stop.

でアクセスしてみると。。。でました〜。これでIntelMac上でもRoRからOracleへアクセスできるようになりました〜〜。:-)

Ror

Scaffold




バックナンバー:
Mac de Ruby on Rails - #10 - IntelMac編 #1
Mac de Ruby on Rails - #11 - IntelMac編 #2
Mac de Ruby on Rails - #12 - IntelMac編 #3
Mac de Ruby on Rails - #13 - IntelMac編 #4


| | | コメント (0) | トラックバック (0)

2008年6月22日 (日)

Mac de Ruby on Rails - #13 - IntelMac編 #4

前回のつづき旧バージョンが悪さをしているようなのでこの際、残っている古いバージョンをuninstallしてしまえ! ということに。
尚、Leopardでは事前にRoRが/System/Library/Frameworks/Ruby.framework/以下にインストールされている。


Macintosh:test discus$ sudo gem uninstall activerecord --install-dir=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

Select gem to uninstall:
1. activerecord-1.15.3
2. activerecord-1.15.6
3. activerecord-2.1.0
4. All versions
> 2

You have requested to uninstall the gem:
activerecord-1.15.6
actionwebservice-1.2.6 depends on [activerecord (= 1.15.6)]
rails-1.2.6 depends on [activerecord (= 1.15.6)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn] Y
Successfully uninstalled activerecord-1.15.6
Macintosh:test discus$ ruby test.rb
/Library/Ruby/Site/1.8/rubygems.rb:139:in `activate': can't activate activerecord (= 1.15.3), already activated activerecord-2.1.0] (Gem::Exception)
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:354:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:230:in `establish_connection'
from test.rb:8
Macintosh:test discus$ sudo gem uninstall activerecord --install-dir=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

Select gem to uninstall:
1. activerecord-1.15.3
2. activerecord-2.1.0
3. All versions
> 1

You have requested to uninstall the gem:
activerecord-1.15.3
actionwebservice-1.2.3 depends on [activerecord (= 1.15.3)]
rails-1.2.3 depends on [activerecord (= 1.15.3)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn] Y
Successfully uninstalled activerecord-1.15.3
Macintosh:test discus$ ruby test.rb
/Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:232:in `establish_connection': Please install the oracle adapter:
`gem install activerecord-oracle-adapter` (no such file to load -- active_record/connection_adapters/oracle_adapter) (RuntimeError)
from test.rb:8
Macintosh:test discus$
Macintosh:test discus$

お〜〜〜、忘れていました。 oracle_adapter.rbを。

ということで、oracle_adapter.rbをダウンロード後、/Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters以下へコピー。

Macintosh:test discus$ 
Macintosh:test discus$ curl -O http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/oracle_adapter.rb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27847 100 27847 0 0 28714 0 --:--:-- --:--:-- --:--:-- 66645
Macintosh:test discus$ ll
total 64
drwxr-xr-x 15 discus staff 510 6 14 07:31 emp_list
-rw-r--r-- 1 discus staff 27847 6 14 09:43 oracle_adapter.rb
-rw-r--r-- 1 discus staff 325 6 14 09:13 test.rb
Macintosh:test discus$ sudo cp oracle_adapter.rb /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters
Password:
Macintosh:test discus$
Macintosh:test discus$


再度、テストプログラムを実行。

Macintosh:test discus$ ruby test.rb
7934, MILLER,CLERK

動いた!。
ということで次回へつづく。



バックナンバー:
Mac de Ruby on Rails - #10 - IntelMac編 #1
Mac de Ruby on Rails - #11 - IntelMac編 #2
Mac de Ruby on Rails - #12 - IntelMac編 #3


| | | コメント (0) | トラックバック (0)

2008年6月21日 (土)

Mac de Ruby on Rails - #12 - IntelMac編 #3

さて、少々間が空いてしまったがこれから暫くは土日中心に記事をアップすることが多くなるかも。(おチビちゃんの世話などいろいろあるのでね。w 土日に1週間分のネタを時間指定公開しるようにしておいてもよいかもしれないが、そのネタを纏めてる時間がなかなか取れない。く〜〜〜っ。という感じ。)

と長い前置きはこれくらいにして、本題です。前回は、ruby-oci8をインストールしたところまでだった。(自分でも忘れてる。。)
今日は確認のため以前PPC版の時も使ったテストコードでオラクルへアクセスできるか確認しておくことにする。

以下、PPC版の時と同じなのでさらりとながします。。

Macintosh:˜ discus$ mkdir test
Macintosh:˜ discus$ cd test
Macintosh:test discus$ rails -d oracle emp_list
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
create lib
create lib/tasks
create log

・・・・中略・・・・

create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
Macintosh:test discus$

database.ymlを編集。編集内容は見ての通り。


Macintosh:test discus$
Macintosh:test discus$ vi emp_list/config/database.yml
Macintosh:test discus$ cat emp_list/config/database.yml
# Oracle/OCI 8i, 9, 10g
#
# Requires Ruby/OCI8:
# http://rubyforge.org/projects/ruby-oci8/
#
# Specify your database using any valid connection syntax, such as a
# tnsnames.ora service name, or a SQL connect url string of the form:
#
# //host:[port][/service name]
#
# By default prefetch_rows (OCI_ATTR_PREFETCH_ROWS) is set to 100. And
# until true bind variables are supported, cursor_sharing is set by default
# to 'similar'. Both can be changed in the configation below; the defaults
# are equivalent to specifying:
#
# prefetch_rows: 100
# cursor_sharing: similar
#

development:
adapter: oracle
database: lampeye
username: scott
password: tiger

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: oracle
database: lampeye
username: test
password: test

production:
adapter: oracle
database: lampeye
username: sample
password: sampleadmin

テストコードも以前作ったコードを使い回し。

Macintosh:test discus$ vi test.rb
Macintosh:test discus$
Macintosh:test discus$
Macintosh:test discus$ cat test.rb
require 'rubygems'
require 'active_record'

class Emp < ActiveRecord::Base
set_table_name "EMP"
end

ActiveRecord::Base.establish_connection(
:adapter => "oracle",
:database => "lampeye",
:username => "scott",
:password => "tiger"
)

emp = Emp.find(:first,:conditions =>["ENAME = ?", "MILLER"])
puts "#{ emp.empno}, #{ emp.ename}, #{emp.job}, #{emp.hiredate}"
Macintosh:test discus$
Macintosh:test discus$ ruby test.rb
/Library/Ruby/Site/1.8/rubygems.rb:139:in `activate': can't activate activerecord (= 1.15.6), already activated
ctiverecord-2.1.0]
(Gem::Exception)
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:354:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:230:in
establish_connection'
from test.rb:8


エラーメッセージをみると、activerecord-1.15.6なんてのが悪さしているようだ。。。

Macintosh:test discus$
Macintosh:test discus$ gem li

*** LOCAL GEMS ***

actionmailer (2.1.0, 1.3.6, 1.3.3)
actionpack (2.1.0, 1.13.6, 1.13.3)
actionwebservice (1.2.6, 1.2.3)
activerecord (2.1.0, 1.15.6, 1.15.3) activeresource (2.1.0)
activesupport (2.1.0, 1.4.4, 1.4.2)
acts_as_ferret (0.4.1)

・・・・中略・・・・
<
ruby-yadis (0.3.4)
rubygems-update (1.1.1)
rubynode (0.1.3)
sources (0.0.1)
sqlite3-ruby (1.2.1)
termios (0.9.4)

Macintosh:test discus$
Macintosh:test discus$

ということで、どうやら古いactiverecordが悪さしているらしい。。というところまでは分かった。。。uninstallすればいいらしい。どうやるか調べとく。=>TODO

ということで次回へ続く。




バックナンバー:
Mac de Ruby on Rails - #10 - IntelMac編 #1
Mac de Ruby on Rails - #11 - IntelMac編 #2


| | | コメント (0) | トラックバック (0)

2008年6月15日 (日)

Mac de Ruby on Rails - #11 - IntelMac編 #2

さて、つづきです。ruby-oci8をインストールする。(ruby-oci8は、1.0.0を事前にダウンロードしておいた。尚、本記事を書いている時点では、1.0.1が最新。)

まず、make。

Macintosh:˜ discus$ ll
total 216
drwx------+ 32 discus staff 1088 6 8 23:25 Desktop
drwx------+ 10 discus staff 340 1 3 01:32 Documents
drwx------+ 14 discus staff 476 6 8 23:26 Downloads
drwxr-xr-x 10 discus staff 340 12 19 16:03 Image Browser
drwxr-xr-x 10 discus staff 340 12 19 16:57 Image Kit Browser
drwx------+ 32 discus staff 1088 3 1 14:07 Library
drwx------+ 3 discus staff 102 11 26 2007 Movies
drwx------+ 4 discus staff 136 2 2 11:12 Music
drwx------+ 9 discus staff 306 6 14 05:21 Pictures
drwxr-xr-x+ 5 discus staff 170 11 26 2007 Public
drwxr-xr-x+ 5 discus staff 170 11 26 2007 Sites
drwxr-xr-x 16 discus staff 544 11 25 2007 ruby-oci8-1.0.0
-rw-r--r-- 1 discus staff 107494 3 2 02:27 ruby-oci8-1.0.0.tar.gz
Macintosh:˜ discus$ cd ruby-oci8-1.0.0
Macintosh:ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/OracleInstantClient/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
checking for OCIInitialize() in oci.h... no
---------------------------------------------------
error messages:
Could not compile with Oracle instant client.
You may need to set a environment variable:
DYLD_LIBRARY_PATH=/Users/Shared/OracleInstantClient
export DYLD_LIBRARY_PATH

---------------------------------------------------
See:
* http://ruby-oci8.rubyforge.org/ja/HowToInstall.html
* http://ruby-oci8.rubyforge.org/ja/ReportInstallProblem.html

*** /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=/Users/discus/ruby-oci8-1.0.0/ext/oci8
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
--with-instant-client
--without-instant-client
/Users/discus/ruby-oci8-1.0.0/ext/oci8/oraconf.rb:941:in `initialize': RuntimeError (RuntimeError)
from /Users/discus/ruby-oci8-1.0.0/ext/oci8/oraconf.rb:236:in `new'
from /Users/discus/ruby-oci8-1.0.0/ext/oci8/oraconf.rb:236:in `get'
from /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb:6
'system /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb ' failed
Try 'ruby setup.rb --help' for detailed usage.
make: *** [config.save] Error 1
Macintosh:ruby-oci8-1.0.0 discus$

checking for OCIInitialize() in oci.h... noというエラーが出てmakeできない。いろいろ調べてみたら、ruby-oci8 1.0.0はInteli386アーキテクチャのみ有効なようなので、以下のようにコンパイルオプションに"-arch i386"を追加すればインストールできるとのこと。
以下のサイトを参考にさせてもらった。
http://blog.rayapps.com/2008/04/24/how-to-setup-ruby-and-new-oracle-instant-client-on-leopard/

ということで再make。

Macintosh:ruby-oci8-1.0.0 discus$ export ARCHFLAGS="-arch i386"
Macintosh:ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/OracleInstantClient/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
checking for OCIInitialize() in oci.h... yes
checking for OCIEnvCreate()... yes
checking for OCITerminate()... yes
checking for OCILobOpen()... yes
checking for OCILobClose()... yes
checking for OCILobCreateTemporary()... yes
checking for OCILobGetChunkSize()... yes
checking for OCILobLocatorAssign()... yes
creating ../../lib/oci8.rb from /Users/discus/ruby-oci8-1.0.0/ext/oci8/../../lib/oci8.rb.in
creating extconf.h
creating Makefile
<--- ext/oci8
<--- ext
ruby setup.rb setup
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
make
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0 -I/Users/discus/ruby-oci8-1.0.0/ext/oci8 -DRUBY_EXTCONF_H=\"extconf.h\" -fno
-common -arch i386 -Os -pipe -fno-common -I/Users/Shared/OracleInstantClient/sdk/include -Wall -c oci8.c

・・・・中略・・・・

cc -arch i386 -pipe -bundle -undefined dynamic_lookup -o oci8lib.bundle oci8.o handle.o const.o env.o error.o svcctx.o server.o session.o
stmt.o define.o bind.o describe.o descriptor.o param.o lob.o oradate.o oranumber.o ocinumber.o attr.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L.
-arch i386 -lruby -L/Users/Shared/OracleInstantClient -lclntsh -lpthread -ldl -lm
<--- ext/oci8
<--- ext
Macintosh:ruby-oci8-1.0.0 discus$
Macintosh:ruby-oci8-1.0.0 discus$ sudo make install
Password:
ruby setup.rb install
---> lib
mkdir -p /Library/Ruby/Site/1.8/
install oci8.rb /Library/Ruby/Site/1.8/
---> lib/DBD
mkdir -p /Library/Ruby/Site/1.8/DBD
---> lib/DBD/OCI8
mkdir -p /Library/Ruby/Site/1.8/DBD/OCI8
install OCI8.rb /Library/Ruby/Site/1.8/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
mkdir -p /Library/Ruby/Site/1.8/universal-darwin9.0/.
install oci8lib.bundle /Library/Ruby/Site/1.8/universal-darwin9.0/.
<--- ext/oci8
<--- ext
Macintosh:ruby-oci8-1.0.0 discus$


少々注意する点はあるがそれ以外は順調、順調。



バックナンバー:Mac de Ruby on Rails - #10 - IntelMac編 #1


| | | コメント (0) | トラックバック (0)

2008年6月14日 (土)

Mac de Ruby on Rails - #10 - IntelMac編 #1

さて、やっと時間ができたので前回Leopard(IntelMac)のRosettaで動作させていたOracle Instant Client 10g R1 10.1.0.3.0 for MacOSX(PPC)からネイディブで動作するOracle Instant Client 10g R2 10.2.0.4.0 for MacOSX(Intel x86)へ入れ替えたのもこれをやるための準備。


Mac OS X 10.5.1 Leopard (Intel x86)にはRuby/Ruby on Railsがインストールされている。やっとx86ネイティブなOracle Instant Client for MacOSX(intel x86)がリリースされたのだからその環境を整えておかないと。。。というのがその理由。

では早速。今日は、Ruby on RailsとRubyGemsをアップデートするまで。

まずは、MacOSXの環境

Macintosh:˜ discus$ uname -a
Darwin Macintosh.local 9.3.0 Darwin Kernel Version 9.3.0: Fri May 23 00:49:16 PDT 2008; root:xnu-1228.5.18~1/RELEASE_I386 i386
Macintosh:˜ discus$
Macintosh:˜ discus$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.5.3
BuildVersion: 9D34
Macintosh:˜ discus$ /usr/sbin/system_profiler SPApplicationsDataType | grep Xcode

Xcode:
Get Info String: Xcode version 3.1
Location: /Developer/Applications/Xcode.app

次はRuby関連のバージョン確認(プレインストールされているRailsは2.xではなく、1.2.6なので今回は、2.1へアップデート RubyGemsもついでにアップデートしておく。)

Last login: Sat Jun 14 05:18:31 on console
Macintosh:˜ discus$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]
Macintosh:˜ discus$ rails -v
Rails 1.2.6
Macintosh:˜ discus$ gem -v
1.0.1
Macintosh:˜ discus$
Macintosh:˜ discus$


では、railsのアップデートから。

Macintosh:˜ discus$
Macintosh:˜ discus$ sudo gem install rails --include-dependencies
Password:
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you list
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.8.1
Successfully installed activesupport-2.1.0
Successfully installed activerecord-2.1.0
Successfully installed actionpack-2.1.0

・・・・中略・・・・

Installing RDoc documentation for rake-0.8.1...
Installing RDoc documentation for activesupport-2.1.0...
Installing RDoc documentation for activerecord-2.1.0...
Installing RDoc documentation for actionpack-2.1.0...
Installing RDoc documentation for actionmailer-2.1.0...
Installing RDoc documentation for activeresource-2.1.0...
Macintosh:˜ discus$
Macintosh:˜ discus$

うまくいったようだ。。:)


お次は、RubyGemsのアップデート

Macintosh:˜ discus$
Macintosh:˜ discus$ sudo gem update --system
Updating RubyGems...
Attempting remote update of rubygems-update
Successfully installed rubygems-update-1.1.1
1 gem installed
Updating version of RubyGems to 1.1.1
Installing RubyGems 1.1.1
mkdir -p /Library/Ruby/Site/1.8/rbconfig
install -c -m 0644 rbconfig/datadir.rb /Library/Ruby/Site/1.8/rbconfig/datadir.rb
mkdir -p /Library/Ruby/Site/1.8/rubygems
install -c -m 0644 rubygems/builder.rb /Library/Ruby/Site/1.8/rubygems/builder.rb
install -c -m 0644 rubygems/command.rb /Library/Ruby/Site/1.8/rubygems/command.rb

・・・・中略・・・・

= Announce: RubyGems Release 1.1.1

Release 1.1.1 fixes some bugs.

Bugs Fixed:

* Gem.prefix now returns non-nil only when RubyGems was installed outside
sitelibdir or libdir.
* The `gem server` gem list now correctly links to gem details.
* `gem update --system` now passes --no-format-executable to setup.rb.
* Gem::SourceIndex#refresh! now works with multiple gem repositories.
* Downloaded gems now go into --install-dir's cache directory.
* Various fixes to downloading gem metadata.
* `gem install --force` now ignores network errors too.
* `gem pristine` now rebuilds extensions.
* `gem update --system` now works on virgin Apple ruby.
* Gem::RemoteFetcher handles Errno::ECONNABORTED.
* Printing of release notes fixed.

For a full list of changes to RubyGems including credits, see the ChangeLog
file.

・・・・中略・・・・

If you find a bug where RubyGems crashes, please provide debug output. You can
do that with `gem --debug the_command`.

== Thanks

Keep those gems coming!

-- Jim & Chad & Eric (for the RubyGems team)


------------------------------------------------------------------------------

RubyGems installed the following executables:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem

If `gem` was installed by a previous RubyGems installation, you may need
to remove it by hand.

RubyGems system software updated
Macintosh:˜ discus$
Macintosh:˜ discus$

こちらも問題なくアップデートできたようだ。


最後にバージョン確認。

Macintosh:˜ discus$
Macintosh:˜ discus$ gem -v
1.1.1
Macintosh:˜ discus$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]
Macintosh:˜ discus$ rails -v
Rails 2.1.0
Macintosh:˜ discus$

順調、順調!

今日はここまで、次回へつづく。

| | | コメント (0) | トラックバック (0)

2008年6月 8日 (日)

Oracle Instant Client 10g R2 10.2.0.4.0 for IntelMacへ入れ替える

随分前にRosettaを介してOracle Instant Client 10g R1 for PPCがIntelMac上で動作するという記事を書いたが、少々前のこと、やっとIntalMac版Oracle Instant Client 10g R2 10.2.0.4.0 for IntelMacがリリースされたので次のステップへの準備として以前インストールしたPPC版Oracle Instant ClientをIntelMac版に入れ替えておく!

インストール手順などは以前の記事を参考してくださいね。同じですから。

尚、今回は以前のインストールしたPPC版Oracle Instant ClientをIntelMac版と入れ替えるだけなので、PPC版を一旦削除してからIntelMac版のOracle Instant Clientをダウンロード、解凍しただけ。環境変数も以前のままです。

Macintosh:OracleInstantClient discus$ ll
total 211792
-rw-r--r--@ 1 discus wheel 287 3 27 04:38 BASIC_LITE_README
-rw-r--r--@ 1 discus wheel 277 3 27 04:38 BASIC_README
-rw-r--r--@ 1 discus wheel 275 3 27 04:38 JDBC_README
-rw-r--r--@ 1 discus wheel 281 3 27 04:38 SQLPLUS_README
-r--r--r--@ 1 discus wheel 1609607 2 18 03:54 classes12.jar
-rwxr-xr-x@ 1 discus wheel 30556 3 27 04:37 genezi
-r-xr-xr-x@ 1 discus wheel 1525 8 30 2004 glogin.sql
lrwxr-xr-x 1 discus wheel 20 6 8 23:07 libclntsh.dylib -> libclntsh.dylib.10.1
-rwxr-xr-x@ 1 discus wheel 21252860 3 7 09:12 libclntsh.dylib.10.1
-rwxr-xr-x@ 1 discus wheel 31016 2 22 09:02 libheteroxa10.dylib
-rwxr-xr-x@ 1 discus wheel 31016 2 22 09:02 libheteroxa10.jnilib
-rwxr-xr-x@ 1 discus wheel 1638264 3 7 03:09 libnnz10.dylib
lrwxr-xr-x 1 discus wheel 18 6 8 23:07 libocci.dylib -> libocci.dylib.10.1
-rwxr-xr-x@ 1 discus wheel 1111964 3 11 04:49 libocci.dylib.10.1
-rwxr-xr-x@ 1 discus wheel 72626696 3 27 04:38 libociei.dylib
-rwxr-xr-x@ 1 discus wheel 4309524 3 27 04:38 libociicus.dylib
-rwxr-xr-x@ 1 discus wheel 103800 2 22 09:02 libocijdbc10.dylib
-rwxr-xr-x@ 1 discus wheel 103800 2 22 09:02 libocijdbc10.jnilib
-rwxr-xr-x@ 1 discus wheel 865412 2 21 06:53 libsqlplus.dylib
-rwxr-xr-x@ 1 discus wheel 1442316 2 21 06:54 libsqlplusic.dylib
-r--r--r--@ 1 discus wheel 1555682 2 18 03:55 ojdbc14.jar
-r--r--r--@ 1 discus wheel 1646178 1 23 01:28 orai18n.jar
drwxr-xr-x@ 7 discus staff 238 3 27 04:38 sdk
-rwxr-xr-x@ 1 discus wheel 12612 2 21 06:53 sqlplus
-rw-r--r-- 1 discus wheel 225 2 2 10:31 tnsnames.ora
Macintosh:OracleInstantClient discus$
Macintosh:˜ discus$ cat .bashrc
alias ll='ls -lv'

export ORACLE_HOME=/Users/Shared/OracleInstantClient
export NLS_LANG=Japanese_Japan.AL32UTF8
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
export TNS_ADMIN=$ORACLE_HOME
Macintosh:˜ discus$
では、SQL*Plusを起動してOracle11g R1 11.1.0.6.0へ接続してみる。

14

上手く行きましたね。ということで今日はここまで。

| | | コメント (0) | トラックバック (0)

2008年6月 3日 (火)

イタリアから

16

イタリアからアクセスがあるなぁなんて見てみたらリンクされてました。ありがとう。イタリア語分からないけど。

| | | コメント (0) | トラックバック (0)

2008年5月16日 (金)

Mac100% 2008 spring

MacOS9のころ作っていたフリーウェアがいろいろな雑誌に掲載された時以来だからかなり久しぶり。
Dashborad de Aquarium v1.1がMac100%で紹介されました。(献本ありがとうございました。)


17

| | | コメント (0) | トラックバック (0)

2008年5月 7日 (水)

PL/SQL で Python Challenge Level 18 う〜〜〜ん。

やることは分かったのだがPL/SQLでは重要な部分(pythonなら一発だけど)を手作りしないとならない。。。とりあえず適当に作ってはみたもののまだ思うような結果にはなっていない。。だが、そこさえクリアできればlevel18はPL/SQLだけで解けるはず。。。。。ということで暇を見て実装中。といってもその暇がなかなか取れなくなりそうな予感も。。。まあ、今回のネタはおもしろそうなので、少しづつでも進めて行きますよ。。。w

| | | コメント (0) | トラックバック (0)

2008年4月26日 (土)

Oracle Instant Client 10.2.0.4.0 for MacOSX (Intel x86)

お〜〜〜、ついにというか、やっとでたか〜〜、Oracle Instant Client 10.2.0.4.0 for MacOSX(Intal x86)

これでやっとIntel MacでもRuby on RailsでOracleへアクセスできる〜。

15

| | | コメント (0) | トラックバック (0)

PL/SQL で Python Challenge Level 18 わかちゃったかも・・

Level18は以外と簡単かも〜〜、Pythonならば。と。
当然だよね。Python ChallengeなんだからPythonを使って解くことを前提に作られてるのは。。。。

しかし、今回はもしかするとPL/SQLだけで全部解けちゃうかもしれない・・・久々だ〜。一部はかなり苦労してガリガリ作り込まなければならないと思われるのだが・・・その方法で上手く解けるという自信は70%。チャレンジしてみますよ〜〜。連休中にロジックを考えとく。。。

次回へつづく。;)

| | | コメント (0) | トラックバック (0)

2008年4月22日 (火)

PL/SQL で Python Challenge Level 17 - 完

さて、少々間があいてしまったが、Python Challenge Level17の最終回。

前回、つまらないところでモタモタしてしまったが、Oracle Application Express 3.0.xを使わず、単純に mod_plsqlを使えばいいじゃんと言うことで。。。。

Level17は、以前にも書いたがWeb Applicationを書いたことのある人なら簡単に解けると思います。
今回は一部を除き、約90%がPL/SQL、残りをJava stored procedureで処理した。;)

ということで答えを導きだしたスクリーンショット。(答えはぼかしてますよ!)

Python_level17

次回、Python Challenge Level 18はこれまた気が向いたときにても。。。Enjoy Python Challenge!

| | | コメント (0) | トラックバック (0)

2008年4月16日 (水)

Oracle11g R1 11.1.0.6.0 for Linux x86 and Oracle Application Express

Python Challenge Level17の記事を書く前に、やっておきたい事があったのでそちらを先に。

何をやりたかったのか? それは、APEX(Oracle Application Express)環境を作っておく事。

Python ChallengeではWeb Applicationとして処理して欲しそうな問題も多数存在する。Level17はそうしたほうが自然な感じをだと思ったので。。。(実際にはそこまでしなくても解けたのですが)
Oracle11gからApexがバンドルされたのと同時に、組み込みPL/SQL gateway機能も追加されたのでその辺りも含めて確認しておきたかった。

この組込PL/SQL Gatewayってなによ? って方もいると思うのだが、簡単に言うと、”Oracle11gのデータベース内部にHTTP Server+mod_plsqが内蔵されちゃっている”と思えばイメージしやすいんじゃないかと。

概要はこのあたりのマニュアルを読めば掴めると思います。はい。

マニュアル(英語)Understanding Oracle Application Express Architecture

データベースサーバがHTTPサーバを内蔵なんて言うといや〜な顔する人もいるだろうなぁ。なんて思ったりもします。(笑)
実際の所組込みPL/SQLゲートウェイは、外部に公開するというより開発目的など内部の閉じられた環境で利用されることがほとんどじゃないかなぁと個人的には思います。

Oracle11gをインストールした場合、OUIによるインストールでは明示的に除外しなければOracle Application Expressも同時にインストールされる。尚、埋込みPL/SQLゲートウェイを利用するためには、Oracle XML DBも必要。詳細はマニュアルに記載されているので、よ〜〜〜く読めば簡単に構成できます。
4.5 Postinstallation Tasks for Oracle Application Express

ちなみに、Oracle11g R1 1011.1.0.6.0に含まれるOracle Application Expressは、3.0.1.00.08とのこと、3.1が既にリリースされているのでアップグレードするのもいいが、今回は面倒なのでそのまま使うことにした。

では”素直に”マニュアルに従い作業を進める。。。(笑)

sysdbaで接続後、 $ORACLE_HOME/apex/apexconfを実行しadminユーザのパスワードとapexのport番号を設定してから、anonymousユーザをアンロックします。

G5Server:˜ discus$ ssh oracle@corydoras
oracle@corydoras's password:
Last login: Tue Apr 15 22:09:38 2008 from 192.168.1.19
[oracle@corydoras ˜]$
[oracle@corydoras ˜]$
[oracle@corydoras ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 火 4月 15 22:46:50 2008

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

> conn / as sysdba
接続されました。
SYS> spo apexconfig.log
SYS> @?/apex/apxconf

PORT
----------
8080

Enter values below for the XDB HTTP listener port and the password for the Application Express ADMIN user.
Default values are in brackets [ ].
Press Enter to accept the default value.


Enter a password for the ADMIN user [] apex
Enter a port for the XDB HTTP listener [ 8080]
...changing HTTP Port

PL/SQLプロシージャが正常に完了しました。


PL/SQLプロシージャが正常に完了しました。


セッションが変更されました。

...changing password for ADMIN

PL/SQLプロシージャが正常に完了しました。


コミットが完了しました。

SYS> alter user anonymous account unlock;

ユーザーが変更されました。

SYS>

さて、お継ぎはマニュアルに記載されている通り(コピペでOKです。)外部のネットワークにアクセスする為にACLを変更しました。
(この例ではマニュアルと同様、どこでもアクセスできるようにしておきます。今回の場合は、python challengeのサイトだけアクセス許可しておけば問題ないのですが、いろいろと試したいことがあるので今回マニュアルの例をそのまま利用させてもらいました。)

SYS> l
1 DECLARE
2 ACL_PATH VARCHAR2(4000);
3 ACL_ID RAW(16);
4 BEGIN
5 -- Look for the ACL currently assigned to '*' and give FLOWS_030000
6 -- the "connect" privilege if FLOWS_030000 does not have the privilege yet.
7 SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
8 WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
9
10 -- Before checking the privilege, make sure that the ACL is valid
11 -- (for example, does not contain stale references to dropped users).
12 -- If it does, the following exception will be raised:
13 --
14 -- ORA-44416: Invalid ACL: Unresolved principal 'FLOWS_030000'
15 -- ORA-06512: at "XDB.DBMS_XDBZ", line ...
16 --
17 SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID
18 FROM XDB.XDB$ACL A, PATH_VIEW P
19 WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND
20 EQUALS_PATH(P.RES, ACL_PATH) = 1;
21
22 DBMS_XDBZ.ValidateACL(ACL_ID);
23
24 IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'FLOWS_030000', 'connect')
25 IS NULL THEN
26 DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
27 'FLOWS_030000', TRUE, 'connect');
28 END IF;
29
30 EXCEPTION
31 -- When no ACL has been assigned to '*'.
32 WHEN NO_DATA_FOUND THEN
33 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
34 'ACL that lets power users to connect to everywhere',
35 'FLOWS_030000', TRUE, 'connect');
36 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
37* END;
SYS> /

PL/SQLプロシージャが正常に完了しました。

SYS>
SYS> commit;

コミットが完了しました。

SYS>


apexの管理画面にログインするには...以下のような形式のURLでブラウザからアクセスする。もちろん、ホストはOracle11g Databaseインスタンスがあるサーバですよ。

http://host:port/apex/apex_admin

Apex_admin_1

Apex_admin_2

Apex_admin_3

Apex_admin_4

ここまでで、application expressは利用可能な状態なのだが1つ問題がある、それは英語版のままだということ。(これは以前のOracle Application Expressでも同じですね。)
ということで、日本語リソースをロードします。尚、環境変数NLS_LANGは、AL32UTF8である必要があります。(これも以前と同じなので利用したことがあれば間違うことは無いと思いますが、注意しなければならない点ですよ。うっかりミスというのもありますから。)

[oracle@corydoras ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 火 4月 15 23:06:03 2008

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

> conn / as sysdba
接続されました。
SYS> !echo $NLS_LANG
japanese_japan.AL32UTF8

SYS> alter session set current_schema=FLOWS_030000;

セッションが変更されました。

SYS> @?/apex/builder/ja/load_ja
. ____ ____ ____ ____
. / \ | \ /\ / | /
.| || / / \ | | |
.| ||--- ---- | | |--
.| || \ / \ | | |
. \____/ | \/ \ \____ |____ \____
.
. Application Express Hosted Development Service Installation.
.........................................................

PL/SQLプロシージャが正常に完了しました。

Install Application Express applications

PL/SQLプロシージャが正常に完了しました。

APPLICATION 4420 - APEX - System Messages
Set Credentials...
Check Compatibility...
API Last Extended:20070525
Your Current Version:20070525
This import is compatible with version: 20070108
COMPATIBLE (You should be able to run this import without issues.)
Set Application ID...
...authorization schemes
...navigation bar entries
...application processes
...application items
...application level computations
...Application Tabs
...Application Parent Tabs
...Shared Lists of values
...Application Trees
...page groups
...PAGE 1.442: メッセージ
...lists
...breadcrumbs

中略

...PAGE 91.4009: 検証の作成 - 検証タイプ
...PAGE 92.4009: 標準タブの作成の確認
...PAGE 93.4009: 既存のタブ・セットの選択
...PAGE 94.4009: タブ情報の指定
...PAGE 95.4009: 親タブ・セット
...PAGE 96.4009: 新しいタブ名
...PAGE 97.4009: 表形式フォーム
...PAGE 98.4009: 検証の作成 - SQL検証
...PAGE 99.4009: SQLレポートの作成
...PAGE 100.4009: カレンダ・ページの作成
...PAGE 101.4009: ボタンのコピー
...PAGE 102.4009: リージョンの削除の確認
...PAGE 103.4009: ビルド・ステータス
...PAGE 104.4009: ビルド・チャート問合せ
...PAGE 105.4009: スクリプト・ファイルのエクスポート
...PAGE 106.4009: ビルド・チャート問合せ
...PAGE 107.4009: 作成ウィザード
...PAGE 108.4009: 作成ウィザード
...PAGE 109.4009: 作成ウィザード
...PAGE 110.4009: 作成ウィザード
...PAGE 111.4009: 作成ウィザード
...PAGE 112.4009: ツリー・ウィザード
...PAGE 113.4009: ツリー・ウィザード
...PAGE 114.4009: ツリー・ウィザード

中略

......scheme 108165525079033088.4709
...done
Adjust instance settings

PL/SQLプロシージャが正常に完了しました。


最後に、job_queue_process初期化パラメータが1以上になっているか確認します。
私も初めて気付いたがデフォルトで1000になっているんですね。びっくり。以前は1桁か2桁だったようなきがするが。

SYS> 
SYS> show parameter job_queue_processes

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 1000
SYS>

尚、今回はSSLの設定は行わないので早速Apexの管理ユーザログインし直し開発用作業領域と開発ユーザを作っておく。

Apex_ja_1

Apex_ja_2

Apex_ja_3

Apex_ja_4

Apex_ja_7

Apex_ja_8

Apex_ja_10

Apex_ja_9

さて、準備もできたので次へ行くか!

| | | コメント (0) | トラックバック (0)

2008年4月14日 (月)

Java AppletがWindowsのJavaSE6.0 Update5で動作しない件

megawattさんのブログは見ていたものここ数日コメント欄までは見ていなかったよ。megawattさんが忙しいのは知ってたけどメールくれれば調べといたのに〜。 :)
megawattさんのブログの日本の借金時計は私のブログ内にあるアプレットを呼び出しているだけですから。

ということで調べてみた。

おかげで、何ヶ月か振りでWindowsを起動しちゃったよ。(笑

結論から言うと、Java SE6.0 update 5のバグっぽい。

試してみたところWindows XP SP1(32bit)にJ2SE5.0のJREのみインストールしてある場合にはIE6、FIrefox2、Safari3.1とも特に問題もなくapplet動作する

次に、J2SE5.0をアンインストールした後にJavaSE6.0のJREのみインストールし、IE6、FIrefox2、Safari3.1でappletを起動してみると、IE6以外はappletが正しく動作せず、Firefox2やSafari3.1ではその後挙動があやしくなりHang upしたり、強制終了すると起動しなくなったりと散々な結果になった。IEはやはり動きが特殊なのなかぁ。
以下、その時のスクリーンショット。

Javase6_applet_win01

Javase6_applet_win02 Javase6_applet_win03

Javase6_applet_win04


Javase6_applet_win06


Javase6_applet_win07


Javase6_applet_win08


それは置いといて、JavaSE6.0でappletを動作させる方法は、このブログに書かれていた。(ありがとうございます)ので早速試してみると、お〜〜お見事! 回避できた。
Javase6_applet_win09

Javase6_applet_win10

Javase6_applet_win11


ちなみに、MacOSXではJavaSE6.0はPreview ReleaseのままですがWindowsのコントロールパネルと違い、Appletを実行するjavaのversionを簡単に切り替えられる。
とは言ってもMacOSX版では今のところ今回のような問題は起きていない(ようだ)。

Javase6_applet_mac_preference


ちなみに、MacOSX 10.4.11 PowerPC G5ではOpera9.25/Safari3.1/Firefox2.0.0.13ともOKだった。

| | | コメント (7) | トラックバック (0)

2008年4月13日 (日)

PL/SQL で Python Challenge Level 17 #2 - 解けた!

さて、前回、解き方は見えたような気がすると書いたがいろいろな罠?に見事に引っかかったが解けました。はい。
今、Level18の問題が見えたのだが、また画像問題なのかな?

Level17は、Web Applicationを作った経験のある方ならLevel17の質問の画像自体がヒント。
なんですが、2重、3重の仕掛けがあるのでイライラするよ。ですが、基本的にはいままでの問題を解いてきたテクニックやコードを再利用すれば十分なので特に新しいことが必要でもない。。。

ということで、次回のPL/SQL で Python ChallengeはLevel17のヒントにならないヒント。でLevel17を締めくくろう。


以下のスクリーンショットは、最後の仕掛けを通り抜ける為のヒントを取り出す事に成功した場面。Level18のURLを導きだした時のスクリーンショットではありません。:)
Level17_no2

| | | コメント (0) | トラックバック (0)

2008年3月31日 (月)

タイムゾーン de 自動調整のおまけ

今回はタイムゾーンネタというより、前回前々回のおまけネタ。

前回前々回ともほとんど解説なしにサンプルSQLを載せていたので、今回は表を利用せずにカレンダーを生成している部分の説明を少々。
 
前々回の例で利用した階層問合せによるカレンダー生成、前回の例で利用した集計関数cubeによるカレンダー生成いずれも連番を生成するとという点では同じなのですが、階層問合せとcube関数の性格の違いから使い方も少々異なる。いずれにしても知っていると便利なことも多々ありますよ。

では、まず最初は階層問合せから。

カレンダーを生成する前に階層と合わせで一連番号を生成するには、level疑似列を用いて必要なlevelまで階層を作り出せばOK。
(但し、Oracle9iまではこの方法は想定通りに動作しないのでご注意を。10g以降であれば想定通りの結果を返してくれます。)

以下の例では階層問合せを利用し1〜27までの一連番号を生成したものです。

SCOTT> select level
2 from dual
3 connect by level <= 27;

LEVEL
----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

27行が選択されました。

SCOTT>

上記の一連番号を利用し、実行同日を含む27日前までの日付を求めてみます。

SCOTT> l
1 select trunc(sysdate) - (level-1)
2 from dual
3 connect by level <= 27
4* order by 1
SCOTT> /

TRUNC(SY
--------
08-03-05
08-03-06
08-03-07
08-03-08
08-03-09
08-03-10
08-03-11
08-03-12
08-03-13
08-03-14
08-03-15
08-03-16
08-03-17
08-03-18
08-03-19
08-03-20
08-03-21
08-03-22
08-03-23
08-03-24
08-03-25
08-03-26
08-03-27
08-03-28
08-03-29
08-03-30
08-03-31

27行が選択されました。

SCOTT>

できましたよね。簡単です。


次に集計関数cubeを利用する方法です。
cubeに関するマニュアルも事前に読んでおくといいですよ。

一連版を生成するために、cube関数の以下のような性質を利用しています。

SCOTT> select 1
2 from dual
3 group by cube(1);

1
----------
1
1

SCOTT> select 1
2 from dual
3 group by cube(1,1);

1
----------
1
1
1
1

SCOTT> select 1
2 from dual
3 group by cube(1,1,1);

1
----------
1
1
1
1
1
1
1
1

8行が選択されました。

SCOTT>

階層問合せのような柔軟性はないのですが、32件のデータを生成するには cube(1,1,1,1,1)とすればいいわけです。

SCOTT> select 1
2 from dual
3 group by cube(1,1,1,1,1);

1
----------
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

32行が選択されました。

SCOTT>

ただ一連番号にはなっていません。単に32行の結果を得たたけです。そこでronum疑似列を利用して1〜27までの一連番号を求めます。

SCOTT> select rownum
2 from (select 1 from dual group by cube(1,1,1,1,1))
3 where rownum <= 27;

ROWNUM
----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

27行が選択されました。

SCOTT>


ここまでできればあとは簡単。階層問合せと同じように日付を生成してみましょう。

SCOTT> select trunc(sysdate) - (rownum-1)
2 from (select 1 from dual group by cube(1,1,1,1,1))
3 where rownum <= 27
4 order by 1;

TRUNC(SY
--------
08-03-05
08-03-06
08-03-07
08-03-08
08-03-09
08-03-10
08-03-11
08-03-12
08-03-13
08-03-14
08-03-15
08-03-16
08-03-17
08-03-18
08-03-19
08-03-20
08-03-21
08-03-22
08-03-23
08-03-24
08-03-25
08-03-26
08-03-27
08-03-28
08-03-29
08-03-30
08-03-31

27行が選択されました。

SCOTT>

cube関数はOracle9iから利用できる関数なのでOracle9iでこんなことを行いたい場合には前述した階層問い合せの代役にもなりますね。


Enjoy SQL!

| | | コメント (0) | トラックバック (0)

2008年3月29日 (土)

タイムゾーン de 自動調整 #2

タイムゾーン de 自動調整の続きです。 前回階層問合せを利用して実現した方法を集計関数cubeで置き換えた例。

クライアントのタイムゾーン(SESSIONTIMEZONE)を確認。(タイムゾーンはJST)。

SCOTT> select sessiontimezone from dual;

SESSIONTIMEZONE
-----------------------------------------------------------------
+09:00

SCOTT> l
1 select
2 cal."date",
3 nvl(logs."activity",0) as "activity"
4 from
5 (
6 select
7 "date",
8 count(ts_ltz) as "activity"
9 from
10 (
11 select
12 to_char(ts_ltz, 'YYYY/MM/DD') as "date",
13 ts_ltz
14 from
15 ts_test
16 )
17 group by
18 "date"
19 ) logs
20 right outer join
21 (
22 select
23 to_char(
24 trunc(sysdate) - (rownum - 1),
25 'YYYY/MM/DD'
26 ) as "date"
27 from
28 (
29 select 1
30 from
31 dual
32 group by
33 cube (1,1,1,1,1)
34 )
35 where
36 rownum <= 27
37 ) cal
38 on logs."date" = cal."date"
39 order by
40* cal."date"
SCOTT> /

date activity
---------- ----------
2008/03/02 2
2008/03/03 2
2008/03/04 2
2008/03/05 2
2008/03/06 2
2008/03/07 2
2008/03/08 2
2008/03/09 2
2008/03/10 2
2008/03/11 2
2008/03/12 2
2008/03/13 2
2008/03/14 2
2008/03/15 2
2008/03/16 2
2008/03/17 2
2008/03/18 2
2008/03/19 2
2008/03/20 2
2008/03/21 2
2008/03/22 2
2008/03/23 2
2008/03/24 0
2008/03/25 2
2008/03/26 2
2008/03/27 3
2008/03/28 0

27行が選択されました。

SCOTT>
<

クライアントのタイムゾーンをUTCへ変更

SCOTT> alter session set time_zone='UTC';

セッションが変更されました。

SCOTT>
SCOTT> l
1 select
2 cal."date",
3 nvl(logs."activity",0) as "activity"
4 from
5 (
6 select
7 "date",
8 count(ts_ltz) as "activity"
9 from
10 (
11 select
12 to_char(ts_ltz, 'YYYY/MM/DD') as "date",
13 ts_ltz
14 from
15 ts_test
16 )
17 group by
18 "date"
19 ) logs
20 right outer join
21 (
22 select
23 to_char(
24 trunc(sysdate) - (rownum - 1),
25 'YYYY/MM/DD'
26 ) as "date"
27 from
28 (
29 select 1
30 from
31 dual
32 group by
33 cube (1,1,1,1,1)
34 )
35 where
36 rownum <= 27
37 ) cal
38 on logs."date" = cal."date"
39 order by
40* cal."date"
SCOTT> /

date activity
---------- ----------
2008/03/02 2
2008/03/03 2
2008/03/04 2
2008/03/05 2
2008/03/06 2
2008/03/07 2
2008/03/08 2
2008/03/09 2
2008/03/10 2
2008/03/11 2
2008/03/12 2
2008/03/13 2
2008/03/14 2
2008/03/15 2
2008/03/16 2
2008/03/17 2
2008/03/18 2
2008/03/19 2
2008/03/20 2
2008/03/21 2
2008/03/22 2
2008/03/23 1
2008/03/24 1
2008/03/25 2
2008/03/26 2
2008/03/27 2
2008/03/28 0

27行が選択されました。

SCOTT>

階層問合せほどの柔軟性はないのですがcubeでも同様のことができるんですよ。

| | | コメント (0) | トラックバック (0)

2008年3月28日 (金)

タイムゾーン de 自動調整

Python Challengeは気が向いた時にやるとして、今日は、タイムゾーンで日時の自動調整をして楽をしようというお話。

Oracleには、timestamp with local time zone型(マニュアルの説明はわかりにくいかも)という便利な日時データ型があります。この日時データ型で日時を保存すると、クライアント側ではクライアントのタイムゾーンに調整された日時を参照することができるようになります。
timestamp with local time zone型はデータベースの作成時に指定されたタイムゾーンで日時データを保持(クライアント側とタイムゾーンが異なる場合はデータベース側のタイムゾーンへ自動調整されます)します。

言葉で言っても分かり憎いでしょうから、早速、例をお見せしましょう。 といっても少々変った例なので(Oracleの)SQL初心者向きではないですが。。

●●●この例の環境及び条件の説明●●●

データベース(この例の場合はOracle10g R1)のタイムゾーン(DBTIMEZONE)は、UTC。
クライアント(この例の場合はSQL*Plus)のタイムゾーン(SESSIONTIMEZONE)は、+9(つまりJST)とUTCをalter sessionにて変更する。
ts_test表には、TIMESTAMP WITH LOCAL TIME ZONE型(今回の場合はUTCで)で2/28から3/27までのあるアクティビティのログ(日時データのみ)が記録されている。(尚、アクティビティの無い日のログは記録されていない。)

というデータ、環境で、実行当日を含む直近27日分のアクティビティ数を日毎に集計して日付順に取得する。アクティビティが無い日はアクティビティ数を0として日付を表示する。
(但し、ts_test以外の表は使わずに実現する。必須じゃないけど、できればSQL1文で!)

では、早速。

 
データベースタイムゾーン(DBTIMEZONE)は、UTCであることを確認。

(ちなみに、データベースに既にTIMESTAMP WITH LOCAL TIME ZONE型を持つ表が存在しなければ、alter database文で変更可能。)
Last login: Fri Mar 28 05:01:29 on console
Welcome to Darwin!
G5Server:˜ discus$ su - oracle

Password:
G5Server:˜ oracle$
G5Server:˜ oracle$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 金 3月 28 07:52:49 2008

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

>
> conn scott/tiger@catfish
接続されました。
SCOTT> select dbtimezone from dual;

DBT
---
UTC

次にクライアントのタイムゾーン(SESSIONTIMEZONE)を確認。(JSTになっている)。

SCOTT> select sessiontimezone from dual;

SESSIONTIMEZONE
-----------------------------------------------------------------
+09:00


ts_test表の登録データを確認する。(クライアントのタイムゾーン(JST)へ自動調整されて表示される。)

TIMESTAMP WITH LOCAL TIME ZONE型として登録されている日時データはクライアントのタイムゾーンに自動調整されて表示される。
簡単に確認する方法としてCURRENT_TIMESTAMP疑似列を問い合わせて現状を確認することがもできる。

SCOTT> select current_timestamp from dual;

CURRENT_TIMESTAMP
-----------------------------------------------------------------
08-03-28 08:07:33.082296 +09:00

SCOTT> desc ts_test
名前 NULL? 型
-------------------------- -------- ----------------------------
TS_LTZ TIMESTAMP(6) WITH LOCAL TIME
ZONE


SCOTT> select * from ts_test order by ts_ltz;

TS_LTZ
-----------------------------------------------------------------
08-02-29 00:00:00.000000
08-02-29 23:59:59.999999
08-03-01 00:00:00.000000
08-03-01 23:59:59.999999
08-03-02 00:00:00.000000
08-03-02 23:59:59.999999
08-03-03 00:00:00.000000
08-03-03 23:59:59.999999
08-03-04 00:00:00.000000
08-03-04 23:59:59.999999
08-03-05 00:00:00.000000
08-03-05 23:59:59.999999
08-03-06 00:00:00.000000
08-03-06 23:59:59.999999
08-03-07 00:00:00.000000
08-03-07 23:59:59.999999
08-03-08 00:00:00.000000
08-03-08 23:59:59.999999
08-03-09 00:00:00.000000
08-03-09 23:59:59.999999
08-03-10 00:00:00.000000
08-03-10 23:59:59.999999
08-03-11 00:00:00.000000
08-03-11 23:59:59.999999
08-03-12 00:00:00.000000
08-03-12 23:59:59.999999
08-03-13 00:00:00.000000
08-03-13 23:59:59.999999
08-03-14 00:00:00.000000
08-03-14 23:59:59.999999
08-03-15 00:00:00.000000
08-03-15 23:59:59.999999
08-03-16 00:00:00.000000
08-03-16 23:59:59.999999
08-03-17 00:00:00.000000
08-03-17 23:59:59.999999
08-03-18 00:00:00.000000
08-03-18 23:59:59.999999
08-03-19 00:00:00.000000
08-03-19 23:59:59.999999
08-03-20 00:00:00.000000
08-03-20 23:59:59.999999
08-03-21 00:00:00.000000
08-03-21 23:59:59.999999
08-03-22 00:00:00.000000
08-03-22 23:59:59.999999
08-03-23 00:00:00.000000
08-03-23 23:59:59.999999
08-03-25 00:00:00.000000
08-03-25 23:59:59.999999
08-03-26 00:00:00.000000
08-03-26 23:59:59.999999
08-03-27 08:59:59.999999
08-03-27 09:00:00.000000
08-03-27 10:12:11.928490

55行が選択されました。

SCOTT>

では、上記のデータを直近27日分のアクティビティ数を日毎に集計。アクティビティの無い日はアクティビティ数を0として問い合わせるSQL文。

以下の例では、Oracle独自の階層問合せのlevel疑似列を利用しSYSDATEから27日分のカレンダーを生成しログと外部結合することで、ログデータが存在していない日の
アクティビティ数を0として取得している。

SCOTT> l
1 select
2 cal."date",
3 nvl(logs."activity",0) as "activity"
4 from
5 (
6 select
7 "date",
8 count(ts_ltz) as "activity"
9 from
10 (
11 select
12 to_char(ts_ltz, 'YYYY/MM/DD') as "date",
13 ts_ltz
14 from
15 ts_test
16 )
17 group by
18 "date"
19 ) logs
20 right outer join
21 (
22 select
23 to_char(trunc(sysdate) - (level - 1),
24 'YYYY/MM/DD') as "date"
25 from
26 dual
27 where
28 to_char(trunc(sysdate) - (level - 1),
29 'YYYY/MM/DD') <= trunc(sysdate)
30 connect by
31 level <= 27
32 ) cal
33 on logs."date" = cal."date"
34 order by
35* cal."date"
SCOTT> /

date activity
---------- ----------
2008/03/02 2
2008/03/03 2
2008/03/04 2
2008/03/05 2
2008/03/06 2
2008/03/07 2
2008/03/08 2
2008/03/09 2
2008/03/10 2
2008/03/11 2
2008/03/12 2
2008/03/13 2
2008/03/14 2
2008/03/15 2
2008/03/16 2
2008/03/17 2
2008/03/18 2
2008/03/19 2
2008/03/20 2
2008/03/21 2
2008/03/22 2
2008/03/23 2
2008/03/24 0
2008/03/25 2
2008/03/26 2
2008/03/27 3
2008/03/28 0

27行が選択されました。

SCOTT>


では、クライアントのタイムゾーンをJSTからUTCへ変更してみましょう。(表示しているデータは前述の例と同じts_test表の内容ですがUTCに自動調整されて表示されています。)

SCOTT> alter session set time_zone='UTC';

セッションが変更されました。

SCOTT> select * from ts_test order by ts_ltz;

TS_LTZ
-------------------------------------------------------
08-02-28 15:00:00.000000
08-02-29 14:59:59.999999
08-02-29 15:00:00.000000
08-03-01 14:59:59.999999
08-03-01 15:00:00.000000
08-03-02 14:59:59.999999
08-03-02 15:00:00.000000
08-03-03 14:59:59.999999
08-03-03 15:00:00.000000
08-03-04 14:59:59.999999
08-03-04 15:00:00.000000
08-03-05 14:59:59.999999
08-03-05 15:00:00.000000
08-03-06 14:59:59.999999
08-03-06 15:00:00.000000
08-03-07 14:59:59.999999
08-03-07 15:00:00.000000
08-03-08 14:59:59.999999
08-03-08 15:00:00.000000
08-03-09 14:59:59.999999
08-03-09 15:00:00.000000
08-03-10 14:59:59.999999
08-03-10 15:00:00.000000
08-03-11 14:59:59.999999
08-03-11 15:00:00.000000
08-03-12 14:59:59.999999
08-03-12 15:00:00.000000
08-03-13 14:59:59.999999
08-03-13 15:00:00.000000
08-03-14 14:59:59.999999
08-03-14 15:00:00.000000
08-03-15 14:59:59.999999
08-03-15 15:00:00.000000
08-03-16 14:59:59.999999
08-03-16 15:00:00.000000
08-03-17 14:59:59.999999
08-03-17 15:00:00.000000
08-03-18 14:59:59.999999
08-03-18 15:00:00.000000
08-03-19 14:59:59.999999
08-03-19 15:00:00.000000
08-03-20 14:59:59.999999
08-03-20 15:00:00.000000
08-03-21 14:59:59.999999
08-03-21 15:00:00.000000
08-03-22 14:59:59.999999
08-03-22 15:00:00.000000
08-03-23 14:59:59.999999
08-03-24 15:00:00.000000
08-03-25 14:59:59.999999
08-03-25 15:00:00.000000
08-03-26 14:59:59.999999
08-03-26 23:59:59.999999
08-03-27 00:00:00.000000
08-03-27 01:12:11.928490

55行が選択されました。

SCOTT>
SCOTT> l
1 select
2 cal."date",
3 nvl(logs."activity",0) as "activity"
4 from
5 (
6 select
7 "date",
8 count(ts_ltz) as "activity"
9 from
10 (
11 select
12 to_char(ts_ltz, 'YYYY/MM/DD') as "date",
13 ts_ltz
14 from
15 ts_test
16 )
17 group by
18 "date"
19 ) logs
20 right outer join
21 (
22 select
23 to_char(trunc(sysdate) - (level - 1),
24 'YYYY/MM/DD') as "date"
25 from
26 dual
27 where
28 to_char(trunc(sysdate) - (level - 1),
29 'YYYY/MM/DD') <= trunc(sysdate)
30 connect by
31 level <= 27
32 ) cal
33 on logs."date" = cal."date"
34 order by
35* cal."date"
SCOTT> /

date activity
---------- ----------
2008/03/02 2
2008/03/03 2
2008/03/04 2
2008/03/05 2
2008/03/06 2
2008/03/07 2
2008/03/08 2
2008/03/09 2
2008/03/10 2
2008/03/11 2
2008/03/12 2
2008/03/13 2
2008/03/14 2
2008/03/15 2
2008/03/16 2
2008/03/17 2
2008/03/18 2
2008/03/19 2
2008/03/20 2
2008/03/21 2
2008/03/22 2
2008/03/23 1
2008/03/24 1
2008/03/25 2
2008/03/26 2
2008/03/27 2
2008/03/28 0

27行が選択されました。

SCOTT>

はい、データベース側でクライアントのタイムゾーンに日時を自動調整してくれるお陰でタイムゾーンが変っても同一SQL文で処理できます。(楽でしょ。)

次回は、同じことを集計関数cubeを使って実現するSQL文の例をお見せします。(Oracle de Fizzbuzz #2を見れば想像できてしまうとは思いますが。。)


ところで、MySQLやPostgreSQLなど他のデータベースではどうするんだろう。。余裕があったら調べてみるか。。。。。

2008/3/29追記
当日から必要な日数分の過去日付を求める階層問合せ部分はもっと簡単にできることに今気付いた。帰宅したら改善したクエリも追加する予定!

ということで以下のように、階層問合せのwhere句の部分は無くてもOKということだったのです。はい。

SCOTT> l
1 select
2 cal."date",
3 nvl(logs."activity",0) as "activity"
4 from
5 (
6 select
7 "date",
8 count(ts_ltz) as "activity"
9 from
10 (
11 select
12 to_char(ts_ltz, 'YYYY/MM/DD') as "date",
13 ts_ltz
14 from
15 ts_test
16 )
17 group by
18 "date"
19 ) logs
20 right outer join
21 (
22 select
23 to_char(
24 trunc(sysdate) - (level - 1),
25 'YYYY/MM/DD'
26 ) as "date"
27 from
28 dual
29 connect by
30 level <= 27
31 ) cal
32 on logs."date" = cal."date"
33 order by
34* cal."date"
SCOTT> /

date activity
---------- ----------
2008/03/03 2
2008/03/04 2
2008/03/05 2
2008/03/06 2
2008/03/07 2
2008/03/08 2
2008/03/09 2
2008/03/10 2
2008/03/11 2
2008/03/12 2
2008/03/13 2
2008/03/14 2
2008/03/15 2
2008/03/16 2
2008/03/17 2
2008/03/18 2
2008/03/19 2
2008/03/20 2
2008/03/21 2
2008/03/22 2
2008/03/23 2
2008/03/24 0
2008/03/25 2
2008/03/26 2
2008/03/27 3
2008/03/28 0
2008/03/29 0

27行が選択されました。

SCOTT>

| | | コメント (0) | トラックバック (0)

2008年3月26日 (水)

PL/SQL で Python Challenge Level 17

さて、ココログのデータベースのデフラグ?作業でログインできなかったので今書いてますが。
Level 17、少々ハマったが解き方は見えた(ような気がする)ので次回はその経過でも。

Level 17は、Web Applicationを作った経験のあるかたなら案外すんなり解けるかもしれない。
問題の画像にそのすべてのヒントが!


Enjoy! Python Challenge!
(Python じゃなくても楽しめるのだ!)

| | | コメント (0) | トラックバック (0)

2008年3月24日 (月)

PL/SQL で Python Challenge Level 16完

前回の続きです

さて、Level 16のページには、"let me get this straight" というタイトルが付けられている。これ自体が大きなヒント。なのでこれ以上は何も言うまい。

問題の解くjavaアプリケーションの内容は、以前、Level 11の処理の流れを書いていたが、その3、4以外の部分は同じ。
但し、Level7で利用した Level7.getBfile()とLevel9で作成したLevel9.writeImageFile()というファンクションとプロシージャを以下のPL/SQLパッケージに纏めた。

CREATE OR REPLACE PACKAGE PYTHONCHALLENGE_UTL AS

FUNCTION getBfile
(
i_dir_name IN VARCHAR2,
i_file_name IN vARCHAR2
) RETURN BFILE;

PROCEDURE writeImageFile(
directoryName IN VARCHAR2,
fileName IN VARCHAR2,
srcImage IN OUT NOCOPY BLOB
);

END PYTHONCHALLENGE_UTL;

CREATE OR REPLACE PACKAGE BODY PYTHONCHALLENGE_UTL AS

FUNCTION getBfile
(
i_dir_name IN VARCHAR2,
i_file_name IN VARCHAR2
) RETURN bfile AS
v_file BFILE;
BEGIN
v_file := BFILENAME(UPPER(i_dir_name),i_file_name);
RETURN v_file;
END getBfile;

PROCEDURE writeImageFile(
directoryName IN VARCHAR2,
fileName IN VARCHAR2,
srcImage IN OUT NOCOPY BLOB
) IS
file utl_file.file_type;
BEGIN
file := UTL_FILE.FOPEN(UPPER(directoryName), fileName, 'w', 32767);
DBMS_LOB.OPEN(srcImage, DBMS_LOB.LOB_READONLY);

DECLARE
v_raw RAW(32767);
amount INTEGER;
offset INTEGER;
BEGIN
offset := 1;
LOOP
amount := 32767;
DBMS_LOB.READ(srcImage, amount, offset, v_raw);
UTL_FILE.PUT_RAW(file, v_raw, true);
offset := offset + amount;
END LOOP;
EXCEPTION
WHEN no_data_found THEN
NULL;
WHEN OTHERS THEN
UTL_FILE.FCLOSE(file);
DBMS_LOB.CLOSE(srcImage);
RAISE_APPLICATION_ERROR(-20001, sqlerrm());
END;

UTL_FILE.FCLOSE(file);
DBMS_LOB.CLOSE(srcImage);
END writeImageFile;

END PYTHONCHALLENGE_UTL;
/

上記のパッケージをJava Stored Procedureから利用するわけです。javaのソースコードは載せませんよ。ネタバレになっちゃいますから。

次に、デプロイしたjava classは以下のようにしてJava Stored Procedureとして定義します。

CREATE OR REPLACE PACKAGE LEVEL16 AS
FUNCTION getResult RETURN NUMBER AS
LANGUAGE JAVA NAME 'jp.macdeoracle.Level16.getResult() return java.lang.boolean';
END LEVEL16;

では、SQL*Plusから実行してみましょう!

Last login: Sun Mar 23 20:29:41 on ttyp2
Welcome to Darwin!
G5Server:˜ discus$ ssh oracle@corydoras
oracle@corydoras's password:
Last login: Sun Mar 23 20:31:49 2008 from 192.168.1.19
[oracle@corydoras ˜]$ cd python_challenge
[oracle@corydoras python_challenge]$ ll
合計 264
-rw-r--r-- 1 oracle oinstall 254006 3月 23 16:26 level16.gif

[oracle@corydoras python_challenge]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 日 3月 23 20:58:34 2008

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

> conn scott/tiger
接続されました。
SCOTT> l
1 select
2 case
3 when level16.getResult() = 1 then '成功!'
4 else '失敗!'
5 end as "Level16"
6* from dual
SCOTT> /

Level16
---------
成功!

SCOTT> !ls -l
合計 504
-rw-r--r-- 1 oracle oinstall 254006 3月 23 16:26 level16.gif
-rw-r--r-- 1 oracle oinstall 239515 3月 23 21:02 level16_result.png

SCOTT>

これだけでもかなりのヒントになっているような気もしますが。。。
MacOSXのChicken of the VNC(MacOSX向けのVNC Client)経由でLinux(CentOS5)にある結果を確認!


Level16_res1

Level16_res2


ということで、Python Challenge Level 16完。 Level 17は気が向いたら載せると思います。 
Enjoy Python Challenge!

| | | コメント (0) | トラックバック (0)

2008年3月23日 (日)

PL/SQL で Python Challenge Level 16 - 2年5ヶ月ぶり

そう、あれは、このブログをはじめたころ、Oracle10g R1 for MacOSX ServerとPL/SQL(画像処理関係はjava stored procedure)を利用し、Python Challengeに PL/SQLでチャレンジしていたっけ〜〜。遠い目。

アクセスログを見ていたら最近、またPython Challengeのキーワード検索が多くヒットしているのにびっくり!。
前述のエントリを書いていたのが約2年半前になるわけですから! ということで、久々にちょっとだけ再開してみようかと。。Level 16を見てみる。


Level 16の問題の画像を見ると、いかにもわざとらしい柄というか模様が目につく!。

で、Level 16のページタイトルもいつものようにヒントになっている。

画像にある模様を眺めつつ、ページタイトルの英文(簡単な英文です)を読み試しにJavaだけで作ってみると、考え方はいいと思うのだが全然答えにはなっていない。。。

こうか? ん、、、、それとも、こうか? でも違う。 あ、横にしてたよ。。。あはは。。(^^;;
と独り言を言いつつ何とか答えを見つけました。。は〜〜っ。暫くぶりだと疲れるわ。

次回は答えは書きませんが、Level 16の結果をぼかしたスナップショットを載せる予定。

ちなみに、今回の環境は以下。
Database Server : Oracle11g R1 EE for Linux x86

開発用クライアント:
JDeveloper10g 10.1.3 for MacOSX
Oracle SQL Developer 1.1.3 for MacOSX
(Java Stored Procedure、PL/SQL package、Java関連で利用した)

準備が整ったらMacOSXからsshでLinuxのOracle11gへ接続して実行!
結果確認は、MacOSXのVNCからLinuxへ接続して確認するという面倒なことまでしてMacを絡めている。
(Mac de Oracle ですから! 笑)

尚、以前のように、なるべくPL/SQLやSQLレベルで問題を解いて行くがPL/SQLやSQLでは不可能な処理はJava stored procedureで行う。Level 16もLevel14と同じような処理になっている。

| | | コメント (0) | トラックバック (0)

2008年3月15日 (土)

Replace the HD of the 3rd generation iPod by oneself!

先日drmarさん宅へお邪魔した際、iPod落としたらHD認識しなくなった!と言っていてどうも自分で交換しそうな勢いだったんですが、やっぱり自分で交換しちゃったのね〜〜〜。
第3世代のiPodのHD交換自分でできるんだねぇ。
(尚、drmarさんのブログにも書いてある通りご自身の責任で行ってくださいね。)

しかし私のiPodはまだ、第一世代がバリバリ元気だ!(drmarさんのブログによれば、第一世代や第二世代のiPodではそう簡単にはいかないようだし)うちの奥さんのは第3世代かもしれないから壊れた時はやってみようかと。

iPhone待ちの私としては、とりあえず備忘録ということで。 :)

| | | コメント (0) | トラックバック (0)

2008年3月14日 (金)

WIF2008 - Webdesign International Festival - Finalまであと1ヶ月余り

3月も半ば、つい先日も4月中旬の陽気だったりと花見(源氏山ー鎌倉)は何時頃か?と調べていたら、フランスはリモージュで行われるWIF2008 - Webdesign International Festival のWebJam決勝まであと一ヶ月余りであることを思い出した!

決勝のお題は? ということも気になるのですが、24時間缶詰でキツい戦いを制するのはどの国のどのチームなんでしょうね。

日本から参加する2チームの御健闘をお祈りいたします!

2

| | | コメント (0) | トラックバック (0)

2008年3月10日 (月)

Mac de Ruby on Rails - #9 - ClubDB2番外編

Mac で Oracleな私ですが、第37回 ClubDB2番外編!Ruby on Rails 入門へ行ってきました。

いや〜〜、株式会社万葉の大場さんのセミナー面白かったですね。Mac使ってたし(笑)。
予定があったのでセミナー後の食事会?には参加できませんでしたが、RoRなどDB2から脱線?したネタがあればまた参加したいと思います。XMLDBネタが近々あるようだが、それはそれで聞いてみたい気もする。。


ちなみに、DB2の知識は、DB2 UDB 5.2で止まってる。。はず、と言いつつDBマガジンの記事は読んでますよ。


今回仕入れたネタも使って遊んだ結果などはいずれ。。。

2008/3/15追記
そう言えば、このセミナーで頂いたDB2 9:pureXML overview and fast startの紹介を忘れていたので追記しておきます。 (^^;;;
IBMさんのサイトではPDF版やHTML版が公開されている。

Db2_9_purexml_overview

| | | コメント (0) | トラックバック (0)

Mac de Ruby on Rails - #8 - Oracleと遊ぶ #7

以前の記事で以下のように書いていたことを覚えていますか?

注)
赤太字で示したシンボリックリンクは今回事前に作成したもので、それらのシンボリックリンクは作成しなくても通常利用には問題ない。以前の記事参照のこと。
尚、今回は事前に参照していた資料にシンボリックリンクの作成に関する記述があったため前述のシンボリックリンクを作成した。
(ほんとうに必要なのか? という点については未検証であることを書き加えておく。余計なものだとしても悪さはしないでしょう。きっと。)


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3
Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4
Mac de Ruby on Rails - #6 - Oracleと遊ぶ #5
Mac de Ruby on Rails - #7 - Oracleと遊ぶ #6

先日、興味本位で、もし、前述したシンボリックリンクを作成しなかったらどうなるかを試してみた。

Macintosh:ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/OracleInstantClient/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
---------------------------------------------------
error messages:
Could not compile with Oracle instant client.
/Users/Shared/OracleInstantClient/libclntsh.dylib could not be found.
You may need to make a symbolic link.
cd /Users/Shared/OracleInstantClient
ln -s libclntsh.dylib.10.1 libclntsh.dylib

---------------------------------------------------
See:
* http://ruby-oci8.rubyforge.org/ja/HowToInstall.html
* http://ruby-oci8.rubyforge.org/ja/ReportInstallProblem.html

*** /Users/discus/ruby-oci8-1.0.0/ext/oci8/extconf.rb failed ***

ご覧の通りエラーになりますし、シンボリックリンクが無いのが原因かもしれないと示唆される。分かり易くていいな〜。
当然、指摘された通りにシンボリックリンクを作成してあげれば問題は解消される。

| | | コメント (0) | トラックバック (0)

2008年3月 7日 (金)

Oracle de XMLDB #26 - XMLTYPEの更新

OTN-Jで、PL/SQLでXMLTYPEのあるの要素の値を変更したり、ある要素の値を参照したいというスレッドがあったのでレスしておいた。

そういえば、XQueryやXPathを使ったOracle XMLDBネタもやっているが更新系のはやってないな(というかまだ、XMLの更新、追加、削除に関する標準が定まっていないわけだから仕方ない。)

ということで、前述したOTN-Jのネタをもう少しフラッシュアップして?!(for updateなどが抜けていたので。。)残しておく事にした。

まず、hogehoge表に以下のようなXMLを登録する。

SCOTT> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SCOTT>
SCOTT> desc hogehoge
名前 NULL? 型
----------------------------------------- -------- ----------------------------
SEQNO NOT NULL NUMBER
XMLINFO XMLTYPE

SCOTT>
SCOTT> insert into hogehoge values(1,xmltype('<?xml version="1.0"?><addressbook>
<person id="1"><name>岡田</name><age>30</age>
<address zipcode="123456">東京都ホゲ市ホゲ町1−1</address></person><person id="2">
<name>安倍</name><age>50</age>
<address zipcode="1050011">東京都ホゲ区ホゲ田町1−1−1</address>
</person></addressbook>'));

1行が作成されました。

SCOTT> commit;

コミットが完了しました。

SCOTT>
SCOTT>
SCOTT> set timi on
SCOTT> set long 4000
SCOTT> col xmlinfo for a80
SCOTT> set linesize 132
SCOTT> set pagesize 1000
SCOTT> select * from hogehoge where seqno=1;

SEQNO XMLINFO
---------- ------------------------------------------------------------
1 <?xml version="1.0"?><addressbook><person id="1"><name>岡田<
/name><age>30</age><address zipcode="123456">東京都ホゲ市ホ
ゲ町1−1</address></person><person id="2"><name>安倍</name>
<age>50</age><address zipcode="1050011">東京都ホゲ区ホゲ田
町1−1−1</address></person></addressbook>


経過: 00:00:00.01
SCOTT>

上記のようなXML文書を対象に特定のid属性値を持つperson要素に含まれるname要素の値を変更するストアドファンクション。
(もうすこし平たく言うと、指定した名前を変更するストアドファンクション。略し過ぎか・・・)

XML文書の変更方法は他にもあるが、PL/SQLパッケージで行うにはDOM APIであるDBMS_XMLDOMパッケージを利用して行う。
尚、XMLTYPEをDBMS_XMLDOMパッケージで更新する際のポイントは、XMLTYPEインスタンスからDOMインスタンスを生成し、DOMインスタンに対して必要な更新操作行った上で、XMLTYPEインスタンスを表へ書き戻すという所。(該当部分は赤太字にしてあります。)

SCOTT> l
1 create or replace
2 function changePersonName
3 (
4 iKey in number,
5 iPersonId in varchar2,
6 iNewName in varchar2
7 ) return xmltype
8 is
9 xml xmlType;
10 personNodeList dbms_xmldom.DomNodeList;
11 personNode dbms_xmldom.DomNode;
12 nameNodeList dbms_xmldom.DomNodeList;
13 personAttrNodeMap dbms_xmldom.DomNamedNodeMap;
14 idAttrNode dbms_xmldom.DomNode;
15 wKey number;
16 wPersonId varchar2(38);
17 wNewName varchar2(60);
18 begin
19 wKey := iKey;
20 wPersonId := iPersonId;
21 wNewName := iNewName;
22
23 select xmlinfo into xml from hogehoge where seqno = wKey for update;
24
25 personNodeList := dbms_xmldom.getElementsByTagName(
26 dbms_xmldom.newDomDocument(xml)
27 ,'person'
28 );
29
30 if not dbms_xmldom.isNull(personNodeList) then
31 for i in 0..dbms_xmldom.getLength(personNodeList) loop
32 personNode := dbms_xmldom.item(personNodeList, i);
33 personAttrNodeMap := dbms_xmldom.getAttributes(personNode);
34 idAttrNode := dbms_xmldom.getNamedItem(personAttrNodeMap, 'id');
35 if dbms_xmldom.getNodeValue(idAttrNode) = wPersonId then
36 nameNodeList := dbms_xmldom.getChildrenByTagName(
37 dbms_xmldom.makeElement(personNode)
38 ,'name'
39 );
40 dbms_xmldom.setNodeValue(
41 dbms_xmldom.getFirstChild(dbms_xmldom.item(nameNodeList, 0))
42 ,wNewName
43 );
44 update hogehoge set xmlinfo = xml where seqno = wKey;
45 exit;
46 end if;
47 end loop;
48 end if;
49 return xml;
50* end;
SCOTT> /

ファンクションが作成されました。

経過: 00:00:00.04
SCOTT>
SCOTT>
SCOTT>
SCOTT> l
1 declare
2 xml xmlType;
3 begin
4 xml := changePersonName(1, '1', '福田ほげ蔵');
6 commit;
7* end;
SCOTT> /

PL/SQLプロシージャが正常に完了しました。

経過: 00:00:00.03
SCOTT>
SCOTT>
SCOTT> select * from hogehoge where seqno=1;
SEQNO XMLINFO
---------- --------------------------------------------------------------------------------
1 <?xml version="1.0"?>
<addressbook>
<person id="1">
<name>福田ほげ蔵</name>
<age>30</age>
<address zipcode="123456">東京都ホゲ市ホゲ町1−1</address>
</person>
<person id="2">
<name>安倍</name>
<age>50</age>
<address zipcode="1050011">東京都ホゲ区ホゲ田町1−1−1</address>
</person>
</addressbook>


経過: 00:00:00.00
SCOTT>

もうお気づきだと思うが、Oracle11gでも発生しているこちらからは操作できないところでwhitespaceが追加されたり、されなかったりする。まあこれ自体は大抵の場合問題にはならないのだが。。

あともうひとつの話題は特定の要素の値を取り出したいということ。これだけならDBMS_XMLDOMパッケージを使わなくても、SQL/XMLを使えば簡単ですよね。
XMLQuery()関数を使って、id属性値が "1"であるperson要素以下にあるage要素の値を参照する例です。

SCOTT> set linesize 80
SCOTT> l
1 select
2 xmlquery(
3 'let $n := $xmldoc//person[@id="1"]/age/text()
4 return $n'
5 passing by value xmlinfo as "xmldoc"
6 returning content
7 ) as "age"
8* from hogehoge where seqno=1
SCOTT> /

age
--------------------------------------------------------------------------------
30

経過: 00:00:00.04
SCOTT>

ちなみに、Oracleのマニュアルは以下の辺りを参照するとよいと思いますが、DOM、XQueryやXPathに関してはXML関連のサイトもググって調べたほうがよいと思います。XMLの操作の基本を理解していれば、あとはどんなツールを使ってそれを行うかということだけですから。

マニュアル
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス 10g R2 - DBMS_XMLDOM
Oracle Database SQLリファレンス 10g R2 - XMLQUERY

Enjoy!

| | | コメント (0) | トラックバック (0)

2008年3月 3日 (月)

Mercedes-Benz Mixed Tape TV

Mercedes-Benz Mixted Tapeのサイトがバージョンアップして、かな〜〜〜りイケてるサイトに生まれ変わった!
iTunesのカバーフローを意識したインタ−フェースや、メルセデスに関する情報も上手くリンクされている。



ダウンロードした曲は、iTunesやiPodへ入れちゃいます。ジャンルは幅広いのですが、いい楽曲が非常に多いので私のお気に入りです。

| | | コメント (0) | トラックバック (0)

2008年2月29日 (金)

封筒を使う!

時代は変っても、封筒を使うというアイデアは不滅です!(笑)
Even if times change, the idea to use an envelope is immortal! :)


現在:
Present year:


先日、Apple Store ShibuyaへAirを見に、息子と行ってきた(といっても息子はまだ3ヶ月)のですが、確かに薄い軽い...でも用途としては持ち歩きのサブノートという位置づけですね。うちでは。


1995年かな?:
In 1995?:


これ懐かしいですよね、DECのHiNote Ultraですねぇ。


そして。。。
And....


↑↑↑↑↑↑
単純にワロタ・・・

| | | コメント (0) | トラックバック (0)

2008年2月28日 (木)

Mac de Ruby on Rails - #7 - Oracleと遊ぶ #6

さて、前回まででRuby on Rails 2.0.2からOracle11g R1 11.1.0.6.0をアクセスするアプリケーションはできたのだが、まだ、幾つか手お加えたい箇所もある。例えばViewのタイトルやドロップダウンメニューが英語だとか、日付の表示が長過ぎるとか。

4


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3
Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4
Mac de Ruby on Rails - #6 - Oracleと遊ぶ #5

そこで、indexページの日付フォーマットを変更してみることにする。(Viewというか、scaffoldでの日本語対応などまだまだ知らないことも多い。それらは次の機会のお楽しみということで・・・)

index.html.erbを以下のように変更して・・・・

pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$pb17:/Volumes/Repository/employee_list discus$ cd app/views/emps
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ cp index.html.erb index.html.erb.org
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ vi index.html.erb
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ diff index.html.erb.org index.html.erg
17c17,23
< <td><%=h emp.hiredate %></td>
---
> <td>
> <% if emp.hiredate %>
> <%=h emp.hiredate.to_formatted_s(:db) %>
> <% else %>
> <%=h emp.hiredate %>
> <% end %>
> </td>
pb17:/Volumes/Repository/employee_list/app/views/emps discus$
pb17:/Volumes/Repository/employee_list/app/views/emps discus$ cd $OLDPWD
pb17:/Volumes/Repository/employee_list discus$ ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-02-24 16:19:46] INFO WEBrick 1.3.1
[2008-02-24 16:19:46] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-02-24 16:19:46] INFO WEBrick::HTTPServer#start: pid=702 port=3000
127.0.0.1 - - [24/Feb/2008:16:20:05 JST] "GET /emps HTTP/1.1" 500 15280
- -> /emps
127.0.0.1 - - [24/Feb/2008:16:20:26 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/emps -> /favicon.ico
^C[2008-02-24 16:20:59] INFO going to shutdown ...
[2008-02-24 16:20:59] INFO WEBrick::HTTPServer#start done.
pb17:/Volumes/Repository/employee_list discus$ cd app/views/emps

6

なんとか、出来ましたね。RubyもRuby on Railsも始めてですが、なんとかここまでできました〜 :)

”Ruby on Rails2.0.2とOracle11gでそこそこ遊べる環境を作る” ひとまず、完!

| | | コメント (0) | トラックバック (0)

2008年2月27日 (水)

Mac de Ruby on Rails - #6 - Oracleと遊ぶ #5

Ruby on RailsでOracleとそこそこ遊べる環境構築もそろそろ終盤。
今回は、Ruby on RailsでOracle11g R1のデータベースをアクセスする簡単なアプリケーションを作ってみる。
尚、アプリケーションで利用する表は事前に作成しておいた。(Oracleにアクセスできることが確認できれば十分なので)


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3
Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4

まず事前に、emp表を元にemps表を作り、数件データを追加しておきます。

pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 日 2月 24 15:55:07 2008

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

SQL> conn scott/tiger@lampeye
接続されました。
SQL> create table emps as select * from emp;

表が作成されました。

SQL> alter table emps rename column empno to id;

表が変更されました。

SQL> alter table emps add constraint emp_pk primary key (id);

表が変更されました。

SQL> create sequence emps_seq;

順序が作成されました。

SQL> insert into emps(id,ename) values(8888,'ヌルポ');

1行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> set linesize 132
SQL> set pagesize 1000
SQL> select * from emps order by id;

ID ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
8888 ヌルポ
9999 ほげ ENGINEER 7566 08-01-01 2500 20

14行が選択されました。

SQL> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
pb17:˜ discus$
pb17:˜ discus$

次にOracleデータベースを利用するプロジェクトを作成します。
-d オプションを付けるとOracle向け構成ファイル:databaase.ymlを生成してくれます。

pb17:˜ discus$ cd /Volumes/Repository
pb17:˜ discus$
pb17:/Volumes/Repository discus$ rails -h
Usage: /opt/local/bin/rails /path/to/your/app [options]

Options:
-r, --ruby=path Path to the Ruby binary of your choice (otherwise scripts use env, dispatchers current path).
Default: /opt/local/bin/ruby
-d, --database=name Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite2/sqlite3).
Default: mysql
-f, --freeze Freeze Rails in vendor/rails from the gems generating the skeleton
Default: false

・・・・中略・・・・

Example:
rails ˜/Code/Ruby/weblog

This generates a skeletal Rails installation in ˜/Code/Ruby/weblog.
See the README in the newly created application to get going.

今回は、employee_listというプロジェクトを作ります。(コードとディレクトリーが自動的い生成されていく・・・)
database.ymlを環境の合わせ変更!

pb17:/Volumes/Repository discus$ rails -d oracle employee_list
create
create app/controllers
create app/helpers
create app/models

・・・・中略・・・・

create log/server.log
create log/production.log
create log/development.log
create log/test.log
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository discus$ cd employee_list/config
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository discus$
pb17:/Volumes/Repository/employee_list/config discus$ vi database.yml
pb17:/Volumes/Repository/employee_list/config discus$ cat database.yml
# Oracle/OCI 8i, 9, 10g
#
# Requires Ruby/OCI8:
# http://rubyforge.org/projects/ruby-oci8/
#
# Specify your database using any valid connection syntax, such as a
# tnsnames.ora service name, or a sql connect url string of the form:
#
# //host:[port][/service name]
#
# By default prefetch_rows (OCI_ATTR_PREFETCH_ROWS) is set to 100. And
# until true bind variables are supported, cursor_sharing is set by default
# to 'similar'. Both can be changed in the configation below; the defaults
# are equivalent to specifying:
#
# prefetch_rows: 100
# cursor_sharing: similar
#

development:
adapter: oracle
database: lampeye
username: scott
password: tiger

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
adapter: oracle
database: lampeye
username: test
password: tiger

production:
adapter: oracle
database: lampeye
username: prod
password: tiger
pb17:/Volumes/Repository/employee_list/config discus$
pb17:/Volumes/Repository/employee_list/config discus$
pb17:/Volumes/Repository/employee_list/config discus$

ここまでできたら、emps表を操作、表示するためのscaffold(足場)を生成する。(あれまあ、簡単にできるんだなぁ)

pb17:/Volumes/Repository/employee_list/config discus$ cd ..
pb17:/Volumes/Repository/employee_list discus$ ruby script/generate scaffold Emp
exists app/models/
exists app/controllers/
exists app/helpers/

・・・・中略・・・・

create app/controllers/emps_controller.rb
create test/functional/emps_controller_test.rb
create app/helpers/emps_helper.rb
route map.resources :emps
pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$

ではテスト用サーバを起動して確認!

pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$ ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-02-24 16:10:11] INFO WEBrick 1.3.1
[2008-02-24 16:10:11] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-02-24 16:10:11] INFO WEBrick::HTTPServer#start: pid=683 port=3000
127.0.0.1 - - [24/Feb/2008:16:10:31 JST] "GET / HTTP/1.1" 200 7557
- -> /
127.0.0.1 - - [24/Feb/2008:16:10:32 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/ -> /favicon.ico

・・・・中略・・・・

127.0.0.1 - - [24/Feb/2008:16:11:35 JST] "GET /stylesheets/scaffold.css?1203836970 HTTP/1.1" 200 1152
http://localhost:3000/emps -> /stylesheets/scaffold.css?1203836970
^C[2008-02-24 16:12:35] INFO going to shutdown ...
[2008-02-24 16:12:35] INFO WEBrick::HTTPServer#start done.

あれ〜〜、表の中身が表示されていない? なんで〜〜〜〜!

3

調べてみると、Ruby on Rails 2.xでは、scaffoldの使い方に違いがあるからということが理由とのこと。
ということでrailsのscaffold利用方法をを参照
/opt/local/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/rails_generator/generators/components/scaffold/USAGE


では早速、作り直してみる。

pb17:/Volumes/Repository/employee_list discus$ 
pb17:/Volumes/Repository/employee_list discus$ ruby script/generate scaffold Emp ename:string job:string mgr:integer hiredate:date sal:integer
exists app/models/
exists app/controllers/

・・・・中略・・・・

exists test/functional/
exists test/unit/
overwrite app/views/emps/index.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/index.html.erb
overwrite app/views/emps/show.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/show.html.erb
overwrite app/views/emps/new.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/new.html.erb
overwrite app/views/emps/edit.html.erb? (enter "h" for help) [Ynaqdh] Y
force app/views/emps/edit.html.erb
identical app/views/layouts/emps.html.erb

・・・・中略・・・・

skip test/fixtures/emps.yml
exists db/migrate
Another migration is already named create_emps: db/migrate/001_create_emps.rb
pb17:/Volumes/Repository/employee_list discus$ ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-02-24 16:15:40] INFO WEBrick 1.3.1
[2008-02-24 16:15:40] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-02-24 16:15:40] INFO WEBrick::HTTPServer#start: pid=696 port=3000
127.0.0.1 - - [24/Feb/2008:16:15:56 JST] "GET /emps HTTP/1.1" 200 12543
- -> /emps
127.0.0.1 - - [24/Feb/2008:16:16:17 JST] "GET /stylesheets/scaffold.css?1203836970 HTTP/1.1" 200 1152
http://localhost:3000/emps -> /stylesheets/scaffold.css?1203836970
127.0.0.1 - - [24/Feb/2008:16:16:17 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/emps -> /favicon.ico
^C[2008-02-24 16:17:22] INFO going to shutdown ...
[2008-02-24 16:17:22] INFO WEBrick::HTTPServer#start done.
pb17:/Volumes/Repository/employee_list discus$
pb17:/Volumes/Repository/employee_list discus$

お〜〜〜〜、できた〜! 

4

次回いよいよ、Ruby on RailsとOracleでそこそこ遊べる環境作りの最終回。日付の表示が気に入らないので少々コードを変更してみる。

| | | コメント (0) | トラックバック (0)

2008年2月26日 (火)

Mac de Ruby on Rails - #5 - Oracleと遊ぶ #4

まず、前回の復習。
前回は、rubyからruby-oci8さらにOracle Instant Client 10gを介してOracle11g R1 EE 11.1.0.6.0のデータベースへアクセスできることを確認した。

今回は、rubyからActiveRecordを利用してOracle11g R1のデータベースへアクセスできるか確認する。


バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2
Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3


コードは以下の通り。

pb17:˜ discus$
pb17:˜ discus$ cat test.rb
require 'rubygems'
require 'active_record'

class Emp < ActiveRecord::Base
set_table_name "EMP"
end

ActiveRecord::Base.establish_connection(
:adapter => "oracle",
:database => "lampeye",
:username => "scott",
:password => "tiger"
)

emp = Emp.find(:first,:conditions =>["ENAME = ?", "ほげ"])
puts "#{ emp.empno}, #{ emp.ename}, #{emp.job}, #{emp.hiredate}"

実行してみる!

pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ ruby test.rb
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:231
:in `establish_connection': Please install the oracle adapter: `gem install activerecord-oracle-adapter`
(no such file to load -- active_record/connection_adapters/oracle_adapter) (RuntimeError) from test.rb:8

あ〜〜なるほど、ActiveRecordからruby-oci8を利用するためには、oracle_adapter.rbが必要なんですね! 
ということでoracle_adapter.rbをダウンロードし、/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters以下にコピーする。

pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ cd :/Volumes/Repository/temp
pb17:/Volumes/Repository/temp discus$ curl -O http://svn.rubyonrails.org/rails/adapters/oracle/lib/active_record/connection_adapters/oracle_adapter.rb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27596 100 27596 0 0 25998 0 0:00:01 0:00:01 --:--:-- 43123
pb17:/Volumes/Repository/temp discus$
pb17:/Volumes/Repository/temp discus$
pb17:/Volumes/Repository/temp discus$ sudo cp oracle_adapter.rb /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters
Password:
pb17:/Volumes/Repository/temp discus$

再度実行してみる!

pb17:/Volumes/Repository/temp discus$ cd
pb17:˜ discus$
pb17:˜ discus$
pb17:˜ discus$ ruby test.rb
9999, ほげ, ENGINEER, Tue Jan 01 00:00:00 +0900 2008
pb17:˜ discus$

お〜〜〜、上手くいった!〜〜。

今日はここまで、次回へつづく。

| | | コメント (0) | トラックバック (0)

2008年2月25日 (月)

Mac de Ruby on Rails - #4 - Oracleと遊ぶ #3

Mac de Ruby on Rails、オラクルと遊ぶ その3回目は、ruby-oci8の動作確認の意味も含め、rubyからociを使ってOracle11g R1のscott.emp表をアクセスしてみる。



バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1
Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2


以下の操作は全て、Oracle Instant Client 10g R1 10.1.0.3.0 for MacOSX(PPC)をインストールしたPowerBook G4から行っている。

SQL*Plusを利用してSCOTTユーザのemp表の内容を確認しておく。

pb17:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 日 2月 24 15:47:19 2008

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

> conn scott/tiger@lampeye
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SCOTT> set linesize 132
SCOTT> set pagesize 1000
SCOTT> select * from emp order by empno;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
9999 ほげ ENGINEER 7566 08-01-01 2500 20

13行が選択されました。

SCOTT> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

pb17:˜ discus$

rubyからruby-oci8、さらにOracle Clientを介して、Oracle11g R1のscott.emp表をempno順に問い合わせて動作確認した結果。

pb17:˜ discus$
pb17:˜ discus$ ruby -r oci8 -e "OCI8.new('scott','tiger','lampeye').exec('select * from emp order by empno') do |r| puts r.join(','); end"
7369,SMITH,CLERK,7902,1980/12/17 00:00:00,800.0,,20
7499,ALLEN,SALESMAN,7698,1981/02/20 00:00:00,1600.0,300.0,30
7521,WARD,SALESMAN,7698,1981/02/22 00:00:00,1250.0,500.0,30
7566,JONES,MANAGER,7839,1981/04/02 00:00:00,2975.0,,20
7654,MARTIN,SALESMAN,7698,1981/09/28 00:00:00,1250.0,1400.0,30
7698,BLAKE,MANAGER,7839,1981/05/01 00:00:00,2850.0,,30
7782,CLARK,MANAGER,7839,1981/06/09 00:00:00,2450.0,,10
7839,KING,PRESIDENT,,1981/11/17 00:00:00,5000.0,,10
7844,TURNER,SALESMAN,7698,1981/09/08 00:00:00,1500.0,0.0,30
7900,JAMES,CLERK,7698,1981/12/03 00:00:00,950.0,,30
7902,FORD,ANALYST,7566,1981/12/03 00:00:00,3000.0,,20
7934,MILLER,CLERK,7782,1982/01/23 00:00:00,1300.0,,10
9999,ほげ,ENGINEER,7566,2008/01/01 00:00:00,2500.0,,20
pb17:˜ discus$
pb17:˜ discus$

順調、順調! 

次回へつづく。

| | | コメント (0) | トラックバック (0)

2008年2月24日 (日)

Mac de Ruby on Rails - #3 - Oracleと遊ぶ #2

さて、前回予告した通り、MacOSXのRuby on Rails 2.0.2からOracle11g R1 EE 11.1.0.6.0 for Linux x86Oracle Instant Client 10g R1 for MacOSX(PPC)を利用し、そこそこ遊べる環境を作ってみる。



バックナンバー:
Mac de Ruby on Rails - #1
Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1


2008/2/26追記-文字エンコーディングに関する情報を書き忘れていたので追記
Oracle DB character set : Japanese_Japan.AL32UTF8
Oracle Client NLS_LANG : Japanese_Japan.AL32UTF8
ということで全てUTF-8で統一してあります。


まずは、Ruby on Railsの開発環境にするPowerBook G4の情報から

H/W: Apple PowerBook G4 1Ghz / RAM:1GB
OS : MacOSX 10.4.11 Tiger (XCode 2.4.1インストール済み)
Oracle Instant Client : Oracle Instant Client 10g R1 for MacOSX(PPC)
Ruby : 1.8.6 (2007-09-23 patchlevel 110) [powerpc-darwin8.11.0]
RubyGems : 1.0.1
Ruby on Rails : 2.0.2
ruby-oci8 : 1.0.0
MacOSX 10.4.11 TigerへのRuby on Rails 2.0.2のインストールはこちら。

そして、Ruby on Railsから接続するOracleデータベースサーバは(サーバっていうと大げさ過ぎるノートPCですが・・・・)

H/W: Dynabook SS SX/210LNLW (RAM:768MB)
OS : CentOS 5
DB : Oracle11g R1 EE 11.1.0.6.0 for Linux x86

という構成です。配置はこんな感じ

Ruby on Rails 2.0.2からOracle11g R1 EE 11.1.0.6.0 for Linux x86へ接続するためのOracle Instant Client 10g R1 for MacOSX(PPC)関連の環境変数の設定は以下のようになっている。
(MySQLやGlassFish関連の環境変数も見えるが今回の内容には一切関係ないので気にしないでくださいませ。)

尚、Oracle Instant Client 10g R1 for MacOSX(PPC)をMacOSX 10.4.11 Tigerへインストールする例は以前の記事を参考にしてみてください。

pb17:˜ discus$ cat .bash_profile
export PATH=/usr/local/mysql/bin:$PATH

alias mysql='mysql --set autocommit=0'

# for GlassFish
export GLASSFISH_HOME=˜/glassfish/glassfish
export PATH=/opt/local/bin:$PATH:$GLASSFISH_HOME/bin

. .bashrc
pb17:˜ discus$ cat .bashrc
alias ll='ls -lv'

ORACLE_INSTANT_CLIENT_HOME=/Users/Shared/instantclient10_1
export ORACLE_HOME=$ORACLE_INSTANT_CLIENT_HOME
export NLS_LANG=Japanese_Japan.AL32UTF8
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
export TNS_ADMIN=$ORACLE_HOME


pb17:˜ discus$
pb17:˜ discus$ ls -l $ORACLE_HOME
total 182200
-r--r--r-- 1 discus orauser 21299 Apr 29 2004 README_IC.htm
-r--r--r-- 1 discus orauser 1461081 Jul 5 2004 classes12.jar
-r--r--r-- 1 discus orauser 1353 Oct 9 2003 glogin.sql
lrwxr-xr-x 1 discus orauser 20 Feb 16 12:43 libclntsh.dylib -> libclntsh.dylib.10.1
-rwxr-xr-x 1 discus orauser 14891264 Dec 13 2004 libclntsh.dylib.10.1
-rwxr-xr-x 1 discus orauser 27432 Oct 24 2004 libheteroxa10.dylib
-rw-r--r-- 1 discus orauser 1516340 Nov 16 2004 libnnz10.dylib
lrwxr-xr-x 1 discus orauser 18 Feb 16 12:44 libocci.dylib -> libocci.dylib.10.1
-rw-r--r-- 1 discus orauser 1841448 Oct 24 2004 libocci.dylib.10.1
-rwxr-xr-x 1 discus orauser 66160096 Dec 14 2004 libociei.dylib
-rwxr-xr-x 1 discus orauser 93028 Nov 9 2004 libocijdbc10.dylib
-rwxr-xr-x 1 discus orauser 744612 Oct 24 2004 libsqlplus.dylib
-r--r--r-- 1 discus orauser 54032 Jul 5 2004 ocrs12.jar
-r--r--r-- 1 discus orauser 1397543 Jul 5 2004 ojdbc14.jar
-r--r--r-- 1 discus orauser 5018319 Jul 7 2004 orai18n.jar
drwxr-xr-x 4 discus orauser 136 Dec 14 2004 sdk
-rwxr-xr-x 1 discus orauser 15660 Dec 13 2004 sqlplus
-rw-r--r-- 1 discus orauser 2072 Feb 16 13:19 tnsnames.ora
pb17:˜ discus$

注)
赤太字で示したシンボリックリンクは今回事前に作成したもので、それらのシンボリックリンクは作成しなくても通常利用には問題ない。以前の記事参照のこと
尚、今回は事前に参照していた資料にシンボリックリンクの作成に関する記述があったため前述のシンボリックリンクを作成した。
(ほんとうに必要なのか? という点については未検証であることを書き加えておく。余計なものだとしても悪さはしないでしょう。きっと。)


では、早速、Ruby on Rails 2.0.2からOracleへアクセスするための準備作業に取りかかることにする。
まず、RubyForgeからruby-oci8-1.0.0.tar.gzをダウンロード、解凍する。

pb17:/Volumes/Repository/temp discus$ curl -L -O http://rubyforge.org/frs/download.php/28396/ruby-oci8-1.0.0.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 104k 100 104k 0 0 41090 0 0:00:02 0:00:02 --:--:-- 77167
pb17:/Volumes/Repository/temp discus$ ll
-rw-r--r-- 1 discus admin 593589 Dec 17 14:57 MacPorts-1.6.0-10.4-Tiger.dmg
-rw-r--r-- 1 discus admin 239926399 Aug 14 2007 aug07_adc_refib_update.dmg
-rw-r--r-- 1 discus admin 326 Apr 28 2006 comics.sql
-rw-r--r-- 1 discus admin 107494 Nov 25 20:31 ruby-oci8-1.0.0.tar.gz
-rw-r--r-- 1 discus admin 204841 May 24 2007 rubygems-0.9.4.tgz
pb17:/Volumes/Repository/temp discus$ gzip -dc ruby-oci8-1.0.0.tar.gz | tar xvf -
ruby-oci8-1.0.0/
ruby-oci8-1.0.0/NEWS
ruby-oci8-1.0.0/ChangeLog
ruby-oci8-1.0.0/Makefile

・・・中略・・・

ruby-oci8-1.0.0/test/test_oci8.rb
ruby-oci8-1.0.0/test/test_oradate.rb
ruby-oci8-1.0.0/test/test_oranumber.rb
ruby-oci8-1.0.0/test/test_metadata.rb

解凍したらmakeする。Oracle Instant Clientをちゃんと認識しているのがわかる。

pb17:/Volumes/Repository/temp discus$ cd ruby-oci8-1.0.0
pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$ make
ruby setup.rb config
---> lib
---> lib/DBD
---> lib/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
/opt/local/bin/ruby /Volumes/Repository/temp/ruby-oci8-1.0.0/ext/oci8/extconf.rb
checking for load library path... (DYLD_LIBRARY_PATH)...
found: /Users/Shared/instantclient10_1/libclntsh.dylib.10.1 looks like an instant client.
checking for cc... ok
checking for gcc... yes
checking for LP64... no
checking for ruby header... ok
checking for OCIInitialize() in oci.h... yes
checking for OCIEnvCreate()... yes
checking for OCITerminate()... yes
checking for OCILobOpen()... yes
checking for OCILobClose()... yes
checking for OCILobCreateTemporary()... yes
checking for OCILobGetChunkSize()... yes
checking for OCILobLocatorAssign()... yes
creating ../../lib/oci8.rb from /Volumes/Repository/temp/ruby-oci8-1.0.0/ext/oci8/../../lib/oci8.rb.in
creating extconf.h
creating Makefile
<--- ext/oci8

・・・中略・・・

/usr/bin/gcc-4.0 -I. -I. -I/opt/local/lib/ruby/1.8/powerpc-darwin8.11.0 -I/Volumes/Repository/temp/ruby-oci8-1.0.0/ext/oci8 -DRUBY_EXTCONF_H=\"extconf.h\" -I/opt/local/include -fno-common -O2
-fno-common -pipe -fno-common -I/Users/Shared/instantclient10_1/sdk/include -Wall -c attr.c
cc -dynamic -bundle -undefined suppress -flat_namespace -o oci8lib.bundle oci8.o handle.o const.o env.o error.o svcctx.o server.o session.o stmt.o define.o bind.o describe.o descriptor.o
param.o lob.o oradate.o oranumber.o ocinumber.o attr.o -L"." -L"/opt/local/lib" -L. -L/opt/local/lib -lruby -L/Users/Shared/instantclient10_1 -lclntsh -lpthread -ldl -lobjc
<--- ext/oci8
<--- ext
pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$

makeが無事終了したらinstallする。(sudoで!)

pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$ sudo make install
Password:
ruby setup.rb install
---> lib
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/
install oci8.rb /opt/local/lib/ruby/site_ruby/1.8/
---> lib/DBD
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/DBD
---> lib/DBD/OCI8
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/DBD/OCI8
install OCI8.rb /opt/local/lib/ruby/site_ruby/1.8/DBD/OCI8
<--- lib/DBD/OCI8
<--- lib/DBD
<--- lib
---> ext
---> ext/oci8
mkdir -p /opt/local/lib/ruby/site_ruby/1.8/powerpc-darwin8.11.0/.
install oci8lib.bundle /opt/local/lib/ruby/site_ruby/1.8/powerpc-darwin8.11.0/.
<--- ext/oci8
<--- ext
pb17:/Volumes/Repository/temp/ruby-oci8-1.0.0 discus$

ということでruby-oci8のインストールまで無事に終了した。(Ruby初心者の私でもなんとかできました。。。。 :)

つづく・・・・




参考にしたサイトを以下に載せておきます。
OTN:Ruby on Rails on Oracle: A Simple Tutorial
OTN:Ruby on Rails with Oracle FAQ
(但し、RoRもruby-oci8関連の設定方法も参考にはなりますが古いバージョンを利用した解説なので注意が必要ですね。)

Connecting Ruby on Rails to Oracle on an Intel Mac in Leopard (Mac OSX 10.5)
上記サイトの情報は(2008/2/24時点では比較的あたらしい、しかもIntel Macのネタですね。。

ruby-oci8 - Oracle Instant Client
ruby-oci8インストール手順

Rails supports Oracle 8i, 9i, and 10g.
How to Connect To Oracle
ruby 2.xでoracleを利用する設定関連など

以下、Rails 2 と Oracleを接続するためのdatabase.ymlの設定例の引用

Database_ymd_rails_2_and_oracle

oracle_adapter.rb
oracle_adapter.rbのダウンロード先

| | | コメント (0) | トラックバック (0)

2008年2月22日 (金)

Mac de Ruby on Rails - #2 - Oracleと遊ぶ #1

Mac de Ruby on Rails - #1でも書いたように、Mac で Oracle と Ruby on Rails で戯れることにした。

Oracle Instant Clientネタを幾つか書いたのだが、それらはMac で Oracle と Ruby on Rails で戯れるための準備だったのですよ。(いろいろ検索しても、MacOSXでOracleを使ったRoRのネタがあまり見つからなかったこともあり、そうなれば自分でやるのが一番というわけ)


2008/2/24追記
配置はこんな感じ。(Visual Paradigm for UML community Editonを利用)

Ror_oracle_uml_deployment_diag

ということで、ただ今準備中! 次回へつづく。



バックナンバー:
Mac de Ruby on Rails - #1

| | | コメント (0) | トラックバック (0)

最近、アップデートしていないDashboard de Aquarium v1.1ですが・・・

最近、アップデートしていないDashboard de Aquarium v1.1ですが・・・(アイデアはあるんだが・・)

最近、何故か、アクセス数が上昇傾向にあるんですよね。どこかのWidget紹介系のサイトに載ったのかとおもったら、以前はアクセス数が多くてもココフラッシュの仕様?でランキングに載っていなかったDashboard de Aquarium v1.1のページが、いつのまにかランキングに載っているではないですか〜〜〜〜〜〜!

この影響ですね。ココログさん、ありがとう。

1

2

| | | コメント (0) | トラックバック (0)

2008年2月21日 (木)

Oracle de XMLDB #25 - Relational dataをXMLへ #7のおまけ

1つ忘れていました。

何故、「Relational dataをXMLへ」というネタを取り上げようと思ったのか?

それはOTN-Jのこのスレに回答したことがきっかけだった。OTN-JのスレのネタはMacOSX環境下ではないのだけれど、Oracle XML DBを調べていたこともあり、その次いでに Eclipse for MacOSXではどうなるのか単純に知りたかっただけだった。そしてその準備段階のネタがMacOSXのEclipseを日本語化という記事だった。

ということで、前回はJDeveloperを使って試したことを書いた。今回はおまけとして、

Eclipse 3.3.1.1 for MacOSX(日本語化済み)

NetBeans IDE 6.0.1 for MacOSX

でやってみた。。(ただそれだけなんですけど・・・・)

利用したOracle JDBCドライバなどは前々回の記事を参照してください。

どれを使っても同じ結果にはなるのですが・・・・NetBeans6.0.1は随分といい感じに仕上がっているように感じた。(^^

Eclipse_s

Eclipse


Netbeans_s

Netbeans

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #25 - Relational dataをXMLへ #7のおまけ

1つ忘れていました。

何故、「Relational dataをXMLへ」というネタを取り上げようと思ったのか?

それはOTN-Jのこのスレに回答したことがきっかけだった。OTN-JのスレのネタはMacOSX環境下ではないのだけれど、Oracle XML DBを調べていたこともあり、その次いでに Eclipse for MacOSXではどうなるのか単純に知りたかっただけだった。そしてその準備段階のネタがMacOSXのEclipseを日本語化という記事だった。

ということで、前回はJDeveloperを使って試したことを書いた。今回はおまけとして、

Eclipse 3.3.1.1 for MacOSX(日本語化済み)

NetBeans IDE 6.0.1 for MacOSX

でやってみた。。(ただそれだけなんですけど・・・・)

利用したOracle JDBCドライバなどは前々回の記事を参照してください。

どれを使っても同じ結果にはなるのですが・・・・NetBeans6.0.1は随分といい感じに仕上がっているように感じた。(^^

Eclipse_s

Eclipse


Netbeans_s

Netbeans

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #24 - Relational dataをXMLへ #7

リレーショナルデータをXMLへ変換するシリーズもひとまず最終回ということで、最後は、Oracleデータベース側でXMLTypeインスタンスへ変換して、クライアントではXMLTypeインスタンスを受け取るだけの例を一つ。
環境は前回の記事を見てもらうとして早速試してみる。

Xmldb24_project Xmldb24_project_property


バックナンバー:
Oracle de XMLDB #18 - Relational dataをXMLへ #1

Oracle de XMLDB #19 - Relational dataをXMLへ #2
Oracle de XMLDB #20 - Relational dataをXMLへ #3
Oracle de XMLDB #21 - Relational dataをXMLへ #4
Oracle de XMLDB #22 - Relational dataをXMLへ #5
Oracle de XMLDB #23 - Relational dataをXMLへ #6


以下の例は、SQL/XMLとOracleが提供しているXQuery関数 ora:view()を利用し、リレーショナルデータからXMLTypeインスタンスを作るまでをOracleデータベース側で行い、クライアントではXMLTypeインスタンスを受け取るだけというもの。

package jp.macdeoracle.sample;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.jdbc.OracleResultSet;
import oracle.jdbc.pool.OracleDataSource;

import oracle.xdb.XMLType;


public class Table2Xml2
{
public Table2Xml2()
throws SQLException
{
OracleDataSource ods;
ods = new OracleDataSource();
ods.setURL(
"jdbc:oracle:thin:scott/tiger@192.168.1.20:1521:lampeye"
);

Connection conn = ods.getConnection();
Statement stmt = conn.createStatement();
OracleResultSet rs = (OracleResultSet)stmt.executeQuery(
"SELECT "
+ "XMLROOT("
+ "XMLQuery("
+ "'<ROWSET> {"
+ " for $d in ora:view(\"EMP\") "
+ " order by $d"
+ " return $d"
+ "} </ROWSET>'"
+ "RETURNING CONTENT), VERSION '1.0') "
+ "FROM dual"
);
DatabaseMetaData meta = conn.getMetaData();
System.out.println(meta.getDatabaseProductVersion());
System.out.println(meta.getDriverName()+":"+meta.getDriverVersion());
while(rs.next()) {
System.out.println(
"=======================\n"
+((XMLType)rs.getObject(1)).getStringVal()
);
}
rs.close();
stmt.close();
conn.close();
}

public static void main(String[] args) throws SQLException
{
Table2Xml2 dbXml = new Table2Xml2();
}
}


実行結果は以下の通り。

Oracle Database 11g Release 11.1.0.0.0 - Production
Oracle JDBC driver:10.1.0.3.0
=======================
<?xml version="1.0"?>
<ROWSET>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>1980-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>1981-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>1982-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>2008-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWSET>

プロセスが終了コード0で終了しました。


いろいろな方法があるので悩みそうな気もするなぁ。。。。やっぱり。。。

| | | コメント (0) | トラックバック (0)

2008年2月20日 (水)

Oracle de XMLDB #23 - Relational dataをXMLへ #6

さて、Oracleデータベース側だけでリレーショナルデータをXMLTypeインスタンスへ変換する方法は一通り試したので、今度はリレーショナルデータを取り出しクライアント側でXMLへ変換してみた。
接続するOracleデータベースはいままで通り、Oracle11g R1 EE 11.1.0.6.0 for Linux(x86)なのだが、クライアントとして利用するMacOSX 10.4.11の構成は多少異なるので以下に示しておく。

Jdeveloper1013png

IDE : Oracle JDeveloper10g Studio Edition 10.1.3.0.4 for MacOSX
Oracle XML Developer's Kit(XDK) for Java - 10.2.0.2.0 Linux Production
JDBCドライバ : Oracle Instant Client for MacOSX(PPC) 10.1.0.3.0付属の ojdbc14.jar
Oracle XML Parser : JDeveloper 10g Studio Edition for MacOSX version 10.1.3.0.4に付属するOracle XML Parser v2 (xmlparserv2.jar)
Oracle XML SQL Utility : JDeveloper 10g Studio Edition for MacOSX version 10.1.3.0.4に付属するOracle XML SQL Utiliry (xsu12.jar)

Xmldb23_project Xmldb23_project_property


バックナンバー:
Oracle de XMLDB #18 - Relational dataをXMLへ #1

Oracle de XMLDB #19 - Relational dataをXMLへ #2
Oracle de XMLDB #20 - Relational dataをXMLへ #3
Oracle de XMLDB #21 - Relational dataをXMLへ #4
Oracle de XMLDB #22 - Relational dataをXMLへ #5


以下の例では、emp表をempno順にソートして読み込み、Oracle XML SQL Utilityを利用して読み込んだResultsetからXMLへ変換。

package jp.macdeoracle.sample;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.jdbc.pool.OracleDataSource;

import oracle.xml.sql.query.OracleXMLQuery;

public class Table2Xml1
{
public Table2Xml1()
throws SQLException
{
OracleDataSource ods;
ods = new OracleDataSource();
ods.setURL(
"jdbc:oracle:thin:scott/tiger@192.168.1.20:1521:lampeye"
);

Connection conn = ods.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from emp order by empno");
OracleXMLQuery xmlqry = new OracleXMLQuery(conn, rs);

String xmlString = xmlqry.getXMLString();
DatabaseMetaData meta = conn.getMetaData();
System.out.println(meta.getDatabaseProductVersion());
System.out.println(meta.getDriverName()+":"+meta.getDriverVersion());
System.out.println("=====================\n"+xmlString);
rs.close();
stmt.close();
conn.close();
}

public static void main(String[] args) throws SQLException
{
Table2Xml1 Table2Xml1 = new Table2Xml1();
}
}


出力結果は以下の通り。ROW要素にnum属性がある以外、データベース側だけで変換した場合と内容的には変らない。
データベースサーバ側で変換まで行うか、クライアント側で変換するか、どちらが良いかといういうより、どのように負荷分散するかという戦略に合わせて考えればいいんじゃないかと思う。

Oracle Database 11g Release 11.1.0.0.0 - Production
Oracle JDBC driver:10.1.0.3.0
=====================
<?xml version = '1.0'?>
<ROWSET>
<ROW num="1">
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>12/17/1980 0:0:0</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW num="2">
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>2/20/1981 0:0:0</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW num="3">
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>2/22/1981 0:0:0</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW num="4">
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>4/2/1981 0:0:0</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW num="5">
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>9/28/1981 0:0:0</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW num="6">
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>5/1/1981 0:0:0</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW num="7">
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>6/9/1981 0:0:0</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW num="8">
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>11/17/1981 0:0:0</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW num="9">
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>9/8/1981 0:0:0</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW num="10">
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>12/3/1981 0:0:0</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW num="11">
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>12/3/1981 0:0:0</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW num="12">
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>1/23/1982 0:0:0</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW num="13">
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>1/1/2008 0:0:0</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWSET>

プロセスが終了コード0で終了しました。

次回は、データベース側でXMLへの変換まで行いクライアント側ではその結果を受け取るだけの例を一つ。

| | | コメント (0) | トラックバック (0)

2008年2月19日 (火)

Oracle de XMLDB #22 - Relational dataをXMLへ #5

リレーショナルデータを取り出してからXMLへ変換する方法へ行く前にもう一つあるのを忘れてました。
SYS_XMLAGG()XMLELEMENT()XMLFOREST()関数を利用する方法。
Oracle9i R1から提供されていた関数だったが、古くから提供されていたので完璧に忘れてました。m(_ _)m
(マニュアルを調べた上でOracle9i R1から提供されていた関数と書いたが・・・もし、Oracle8i 8.1.7あたりからあったよ!というツッコミがあればご遠慮なく。)


バックナンバー:
Oracle de XMLDB #18 - Relational dataをXMLへ #1

Oracle de XMLDB #19 - Relational dataをXMLへ #2
Oracle de XMLDB #20 - Relational dataをXMLへ #3
Oracle de XMLDB #21 - Relational dataをXMLへ #4


2008/2/19 9:0:0
文字参照のミスを修正しました。


尚、他のXQueryの結果に関してはいままでもこちらでは制御できない改行が挿入された結果だったり、逆に取り除かれた結果が返されたりしていたが、前述の関数を利用した場合は全体に整形用改行が入るのではなく、SYS_XMLAGG()関数でマージされたXMLELEMENT()の結果からは改行は取り除かれているが、XML宣言やルート要素タグの後には何故か改行が付加される。(要素間の改行やインデントなどは目視する際に見やすくするためなので、あっても無くていいのだが、なんとも気持ちの悪い付け方をしてくれる。。。)

また、いままで実行してきた各SQL文は、それぞれ2回実行してからalter system flush shared_poolを1度実行した後に実行してある。(実行環境は以前と同じ

SQL*Plus: Release 10.1.0.3.0 - Production on 火 2月 19 00:00:09 2008

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

> conn scott/tiger@lampeye
接続されました。
SCOTT> set long 4000
SCOTT> set pagesize 1000
SCOTT> select
2 sys_xmlagg(
3 xmlelement("ROW",
4 xmlforest(
5 empno,
6 ename,
7 job,
8 mgr,
9 hiredate,
10 sal,
11 comm,
12 deptno
13 ))) xmldoc
14 from
15 emp
16 order by
17 empno;

XMLDOC
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW><EMPNO>9999</EMPNO><ENAME>ほげ</ENAME><JOB>ENGINEER</JOB><MGR>7566</MGR><HI
REDATE>2008-01-01</HIREDATE><SAL>2500</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>
7369</EMPNO><ENAME>SMITH</ENAME><JOB>CLERK</JOB><MGR>7902</MGR><HIREDATE>1980-12
-17</HIREDATE><SAL>800</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7499</EMPNO><EN
AME>ALLEN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-02-20</HIREDAT
E><SAL>1600</SAL><COMM>300</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>7521</EMPN
O><ENAME>WARD</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-02-22</HIR
EDATE><SAL>1250</SAL><COMM>500</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>7566</
EMPNO><ENAME>JONES</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-04-02<
/HIREDATE><SAL>2975</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7654</EMPNO><ENAME
>MARTIN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-09-28</HIREDATE>
<SAL>1250</SAL><COMM>1400</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>7698</EMPNO
><ENAME>BLAKE</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-05-01</HIRE
DATE><SAL>2850</SAL><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>7782</EMPNO><ENAME>CLAR
K</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-06-09</HIREDATE><SAL>24
50</SAL><DEPTNO>10</DEPTNO></ROW><ROW><EMPNO>7839</EMPNO><ENAME>KING</ENAME><JOB
>PRESIDENT</JOB><HIREDATE>1981-11-17</HIREDATE><SAL>5000</SAL><DEPTNO>10</DEPTNO
></ROW><ROW><EMPNO>7844</EMPNO><ENAME>TURNER</ENAME><JOB>SALESMAN</JOB><MGR>7698
</MGR><HIREDATE>1981-09-08</HIREDATE><SAL>1500</SAL><COMM>0</COMM><DEPTNO>30</DE
PTNO></ROW><ROW><EMPNO>7900</EMPNO><ENAME>JAMES</ENAME><JOB>CLERK</JOB><MGR>7698
</MGR><HIREDATE>1981-12-03</HIREDATE><SAL>950</SAL><DEPTNO>30</DEPTNO></ROW><ROW
><EMPNO>7902</EMPNO><ENAME>FORD</ENAME><JOB>ANALYST</JOB><MGR>7566</MGR><HIREDAT
E>1981-12-03</HIREDATE><SAL>3000</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7934<
/EMPNO><ENAME>MILLER</ENAME><JOB>CLERK</JOB><MGR>7782</MGR><HIREDATE>1982-01-23<
/HIREDATE><SAL>1300</SAL><DEPTNO>10</DEPTNO></ROW></ROWSET>


経過: 00:00:00.41
SCOTT>


ちなみに、もうお気づきだと思うが、上記のようにorder by句を付けたとしてもエラーにはならないが指定した列でソートされることはないのでご注意を!
ソートした結果が欲しい場合には副問い合せを利用するとよいだろう。


SCOTT> select
2 sys_xmlagg(
3 xmlelement("ROW",
4 xmlforest(
5 empno,
6 ename,
7 job,
8 mgr,
9 hiredate,
10 sal,
11 comm,
12 deptno
13 ))) xmldoc
14 from
15 (select * from emp order by empno) alias_of_emp
16 /

XMLDOC
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW><EMPNO>7369</EMPNO><ENAME>SMITH</ENAME><JOB>CLERK</JOB><MGR>7902</MGR><HIRE
DATE>1980-12-17</HIREDATE><SAL>800</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>749
9</EMPNO><ENAME>ALLEN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-02
-20</HIREDATE><SAL>1600</SAL><COMM>300</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPN
O>7521</EMPNO><ENAME>WARD</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>198
1-02-22</HIREDATE><SAL>1250</SAL><COMM>500</COMM><DEPTNO>30</DEPTNO></ROW><ROW><
EMPNO>7566</EMPNO><ENAME>JONES</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE
>1981-04-02</HIREDATE><SAL>2975</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7654</
EMPNO><ENAME>MARTIN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-09-2
8</HIREDATE><SAL>1250</SAL><COMM>1400</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO
>7698</EMPNO><ENAME>BLAKE</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981
-05-01</HIREDATE><SAL>2850</SAL><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>7782</EMPNO
><ENAME>CLARK</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-06-09</HIRE
DATE><SAL>2450</SAL><DEPTNO>10</DEPTNO></ROW><ROW><EMPNO>7839</EMPNO><ENAME>KING
</ENAME><JOB>PRESIDENT</JOB><HIREDATE>1981-11-17</HIREDATE><SAL>5000</SAL><DEPTN
O>10</DEPTNO></ROW><ROW><EMPNO>7844</EMPNO><ENAME>TURNER</ENAME><JOB>SALESMAN</J
OB><MGR>7698</MGR><HIREDATE>1981-09-08</HIREDATE><SAL>1500</SAL><COMM>0</COMM><D
EPTNO>30</DEPTNO></ROW><ROW><EMPNO>7900</EMPNO><ENAME>JAMES</ENAME><JOB>CLERK</J
OB><MGR>7698</MGR><HIREDATE>1981-12-03</HIREDATE><SAL>950</SAL><DEPTNO>30</DEPTN
O></ROW><ROW><EMPNO>7902</EMPNO><ENAME>FORD</ENAME><JOB>ANALYST</JOB><MGR>7566</
MGR><HIREDATE>1981-12-03</HIREDATE><SAL>3000</SAL><DEPTNO>20</DEPTNO></ROW><ROW>
<EMPNO>7934</EMPNO><ENAME>MILLER</ENAME><JOB>CLERK</JOB><MGR>7782</MGR><HIREDATE
>1982-01-23</HIREDATE><SAL>1300</SAL><DEPTNO>10</DEPTNO></ROW><ROW><EMPNO>9999</
EMPNO><ENAME>ほげ</ENAME><JOB>ENGINEER</JOB><MGR>7566</MGR><HIREDATE>2008-01-01<
/HIREDATE><SAL>2500</SAL><DEPTNO>20</DEPTNO></ROW></ROWSET>


経過: 00:00:00.41


さらに前回までに紹介した、DBMS_XMLGEN.GETXMLやDBMS_XMLGEN.GETXMLTYPE()では関数に渡すクエリーにorder by句を付加すればソートできる。

SCOTT> select
2 dbms_xmlgen.getxml(sqlQuery=>'select * from emp order by empno') xmldoc
3 from dual
4 /

XMLDOC
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>80-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>81-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>82-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>08-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWSET>



経過: 00:00:00.65
SCOTT>


これは書く必要は無かったかもしれないが念のため。
XMLQuery()関数や、XMLTable()関数ではXQueryのFLWOR式でorder by句を使えばソートできる。

SCOTT> select
2 xmlroot(xmldoc.column_value, version '1.0')
3 from
4 xmltable(
5 '<ROWSET>{
6 for $d in ora:view("EMP")
7 order by $d
8 return $d
9 }</ROWSET>'
10 ) xmldoc
11 /

XMLROOT(XMLDOC.COLUMN_VALUE,VERSION'1.0')
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>1980-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>1981-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>1982-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>2008-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
</ROWSET>


経過: 00:00:00.30
SCOTT>

次回へつづく。

| | | コメント (0) | トラックバック (0)

2008年2月13日 (水)

WIF2008 - Webdesign International Festival - 事務局スタッフの方がコメントをくれた!

WIF2008 - Webdesign International Festival - ファイナリスト決定!という記事に英語でコメントが!
日本語で書いているブログに英語でコメントされたので少々驚いたのだがコメントを寄せてくれた方は、WIF2008 - Webdesign International Festivalの広報 国際事業祭典開発担当者オード・ブーリアト氏だった。2度、びっくり!。

WIF2008 - Webdesign International Festivalは2008年4月17日〜19日にフランスのリモージュで開催される。

尚、コメントをくれた彼女の活躍振りは以下のブログでも書かれてますね。:)
Where Is Falbala?
Falbala in Hong Kong!
"Where is Falbala?" というカテゴリまである。:)

日本でのプレスリリースの記事


このブログもいろいろな国からアクセスされてるということを改めて感じた瞬間でした。

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #21 - Relational dataをXMLへ #4

さて、リレーショナルデータをXMLへ変換する方法の4つ目は、以前から提供されているPL/SQLのDBMS_XMLGENパッケージのgetXML()関数を利用する例です。
前回利用したgetXMLType()関数がXMLTypeインスタンスを返してくるのに対して、こちらはCLOB型のインスタンスを返してきます。しかも一時LOBが生成されます。(一時LOBを作成しない関数もあります)




バックナンバー:

Oracle de XMLDB #18 - Relational dataをXMLへ #1
Oracle de XMLDB #19 - Relational dataをXMLへ #2
Oracle de XMLDB #20 - Relational dataをXMLへ #3


おお〜っ、XMLTypeインスタンスを返す他のどれよりも遅いですね。今回利用した関数は内部で一時LOBを作る為に負荷が高いのですかね??(あくまで個人的な推測です。)

SCOTT> select
2 dbms_xmlgen.getXML(sqlQuery=>'select * from emp') as xmldoc
3 from dual
4 /

XMLDOC
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>08-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>80-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>81-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>82-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
</ROWSET>



経過: 00:00:00.65
SCOTT>

今回まででOracle11gデータベース側だけでリレーショナルデータをXMLへ変換する方法の簡単な実験は終わりです。
次回はクライアント側でリレーショナルデータを取り出してからXMLへ変換する方法でも試してみますか・・・・

| | | コメント (0) | トラックバック (0)

2008年2月12日 (火)

Oracle de XMLDB #20 - Relational dataをXMLへ #3

さて前回に引き続きリレーショナルデータをXMLへ変換する方法の3つ目は、以前から提供されているPL/SQLのDBMS_XMLGENパッケージのgetXMLType()関数を利用する例です。



バックナンバー:

Oracle de XMLDB #18 - Relational dataをXMLへ #1

Oracle de XMLDB #19 - Relational dataをXMLへ #2


では早速取りかかる。

SCOTT> select
2 dbms_xmlgen.getXMLType(sqlQuery=>'select * from emp') as column_value
3 from dual
4 /

COLUMN_VALUE
--------------------------------------------------------------------------------
<ROWSET>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>08-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>80-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>81-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>82-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
</ROWSET>


経過: 00:00:00.46

おや〜、SQL/XMLXMLQUERY関数XMLTABLE関数だけを利用した結果とは決定的な違いが1つあるのにお気づきだろうか?

そう、この時点で既にインデントされ改行が付加され人が読み易い形式に整形されている。Oracleさんの気まぐれなのか・・・・・・

DBMS_XMLGEN.getXMLType()を利用した場合もXMLQUERY関数XMLTABLE関数だけを利用した場合同様XML宣言は無い。

いつものXMLROOT()関数でXML宣言を付加してみる。

SCOTT> select
2 xmlroot(
3 dbms_xmlgen.getXMLType(sqlQuery=>'select * from emp')
4 ,version '1.0'
5 ) as column_value
6 from dual
7 /

COLUMN_VALUE
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>08-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>80-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>81-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>81-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>81-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>81-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>82-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
</ROWSET>


経過: 00:00:00.58
SCOTT>

PL/SQLパッケージを利用している影響なのだろう。SQL/XML関数だけの場合よりは負荷はおおきいようだ。

ではまた。

| | | コメント (0) | トラックバック (0)

2008年2月11日 (月)

Oracle de XMLDB #19 - Relational dataをXMLへ #2

Relational dataからXMLを生成する方法の2つ目は、SQL/XMLXMLQUERY()とOracleが提供しているXQuery関数であるora:view()を組み合わせる方法。



バックナンバー:
Oracle de XMLDB #18 - Relational dataからXMLへ #1

では、早速試してみる。

SCOTT> select * from emp
2 /

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
9999 ほげ ENGINEER 7566 08-01-01 2500 20
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10

13行が選択されました。

経過: 00:00:00.00
SCOTT>
SCOTT> select
2 xmlquery(
3 '<ROWSET>{
4 for $d in ora:view("EMP")
5 return $d
6 }</ROWSET>'
7 returning content
8 ) as COLUMN_VALUE
9 from dual
10 /

COLUMN_VALUE
--------------------------------------------------------------------------------
<ROWSET><ROW><EMPNO>9999</EMPNO><ENAME>ほげ</ENAME><JOB>ENGINEER</JOB><MGR>7566<
/MGR><HIREDATE>2008-01-01</HIREDATE><SAL>2500</SAL><DEPTNO>20</DEPTNO></ROW><ROW
><EMPNO>7369</EMPNO><ENAME>SMITH</ENAME><JOB>CLERK</JOB><MGR>7902</MGR><HIREDATE
>1980-12-17</HIREDATE><SAL>800</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7499</E
MPNO><ENAME>ALLEN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-02-20<
/HIREDATE><SAL>1600</SAL><COMM>300</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>75
21</EMPNO><ENAME>WARD</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-02
-22</HIREDATE><SAL>1250</SAL><COMM>500</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPN
O>7566</EMPNO><ENAME>JONES</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>198
1-04-02</HIREDATE><SAL>2975</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7654</EMPN
O><ENAME>MARTIN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-09-28</H
IREDATE><SAL>1250</SAL><COMM>1400</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>769
8</EMPNO><ENAME>BLAKE</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-05-
01</HIREDATE><SAL>2850</SAL><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>7782</EMPNO><EN
AME>CLARK</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-06-09</HIREDATE
><SAL>2450</SAL><DEPTNO>10</DEPTNO></ROW><ROW><EMPNO>7839</EMPNO><ENAME>KING</EN
AME><JOB>PRESIDENT</JOB><HIREDATE>1981-11-17</HIREDATE><SAL>5000</SAL><DEPTNO>10
</DEPTNO></ROW><ROW><EMPNO>7844</EMPNO><ENAME>TURNER</ENAME><JOB>SALESMAN</JOB><
MGR>7698</MGR><HIREDATE>1981-09-08</HIREDATE><SAL>1500</SAL><COMM>0</COMM><DEPTN
O>30</DEPTNO></ROW><ROW><EMPNO>7900</EMPNO><ENAME>JAMES</ENAME><JOB>CLERK</JOB><
MGR>7698</MGR><HIREDATE>1981-12-03</HIREDATE><SAL>950</SAL><DEPTNO>30</DEPTNO></
ROW><ROW><EMPNO>7902</EMPNO><ENAME>FORD</ENAME><JOB>ANALYST</JOB><MGR>7566</MGR>
<HIREDATE>1981-12-03</HIREDATE><SAL>3000</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMP
NO>7934</EMPNO><ENAME>MILLER</ENAME><JOB>CLERK</JOB><MGR>7782</MGR><HIREDATE>198
2-01-23</HIREDATE><SAL>1300</SAL><DEPTNO>10</DEPTNO></ROW></ROWSET>
経過: 00:00:00.10
SCOTT>

XMLTABLE()関数を使った場合と変るところはないが、関数本来の使い道からすればXMLQUERY()関数を使う方が自然に感じる。(まあ、どちらを使っても可能であることはまちがいないのですが。。)


最後に、前回も行ったようにXMLROOT()関数を利用しXML宣言を追加したXMLTypeインスタンスを取得してみた。

SCOTT> select
2 xmlroot(
3 xmlquery(
4 '<ROWSET>{
5 for $d in ora:view("EMP")
6 return $d
7 }</ROWSET>'
8 returning content
9 ),
10 version '1.0'
11 ) as column_value
12 from dual
13 /

COLUMN_VALUE
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>2008-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>1980-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>1981-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>1982-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
</ROWSET>


経過: 00:00:00.58
SCOTT>

ではまた。

| | | コメント (0) | トラックバック (0)

2008年2月10日 (日)

Oracle de XMLDB #18 - Relational dataをXMLへ #1

Oracle XML DBリポジトリ関連の話はしばらく脇に置いておき、これから数回に分けてリレーショナル表からXMLを生成する方法について、備忘録の意味も含めて書いておくことにする。

● 環境データ

Server : Dynabook SS SX/210LNLW (RAM:768MB) 
CentOS5
Oracle11g EE R1 11.1.0.6.0 for Linux x86

Client : Apple PowerMac G5 Dual 2.7Ghz (RAM:1GB)
MacOSX Tiger 10.4.11 Server
Oracle10g Instant Client 10g R1 for MacOSX(PPC)

表を問い合わせXMLTypeインスタンスを返す方法は複数ある。まず最初に紹介するのは、XMLTABLE()関数のXqueryでora:view()関数を使う方法。

XMLTABLE()関数は、SQL/XMLで提供される標準関数で、本来はXMLデータをリレーショナルフォーマットへマッピングする為に利用する関数なのだが、今回は本来の目的とは異なる使い方をしてみた。
XMLTABLE()関数でリレーショナル表からXMLTypeインスタンスを取得するには、OracleがXXQuery向に提供している ora:view()関数を利用する。(Oracleが独自に拡張したXQuery向け関数の名前空間は、ora:)
ora:view()関数は、XQueryの標準関数であるfn:doc()関数を利用する感覚で利用できる。


以下の例では、XMLTABLE()関数でCOLUMNS句を指定していしないのがポイント。尚、COLUMN_VALUE疑似列を利用しています。

Last login: Sat Feb  9 06:46:43 on console
Welcome to Darwin!
G5Server:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 土 2月 9 15:30:44 2008

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

SCOTT> conn scott/tiger@lampeye
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SCOTT> set pagesize 1000
SCOTT> set long 4000
SCOTT> set sqlterm off
SCOTT> set linesize 80
SCOTT> l
1 select xmldoc.COLUMN_VALUE
2 from
3 xmltable(
4 '<ROWSET>{
5 for $d in ora:view("EMP")
6 return $d
7 }</ROWSET>'
8* ) xmldoc
SCOTT> /

COLUMN_VALUE
--------------------------------------------------------------------------------
<ROWSET><ROW><EMPNO>9999</EMPNO><ENAME>ほげ</ENAME><JOB>ENGINEER</JOB><MGR>7566<
/MGR><HIREDATE>2008-01-01</HIREDATE><SAL>2500</SAL><DEPTNO>20</DEPTNO></ROW><ROW
><EMPNO>7369</EMPNO><ENAME>SMITH</ENAME><JOB>CLERK</JOB><MGR>7902</MGR><HIREDATE
>1980-12-17</HIREDATE><SAL>800</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7499</E
MPNO><ENAME>ALLEN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-02-20<
/HIREDATE><SAL>1600</SAL><COMM>300</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>75
21</EMPNO><ENAME>WARD</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-02
-22</HIREDATE><SAL>1250</SAL><COMM>500</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPN
O>7566</EMPNO><ENAME>JONES</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>198
1-04-02</HIREDATE><SAL>2975</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMPNO>7654</EMPN
O><ENAME>MARTIN</ENAME><JOB>SALESMAN</JOB><MGR>7698</MGR><HIREDATE>1981-09-28</H
IREDATE><SAL>1250</SAL><COMM>1400</COMM><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>769
8</EMPNO><ENAME>BLAKE</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-05-
01</HIREDATE><SAL>2850</SAL><DEPTNO>30</DEPTNO></ROW><ROW><EMPNO>7782</EMPNO><EN
AME>CLARK</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-06-09</HIREDATE
><SAL>2450</SAL><DEPTNO>10</DEPTNO></ROW><ROW><EMPNO>7839</EMPNO><ENAME>KING</EN
AME><JOB>PRESIDENT</JOB><HIREDATE>1981-11-17</HIREDATE><SAL>5000</SAL><DEPTNO>10
</DEPTNO></ROW><ROW><EMPNO>7844</EMPNO><ENAME>TURNER</ENAME><JOB>SALESMAN</JOB><
MGR>7698</MGR><HIREDATE>1981-09-08</HIREDATE><SAL>1500</SAL><COMM>0</COMM><DEPTN
O>30</DEPTNO></ROW><ROW><EMPNO>7900</EMPNO><ENAME>JAMES</ENAME><JOB>CLERK</JOB><
MGR>7698</MGR><HIREDATE>1981-12-03</HIREDATE><SAL>950</SAL><DEPTNO>30</DEPTNO></
ROW><ROW><EMPNO>7902</EMPNO><ENAME>FORD</ENAME><JOB>ANALYST</JOB><MGR>7566</MGR>
<HIREDATE>1981-12-03</HIREDATE><SAL>3000</SAL><DEPTNO>20</DEPTNO></ROW><ROW><EMP
NO>7934</EMPNO><ENAME>MILLER</ENAME><JOB>CLERK</JOB><MGR>7782</MGR><HIREDATE>198
2-01-23</HIREDATE><SAL>1300</SAL><DEPTNO>10</DEPTNO></ROW></ROWSET>


経過: 00:00:00.11
SCOTT>


これだとXML宣言が無い。ではどうやってXML宣言を付加するかと言えば、XMLRoot()関数を使う。
XMLRoot()関数は2005年まではSQL/XMLの標準関数だったが現在は標準関数ではない。但し、Oracleでは利用できるのでXMLRoot()関数を利用してXML宣言を付加することができる。

では早速試してみよう!。

SCOTT> select
2 xmlroot(xmldoc.column_value,version '1.0')
3 from
4 xmltable(
5 '<ROWSET>{
6 for $d in ora:view("EMP")
7 return $d
8 }</ROWSET>'
9 ) xmldoc
10 /

XMLROOT(XMLDOC.COLUMN_VALUE,VERSION'1.0')
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<EMPNO>9999</EMPNO>
<ENAME>ほげ</ENAME>
<JOB>ENGINEER</JOB>
<MGR>7566</MGR>
<HIREDATE>2008-01-01</HIREDATE>
<SAL>2500</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<MGR>7902</MGR>
<HIREDATE>1980-12-17</HIREDATE>
<SAL>800</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-20</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7521</EMPNO>
<ENAME>WARD</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-02-22</HIREDATE>
<SAL>1250</SAL>
<COMM>500</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7566</EMPNO>
<ENAME>JONES</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-04-02</HIREDATE>
<SAL>2975</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-28</HIREDATE>
<SAL>1250</SAL>
<COMM>1400</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7698</EMPNO>
<ENAME>BLAKE</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-05-01</HIREDATE>
<SAL>2850</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7782</EMPNO>
<ENAME>CLARK</ENAME>
<JOB>MANAGER</JOB>
<MGR>7839</MGR>
<HIREDATE>1981-06-09</HIREDATE>
<SAL>2450</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7839</EMPNO>
<ENAME>KING</ENAME>
<JOB>PRESIDENT</JOB>
<HIREDATE>1981-11-17</HIREDATE>
<SAL>5000</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
<ROW>
<EMPNO>7844</EMPNO>
<ENAME>TURNER</ENAME>
<JOB>SALESMAN</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-09-08</HIREDATE>
<SAL>1500</SAL>
<COMM>0</COMM>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7900</EMPNO>
<ENAME>JAMES</ENAME>
<JOB>CLERK</JOB>
<MGR>7698</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>950</SAL>
<DEPTNO>30</DEPTNO>
</ROW>
<ROW>
<EMPNO>7902</EMPNO>
<ENAME>FORD</ENAME>
<JOB>ANALYST</JOB>
<MGR>7566</MGR>
<HIREDATE>1981-12-03</HIREDATE>
<SAL>3000</SAL>
<DEPTNO>20</DEPTNO>
</ROW>
<ROW>
<EMPNO>7934</EMPNO>
<ENAME>MILLER</ENAME>
<JOB>CLERK</JOB>
<MGR>7782</MGR>
<HIREDATE>1982-01-23</HIREDATE>
<SAL>1300</SAL>
<DEPTNO>10</DEPTNO>
</ROW>
</ROWSET>

経過: 00:00:00.33
SCOTT>

あれ、XMLRoot()関数に渡しているXMLTABLE()関数で取得したXMLTypeインスタンスには改行がありませんでしたが、XMLROOT()関数を利用すると改行が付加されたXMLTypeインスタンスが返されます。また、その影響だと思うが経過時間も増えている。

こりゃ参った〜という感じです。以前もOracle XML DBに関するエントリでwhitespaceのpreserve/stripは現時点のOracle XML DBでは明示的に制御できないということは書いていましたが思わぬところでwhitespaceかってに付加されるという動きには戸惑いますね。(利用する側で制御できるようにしてもらったほうがスッキリするように感じます。)


トレースして詳細に追跡したわけでは無いのであくまで想像の域を脱していないのですが、もしかすると、XMLROOT()関数はXMLTypeインスタンスを受け取りXML宣言を付加して返してくる際、XML宣言を追加したDOMを生成した上でXMLTypeインスタンスを返してくるのではないかと考えています。(くどいようですが、これは私の推測に過ぎませんので誤解なさらないようにしてください。)

時間があればもっと深〜〜〜く追っかけてみたい現象なのでとりあえず、TODOリストに追加しておきますかね。

では次回へつづく。

| | | コメント (0) | トラックバック (1)

2008年2月 5日 (火)

IBM Informix Dynamic Server Developer Edition for MAC OS X (Cheetah 2" Beta Download)

IBM Informix Dynamic Server for MacOSX("Cheetah 2" Beta Download)がダウンロードできるようになっていますね。

http://www.marketwire.com/mw/release.do?id=811175&sourceType=1
http://www-306.ibm.com/software/info/ids/index.jsp

これでDB2 UDB以外のメジャーな商用DBがMacOSX上でも動く事になりますね。
Oracle11g for MacOSXはどんな状況なんだろうなぁ実際のところ...

日本国内のサポートの有無に関係なくMacOSXで動作する商用データベース(ORDBMS/RDBMS/ODBMSに関係なく)を列挙しておく・・・

データベースMacOSXのバージョン備考
Oracle10g R1 EE/SE/SEONE?MacOSX(PPC) Panther / TIgerTigerでは10.1.0.5.0 patchsetが必要。
Sybase ASE 12.5.xMacOSX(PPC only?) Jaguar以上無償版あり
Caché 2007.1.MacOSX(PPC/Intel) Tiger無償版あり

注1)無償版と書きましたが商用利用などに制限のあるものもありますので詳細は各リンク先を参照してください。
注2)Oracle 10g XEはリリースされていないが、Oracle Mix(ユーザ登録が必要)ではOracle11g XE for MacOSX Leopardがあったらいいな〜なんて話もでている。

ちなみに、MacOSXのOracleに関して、Oracle Certification Matrixのページを見れば詳しい状況がわかります。
http://www.oracle.com/technology/support/metalink/index.html

3

4

| | | コメント (0) | トラックバック (0)

2008年2月 4日 (月)

Oracle SQL Developer for MacOSX で Oracle Instant Clientを使ってみる

前回、Oracle Instant Client 10g R1 for MacOSX(PPC)がMacOSX LeopardのRosettaによって動作するところまでは確認できたということを書いたが、今日は、Oracle SQL Developer 1.2.1 for MacOSX(現時点での最新版)で Oracle Instant Client 10g R1のTNS接続する方法を書いておくことにする。

SQL*PlusをTerminalやxtermから起動するのであれば .bashrc 等で環境変数を設定すればよいですが、Oracle SQL DeveloperのようなGUIツールはどうすればいいのか?
MacOSXのGUI環境では、.bashrc等は利用できない。その変わりにenvironment.plistが利用される。environment.plistの説明は、Apple Technical Q&A QA1067 : Setting environment variables for user processesを見てもらうとして早速試してみます。

Oracle_sql_developer_sprash Oracle_sql_developer_1_2_1

まず、最初は、environment.plistが存在しない状態でOracle SQL Developerを起動し、前回設定したOracle Instant Client 10g R1 for MacOSX(PPC)のtnsnames.oraを利用したTNS接続が行えるか確認してみる。
Oracle_sql_developer_create_conne_2


tnsnames.oraの定義してある接続文字列がドロップダウンメニューに現れないですね。TNS_ADMIN環境変数などが効いていません。
Oracle_sql_developer_not_appear_con


次にApple Technical Q&A QA1067 : Setting environment variables for user processesの説明通りにenvironment.plistを作成後、一旦ログオフする。
(尚、environment.plistに設定する環境変数に関しては、前回のエントリを参照してください。

Last login: Mon Feb  4 18:58:45 on console
Macintosh:˜ discus$ mkdir .MacOSX
Macintosh:˜ discus$ cat environment.plust
cat: environment.plust: No such file or directory
Macintosh:˜ discus$ cat environment.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DYLD_LIBRARY_PATH</key>
<string>/Users/Shared/oracleInstantClient</string>
<key>NLS_LANG</key>
<string>Japanese_Japan.AL32UTF8</string>
<key>ORACLE_HOME</key>
<string>/Users/Shared/oracleInstantClient</string>
<key>TNS_ADMIN</key>
<string>/Users/Shared/oracleInstantClient</string>
</dict>
</plist>
Macintosh:˜ discus$ mv environment.plist .MacOSX
Macintosh:˜ discus$

再度、ログインして、Oracle SQL Developerを起動し同じ手順でTNS接続できるか確認する。
お〜〜、こんどは、tnsnames.oraに定義してある接続文字列がドロップダウンメニューにリストされています。
Oracle_sql_developer_appear_connect


接続テストも上手く行きました。
Oracle_sql_developer_test_session_s


最後に、SQL WorkSheetなどでEMP表にデータを登録したり問い合わせたりしてみました。これまた問題なく使えます。
Oracle_sql_developer_insert_data_to

Oracle_sql_developer_query_data_fro


この例では、MacOSX Leopard(Intel Mac)のRosetta配下で動作しているOracle Instant Clientを利用しましたが、MacOSX Tiger(PPC)版でも同様の手順で動作します。
興味のある方はお試しあれ。。..

| | | コメント (0) | トラックバック (0)

2008年2月 3日 (日)

Oracle Instant Client 10g R1 for MacOSX(PPC) is running under Rosetta on MacOSX Leopard

先日、Oracle Instant Client 10g R1 for MacOSX(PPC)がMacOSX Tiger 10.4.11でも利用できるということを書いたが実はもう一つ試した事があった。
タイトルにも書いたようにOracle Instant Client 10g R1 for MacOSX(PPC)はなんと、MacOSX Leopard 11.5.1のIntel Mac上でも動作する。
(但し、Oracle側の保証など全くない事は心の片隅に置いておいてくださいね。あくまで use your own riskですから。。)

では、前回と同じくOTN USからダウンロード<したOracle Instant Client 10g R1 for MacOSX(PPC)版を解凍して、/Users/Shared/OracleInstantClient以下に配置したところから話をすすめる。

まず、環境の確認。

Macintosh:˜ discus$ /usr/sbin/system_profiler SPHardwareDataType SPSoftwareDataType | grep -E '((System|Kernel) Version|Processor (Name|Speed))'
Processor Name: Intel Core 2 Duo
Processor Speed: 2.2 GHz
System Version: Mac OS X 10.5.1 (9B18)
Kernel Version: Darwin 9.1.0


Oracle Instant Client向け環境変数及び、tnsnames.oraは前回と全く同じなので詳細は前回のエントリを参照してください。

Macintosh:˜ discus$ cat .bashrc
alias ll='ls -lv'

export ORACLE_HOME=/Users/Shared/OracleInstantClient
export NLS_LANG=Japanese_Japan.AL32UTF8
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
export TNS_ADMIN=$ORACLE_HOME
Macintosh:˜ discus$ cat $TNS_ADMIN/tnsnames.ora
lampeye =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = lampeye.macdeoracle.jp)
)
)
Macintosh:˜ discus$ ls -l $ORACLE_HOME
total 182184
-r--r--r--@ 1 discus wheel 21299 4 29 2004 README_IC.htm
-r--r--r--@ 1 discus wheel 1461081 7 5 2004 classes12.jar
-r--r--r--@ 1 discus wheel 1393 2 2 10:26 glogin.sql
-rwxr-xr-x@ 1 discus wheel 14891264 12 13 2004 libclntsh.dylib.10.1
-rwxr-xr-x@ 1 discus wheel 27432 10 24 2004 libheteroxa10.dylib
-rw-r--r--@ 1 discus wheel 1516340 11 16 2004 libnnz10.dylib
-rw-r--r--@ 1 discus wheel 1841448 10 24 2004 libocci.dylib.10.1
-rwxr-xr-x@ 1 discus wheel 66160096 12 14 2004 libociei.dylib
-rwxr-xr-x@ 1 discus wheel 93028 11 9 2004 libocijdbc10.dylib
-rwxr-xr-x@ 1 discus wheel 744612 10 24 2004 libsqlplus.dylib
-r--r--r--@ 1 discus wheel 54032 7 5 2004 ocrs12.jar
-r--r--r--@ 1 discus wheel 1397543 7 5 2004 ojdbc14.jar
-r--r--r--@ 1 discus wheel 5018319 7 7 2004 orai18n.jar
drwxr-xr-x@ 4 discus wheel 136 12 14 2004 sdk
-rwxr-xr-x@ 1 discus wheel 15660 12 13 2004 sqlplus
-rw-r--r-- 1 discus wheel 225 2 2 10:31 tnsnames.ora


Sqlplus_binary_image

では、さっそく、Oracle Instant Client 10g R1 for MacOSX(PPC)版のSQL*Plusを起動してみる。
接続先は、Oracle11g EE R1 11.1.0.6.0 for Linux x86

Macintosh:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 日 2月 3 13:49:12 2008

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

SQL> conn scott/tiger@lampeye
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SCOTT> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
Macintosh:˜ discus$

お〜〜〜〜〜、動いた〜〜〜〜〜、さすが、MacOSXのRosettaの威力!! PowerPC用のバイナリがIntelで動いちゃった。

感動ものです!

興味のあるかたはお試しあれ!

http://www.apple.com/jp/rosetta/
http://ja.wikipedia.org/wiki/Rosetta

| | | コメント (0) | トラックバック (0)

iKnow user's partyに行ってきた。

iKnow User's Partyに参加してきた。

1次会ではなんとCerego Japanのケネスさんとカークさん?(間違ってない?)が・・・・・、いろいろな話は聞けたのだが、私の英会話スキルが貧弱すぎて・・・・・技術関連書籍の英語は読めても会話についていけない自分に改めて気付く..。

がんばらねば・・・

お酒も回ってきたのこれ以上は書けない・・・つづきはまた明日にでも...

と思ってiKnowにログインしてみたら megawattさんが日記にアップしていた。脱帽。。。

iKnow user's party dialy - by megawatt

iKnow user's party - Flickr Photos by megawatt

| | | コメント (0) | トラックバック (0)

2008年1月31日 (木)

WIF2008 - Webdesign International Festival - ファイナリスト決定!

高味氏のブログによるとWIF2008のファイナリストが決定したとのこと。
私個人は「Water Songs」の狙いが面白なぁと思っていたら、1チームではなく2チームが日本からファイナリストとしてリモージュ(フランス)へ行く事になったようです。

ファイナルもがんばれ、ニッポン!

Life Pool」- Team 203

8


Water Songs」- Team Reverie
9

| | | コメント (2) | トラックバック (0)

2008年1月30日 (水)

Oracle Instant Client 10g R1 for MacOSX(PPC)

さて、最近Mac De OracleなのにMacのOracleネタが少ない。。(OracleさんがMacOSX版のOracle11gとかリリースでもしてくれないとネタ切れ状態なので・・・)
・・・という理由で他のネタばかりでは申し訳ないので久々にMac De Oracle的なネタにしました。
MacOSX Tiger 10.4.11(Tigerでは最新)かつPowerPCでなら利用可能なOracle Instant Client 10g R1 for MacOSX(PPC)のネタを取り上げてみたいと思います。
Oracle Clientとして十分利用できるので使いたい方は試してみるといいでしょうね。

SQL*Plusを使うだけとか利用目的毎に分かれているが今回は全部のっけで!

まず、Oracle Instant Client 10g R1 for MacOSX(PPC)はUS OTNのサイトからダウンロードできる。(今回は全部のっけなので4つのzipファイル全部ダウンロードします。)

Oracle_instant_client_4_macosx_ppc

ダウンロードが済んだら適当な場所に解凍する。

解凍すると4フォルダになるはずです。

READMEにはいろいろ書かれていますが、むずかしいことは考えずに、各フォルダ以下にあるファイル全てを /Users/Shared以下に新たにフォルダを作りそこへ放り込みます!
今回の例では、OracleInstantClientHomeというフォルダを作成しました。つまり、/Users/Shared/OracleInstantClientHome以下に解凍した全ファイルを放り込みます。
(尚、MacOSX Tiger Serverを使っていますが、Client版でも問題同じ手順で簡単に利用できます。)

dG5Server:˜ discus$ sw_vers
ProductName: Mac OS X Server
ProductVersion: 10.4.11
BuildVersion: 8S169
G5Server:˜ discus$
G5Server:˜ discus$ echo $ORACLE_HOME
/Users/Shared/OracleInstantClientHome
G5Server:˜ discus$ ls -l $ORACLE_HOME
total 182192
-r--r--r-- 1 discus dba 21299 Apr 29 2004 README_IC.htm
-r--r--r-- 1 discus dba 1461081 Jul 5 2004 classes12.jar
-r--r--r-- 1 discus dba 1418 Jan 29 21:38 glogin.sql
-rwxr-xr-- 1 discus dba 14891264 Dec 13 2004 libclntsh.dylib.10.1
-rwxr-xr-- 1 discus dba 27432 Oct 24 2004 libheteroxa10.dylib
-rw-r--r-- 1 discus dba 1516340 Nov 16 2004 libnnz10.dylib
-rw-r--r-- 1 discus dba 1841448 Oct 24 2004 libocci.dylib.10.1
-rwxr-xr-- 1 discus dba 66160096 Dec 14 2004 libociei.dylib
-rwxr-xr-- 1 discus dba 93028 Nov 9 2004 libocijdbc10.dylib
-rwxr-xr-- 1 discus dba 744612 Oct 24 2004 libsqlplus.dylib
-r--r--r-- 1 discus dba 54032 Jul 5 2004 ocrs12.jar
-r--r--r-- 1 discus dba 1397543 Jul 5 2004 ojdbc14.jar
-r--r--r-- 1 discus dba 5018319 Jul 7 2004 orai18n.jar
drwxr-xr-- 4 discus dba 136 Dec 14 2004 sdk
-rw-r--r-- 1 discus dba 686 Jan 29 21:45 sqlnet.log
-rwxr-xr-- 1 discus dba 15660 Dec 13 2004 sqlplus

あとは、ORACLE_HOME、NLS_LANG、DYLD_LIBRARY_PATH、PATH、TNS_ADMINというおなじみの環境変数を設定します。

G5Server:˜ discus$ cat .bash_profile
. .bashrc
G5Server:˜ discus$
G5Server:˜ discus$ cat .bashrc
alias ll='ls -lv'

export ORACLE_HOME=/Users/Shared/OracleInstantClientHome
export NLS_LANG=Japanese_Japan.AL32UTF8
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
export TNS_ADMIN=$ORACLE_HOME
G5Server:˜ discus$ . .bash_profile

次に、tnsnames.oraを$ORACLE_HOME以下(この例では/Users/Shared/OracleInstantClientHome以下)に作成します。
(tnsnames.oraは前述した$TNS_ADMIN環境変数で指定したパスが参照される。)

以下、専用サーバ接続用の記述例

G5Server:˜ discus$ cat $TNS_ADMIN/tnsnames.ora
lampeye =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = lampeye.macdeoracle.jp)
)
)
G5Server:˜ discus$

さあ、sqlplusを起動して接続してみましょう。(この例ではOracle11g R1へ接続)

G5Server:˜ discus$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 火 1月 29 23:07:42 2008

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

SQL> conn scott/tiger@lampeye
接続されました。
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SQL>

どうですか? 簡単でしょ!

Enjoy!

| | | コメント (0) | トラックバック (0)

2008年1月27日 (日)

MacOSX で Eclipse の日本語化(備忘録)

Eclipseの日本語化プラグインのインストール手順について以下を参考にしたのだが、MacOSX以外の記述もあり少々分かりにくかったので自分なりの備忘録として書いておく。
とはいってもMacOSX上で利用する可能性は低いのだけれど・・・
Eclipse Wiki - 日本語化に関する記述

だったら何故、EclipseをMacOSXで使おうと思ったのか?・・・・

先日、OTN-Jのエントリに回答したのがきっかけで・・・、仕事ではEclipseを利用する事が多いウチの奥さんと

私     :「MacOSXでEclipseを日本語化する手順ってブログで書いてたっけ?
ウチの奥さん:「書いてないと思う」

という話になりこのエントリを書く気になったというわけ。。。(個人的には日本語化しないと使いにくいというわけでもないのですが・・・)

2008/1/28追記
奥さん曰く、Eclipseネタは沢山あるからネタとしてはつまらないし、誰かがもう書いていると思ったからだとか。。。

今回利用した Eclipse for MacOSXのバージョンは、3.3.1.1
日本語化プラグインは、pleiades-all-in-one-java-wtp_20071121.zip
MacOSX : version 10.4.11

http://www.eclipse.org/downloads/
http://mergedoc.sourceforge.jp/

※ダウンロードしたEclipseと日本語化プラグインはぞれぞれ適当なフォルダで解凍済み。

以下の例では、Eclpseと日本語化プラグインはそれぞれ

/Volumes/ExtraDisk/Application



/Volumes/DiscusWork/temp

以下に解凍した。

Last login: Wed Jan 23 17:16:05 on console
Welcome to Darwin!
G5Server:˜ discus$
G5Server:˜ discus$ cd /Volumes/ExtraDisk/Application/eclipse/
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$ ls -l
total 64
drwxr-xr-x 3 discus discus 102 Nov 4 02:47 Eclipse.app
drwxr-xr-x 10 discus discus 340 Jan 23 18:06 configuration
lrwxrwxrwx 1 discus discus 34 Jan 23 17:48 eclipse -> Eclipse.app/Contents/MacOS/eclipse
-rw-r--r-- 1 discus discus 16536 Nov 4 02:47 epl-v10.html
drwxr-xr-x 104 discus discus 3536 Jan 23 17:50 features
-rw-r--r-- 1 discus discus 6506 Nov 4 02:47 notice.html
drwxr-xr-x 461 discus discus 15674 Jan 23 17:52 plugins
drwxr-xr-x 3 discus discus 102 Nov 4 02:47 readme
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$

※これが重要。
日本語化パッケージのconfiguration、features、pluginsの各ディレクトリ以下にある全ファイルをコピーする(注:ディレクトリごと上書きしないように!)

G5Server:/Volumes/ExtraDisk/Application/eclipse discus$ cp -Rf /Volumes/DiscusWork/temp/pleiades-all-in-one-java-wtp_20071121/configuration/*.* configuration
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$ cp -Rf /Volumes/DiscusWork/temp/pleiades-all-in-one-java-wtp_20071121/features/*.* features
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$ cp -Rf /Volumes/DiscusWork/temp/pleiades-all-in-one-java-wtp_20071121/plugins/*.* plugins
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$

※eclipse.iniを編集。

(configuration以下のelipse.iniではないので注意。)
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$ cat Eclipse.app/Contents/MacOS/eclipse.ini
-showsplash
org.eclipse.platform
-vmargs
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Xms40m
-Xmx512m
-XX:MaxPermSize=256m
-javaagent:/Volumes/ExtraDisk/Application/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=no.mnemonic
-Dosgi.requiredJavaVersion=1.5
-Dorg.eclipse.swt.internal.carbon.smallFonts


※細かいことは考えずにとりあえず、-cleanを付けて起動しちゃう。(日本語プラグイン追加後に一度だけ。)

G5Server:/Volumes/ExtraDisk/Application/eclipse discus$ 
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$ ./eclipse -clean &
[1] 1814
2008-01-23 18:06:41.005 eclipse[1704] [Java CocoaComponent compatibility mode]: Enabled
2008-01-23 18:06:41.005 eclipse[1704] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000

G5Server:/Volumes/ExtraDisk/Application/eclipse discus$
[1]+ Done ./eclipse -clean
G5Server:/Volumes/ExtraDisk/Application/eclipse discus$

上手くできました〜。 :)


Eclipse1 Eclipse2

Eclipse3

Eclipse4

最後の画像は、最初に

先日、OTN-Jのエントリに回答したのがきっかけで・・・、

と書いた”きっかけ”の話題に関連したおまけ・・・次回のエントリはそのネタにしようかと思う。

| | | コメント (0) | トラックバック (0)

2008年1月22日 (火)

24(テレビドラマではないよ)

Wigitize

24時間で作られたドットコムサイト『Wigitize』でも取り上げられていたのでいろいろ覗いてみたついでにWidgetを作って貼付けてみた。元からあるココログの「最近の記事」と比べても見劣りしないでしょ。
記事にもあるように24時間でどのようにしてWigitizeを構築していったのか、プロセスが細かく書かれていて実に面白い。


ココログオリジナルの「最新の記事」(左)とWigitizeで作って少々加工した「最新の記事」(右)
9 8

あ、24時間で作るといえば、Wif2008の予選会も24時間で与えられたテーマのWebデザインを完成させるのが条件でしたね。予選の作品が公開されたようです。。。Wif2008ネタは別エントリで。

日本からは8チームエントリしているように見えるが実際には5チームとのこと。
Wif2008_preselect

| | | コメント (0) | トラックバック (0)

2008年1月19日 (土)

WIF2008 - Webdesign International Festival - 予選終了

WIF2008 - Webdesign International Festivalの予選が終了したようだ。

高味氏ブログより引用


日本時間本日(19日)午後10時までにアップする予選参加チームのウェブサイトは以下の手順で見られます。

WIF2008オフィシャルサイトー「Competirion」ー「2008teams」


左下のチーム名別検索、国別検索で、チームをクリック、各チームに与えられたURLをクリック。

まだ全ての作品が公開されていないようなので明日の朝に覗いてみる事にしましょうかね。どんな作品があるか楽しみだ〜。

| | | コメント (0) | トラックバック (0)

WIF2008 - Webdesign International Festival

WIF2008 - ウェブデザイン国際フェスティバルの予選がスタートしたようだ。日本時間で今19日の10時だがページをみると後12時間余りで予選終了。

高味氏のブログによると国内からはオンライン参加で6チームがエントリしたとのこと。

予選のテーマは、"Water Is Life!"だとか。

Wif2008_1


以下に記載されている観点から審査されるとのこと。

Wif2008_2

| | | コメント (0) | トラックバック (0)

2008年1月17日 (木)

Sun が MySQLを買収

Sun、MySQLを買収

いや〜、驚きましたね!
PostgreSQLのサポートを提供しているSunですがMySQLを買収するとは。

InnoDBなどがOracleに買収されてしまい、なんとなくいやな雰囲気(Oracleさんも買収買収でバックマンになりはじめたねぇ〜と感じ始めていた)を感じていた今日このごろ。Sunによる買収なのでデータベースの世界もおもしろい状況になりそうな雰囲気を感じます。Falconの開発にも拍車がかかる事でしょうね。期待していますよ〜。:)

Oracle AppsLabのエントリでも書かれてますね - Acquisition Wednesday

| | | コメント (0) | トラックバック (0)

2008年1月13日 (日)

Mac de Ruby on Rails - #1

さて、ウチの奥さんから遅れること?年、rubyをやってみようかと思っていたんですが中々手が進まず、風邪をひいてデータベースを触っていないこの時期に少しでも進めてみようと思い立ち私のPowerBook G4で環境作り。
ただ元来データベース周りが得意分野なのでRubyそのものというよりRuby on Railsで遊ぶことに。。。
今のところはデータベースはSQLite3を利用する環境なのですが・・いずれはOracleと繋げる予定・・・。

というのも・・・

S/N Ratioより引用

先週開催されていたオラクルの年次カンファレンス「Oracle OpenWorld 2007」の開始に合わせて、新サービス「Oracle Mix」のベータがローンチしました。Oracle Mixは、ソーシャル ネットワーク、アイデア共有、グループ コラボレーション、Q&Aフォーラムなどの機能を提供しています。

Oracle Mixは、Oracle Applications (オラクルの業務アプリケーション製品群) の開発チーム内のグループ「Oracle AppsLab」と、Martin Fowlerが所属していることでも有名なThoughtWorksが協力して開発したサービスです。

なんて事もあり興味を持ったとうのもあるんですけどね。

ところで、Oracle AppsLabといえば・・・以前私のエントリがPingback(かな?)でAppsLabのエントリにトラックバックされていたっけ。。。(^^;;;

ちなみに、Oracle Mixに登録しちゃってます。。:)
Oraclemix

さて、前置きはこれくらいにして本題です。。

奥さんのMacBook Proは既にMac OS X LeopardなのでなにもしなくてもRuby on Railsは利用できるんですが、私のPowerBook G4はまだMac OS X Leopardへアップデートしてないんですよいろんな都合で。なのでインストール作業から・・・・・

RubyもRuby on Railsも初めてなので、ググったり奥さんが買っていた書籍などを参考に・・・PowerBook G4 1Ghz(1GB ram) MacOSX Tiger 10.4.11へRuby on Railsをインストールしてみた。

MacPortsがあると便利とのことなのでまずは、MacPorts 1.6.0のTiger版をダウンロード。あとはMacPorts-1.6.0-10.4-Tiger.dmgをダブルクリック、さらにMacPorts-1.6.0.pkgをダブルクリックしてインストールすればOK。
Macport


MacPortsなどは、/opt/local以下にインストールされる。(XCodeは事前にインストールしておくべし。)

Last login: Sat Jan 12 20:01:35 on ttyp1
Welcome to Darwin!
pb17:˜ discus$ cd /opt/local/bin
pb17:/opt/local/bin discus$ ls
daemondo port portf portindex portmirror
pb17:/opt/local/bin discus $ port -v
MacPorts 1.600
Entering interactive mode... ("help" for help, "quit" to quit)
[local/bin] > quit
Goodbye
pb17:/opt/local/bin discus $


次にMacPortsのアップデート。

pb17:/opt/local/bin discus$ sudo ./port -v selfupdate
Password:
Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/
receiving file list ... done
./
aqua/Affiche/
aqua/AppKiDo/
aqua/AquaLess/
aqua/ArpSpyX/

・・・・中略・・・・

zope/zope-zopezen/
zope/zope-zphotoslides/
zope/zope-zphotoslides/files/
zope/zope-zsyncer/

sent 74 bytes received 291810 bytes 20129.93 bytes/sec
total size is 16241925 speedup is 55.65

MacPorts base version 1.600 installed
receiving file list ... done

sent 73 bytes received 6617 bytes 2676.00 bytes/sec
total size is 3962384 speedup is 592.28

Downloaded MacPorts base version 1.600

The MacPorts installation is not outdated and so was not updated
selfupdate done!
pb17:/opt/local/bin discus$
pb17:/opt/local/bin discus$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]

MacOSX Tiger 10.4には、ruby 1.8.2は既にインストールされている。


環境変数 $PATHに/opt/local/binを追加。

pb17:/opt/local/bin discus $ echo $PATH
/opt/local/bin:/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/sbin

pb17:/opt/local/bin discus $ cd


次にRubyGemsパッケージ管理システムをMacPorts1.6を利用してインストール。インストール後には、Rubyも1.8.6へ更新されている。

pb17:˜ discus$ sudo port install rb-rubygems
Password:
---> Fetching expat
---> Attempting to fetch expat-2.0.1.tar.gz from http://downloads.sourceforge.net/expat
---> Verifying checksum(s) for expat

・・・・中略・・・・

---> Installing rb-rubygems 0.9.4_0
---> Activating rb-rubygems 0.9.4_0
---> Cleaning rb-rubygems
pb17:˜ discus$ ruby --version
ruby 1.8.6 (2007-09-23 patchlevel 110) [powerpc-darwin8.11.0]
pb17:˜ discus$


そしてRubyGemsでrailsをインストールしようとしたが、以下のようなエラーが発生して全くうまくいかない。。困った〜〜。

pb17:˜ discus$ sudo gem install rails --include-dependencies
Password:
/opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- sources (LoadError)
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/source_info_cache.rb:6
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/remote_installer.rb:12
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems.rb:112:in `manage_gems'
from /opt/local/bin/gem:10
pb17:˜ discus$


前述のエラーメッセージでググってみたら「ソースからインストールするとうまくいくよ!」という内容のエントリを発見。
/opt以下削除してから再度MacPortsのインストール及びアップデートからやり直し。(尚、$PATH環境変数へは。/opt/local/binは設定したまま)

pb17:˜ discus$ sudo port -v selfupdate
Password:
Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/
receiving file list ... done

sent 74 bytes received 291834 bytes 11447.37 bytes/sec
total size is 16241915 speedup is 55.64

MacPorts base version 1.600 installed
receiving file list ... done

sent 73 bytes received 6621 bytes 4462.67 bytes/sec
total size is 3962384 speedup is 591.93

Downloaded MacPorts base version 1.600

The MacPorts installation is not outdated and so was not updated
selfupdate done!


次に、RubyGems 0.9.4をインストール(1.0.1がリリースされていたが敢て、古いバージョンをインストール)
curlを使わなくてもいいんですが・・・とりあえずコマンドで作業を進めて行きます。(このエントリの後半で1.0.1へアップデートします。)

pb17:˜ discus$ curl -L -O http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 200k 100 200k 0 0 49807 0 0:00:04 0:00:04 --:--:-- 81744

pb17:˜ discus$ tar zxvf rubygems-0.9.4.tgz
rubygems-0.9.4/
rubygems-0.9.4/.document
rubygems-0.9.4/bin/
rubygems-0.9.4/bin/gem

・・・・中略・・・・

rubygems-0.9.4/test/user_capture.rb
rubygems-0.9.4/test/yaml_data.rb
rubygems-0.9.4/TODO
pb17:˜ discus$


解凍したら setup.rbを実行してRubyGems 0.9.4をインストール。

pb17:˜ discus$ cd rubygems-0.9.4
pb17:˜/rubygems-0.9.4 discus$ sudo ruby ./setup.rb
Password:
---> bin
<--- bin
---> lib
---> lib/rbconfig
<--- lib/rbconfig

・・・・中略・・・・

<--- lib
Successfully built RubyGem
Name: sources
Version: 0.0.1
File: sources-0.0.1.gem
Removing old RubyGems RDoc and ri...
Installing rubygems-0.9.4 ri...
Installing rubygems-0.9.4 rdoc...

As of RubyGems 0.8.0, library stubs are no longer needed.
Searching $LOAD_PATH for stubs to optionally delete (may take a while)...
...done.
No library stubs found.

pb17:˜/rubygems-0.9.4 discus$


ソースからインストールしたRubyGemsを使ってrailsをインストール・・・

pb17:˜/rubygems-0.9.4 discus$ sudo gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-2.0.2
Successfully installed rake-0.8.0
Successfully installed activesupport-2.0.2

・・・・中略・・・・

Installing RDoc documentation for actionpack-2.0.2...
Installing RDoc documentation for actionmailer-2.0.2...
Installing RDoc documentation for activeresource-2.0.2...
pb17:˜/rubygems-0.9.4 discus$ rails -v
Rails 2.0.2
pb17:˜/rubygems-0.9.4 discus$ cd
うまくいった〜〜。パチパチ。


ついでにSQLite3もインストール(こちらはMacPortsでインストールできた。)

pb17:˜ discus$ sudo port install sqlite3
---> Fetching gawk
---> Attempting to fetch gawk-3.1.5.tar.bz2 from http://ftp.gnu.org/gnu/gawk

・・・・中略・・・・

---> Installing sqlite3 3.5.4_0+darwin_8
---> Activating sqlite3 3.5.4_0+darwin_8
---> Cleaning sqlite3
pb17:˜ discus$


さらにSQLite3インターフェースのインストール

pb17:˜ discus$ sudo port install rb-sqlite3
Password:
---> Fetching rb-sqlite3
---> Attempting to fetch sqlite3-ruby-1.2.1.tar.bz2 from http://rubyforge.org/frs/download.php/17096/
---> Verifying checksum(s) for rb-sqlite3
---> Extracting rb-sqlite3
---> Configuring rb-sqlite3
---> Building rb-sqlite3 with target setup
---> Staging rb-sqlite3 into destroot
---> Installing rb-sqlite3 1.2.1_0
---> Activating rb-sqlite3 1.2.1_0
---> Cleaning rb-sqlite3
pb17:˜ discus$ sudo gem install sqlite3-ruby
Select which gem to install for your platform (powerpc-darwin8.11.0)
1. sqlite3-ruby 1.2.1 (mswin32)
2. sqlite3-ruby 1.2.1 (ruby)
3. sqlite3-ruby 1.2.0 (mswin32)
4. sqlite3-ruby 1.2.0 (ruby)
5. Skip this gem
6. Cancel installation
> 2
Building native extensions. This could take a while...
Successfully installed sqlite3-ruby-1.2.1
Installing ri documentation for sqlite3-ruby-1.2.1...
Installing RDoc documentation for sqlite3-ruby-1.2.1...
pb17:˜ discus$


インストールできたのでrailsアプリケーションの作成準備。


pb17:˜ discus$ cd /Volumes/Repository
pb17:/Volumes/Repository discus$ mkdir discus
pb17:/Volumes/Repository discus$ cd discus
pb17:/Volumes/Repository/discus discus$ rails rails-demo
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts

・・・・中略・・・・

create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
pb17:/Volumes/Repository/discus discus$
pb17:/Volumes/Repository/discus/rails-demo discus$ script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-01-13 22:59:27] INFO WEBrick 1.3.1
[2008-01-13 22:59:27] INFO ruby 1.8.6 (2007-09-23) [powerpc-darwin8.11.0]
[2008-01-13 22:59:27] INFO WEBrick::HTTPServer#start: pid=15815 port=3000
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET / HTTP/1.1" 200 7557-
-> /
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /favicon.ico HTTP/1.1" 200 0
http://localhost:3000/ -> /favicon.ico
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /javascripts/prototype.js HTTP/1.1" 200 125605
http://localhost:3000/ -> /javascripts/prototype.js
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /javascripts/effects.js HTTP/1.1" 200 38916
http://localhost:3000/ -> /javascripts/effects.js
127.0.0.1 - - [13/Jan/2008:23:01:02 JST] "GET /images/rails.png HTTP/1.1" 200 1787
http://localhost:3000/ -> /images/rails.png
127.0.0.1 - - [13/Jan/2008:23:01:33 JST] "GET /rails/info/properties HTTP/1.1" 200 920
http://localhost:3000/ -> /rails/info/properties
^C[2008-01-13 23:02:09] INFO going to shutdown ...
[2008-01-13 23:02:09] INFO WEBrick::HTTPServer#start done.
pb17:/Volumes/Repository/discus/rails-demo discus$

なんとかここまでできました〜〜。
Ror_demo2


最後に、はじめにも書いていましたがgemsを最新版にアップデートしておきます。

pb17:˜ discus$ gem -v
0.9.4
pb17:˜ discus$ sudo gem update --system
Updating RubyGems...
Attempting remote update of rubygems-update
Successfully installed rubygems-update-1.0.1
Updating version of RubyGems to 1.0.1
Installing RubyGems 1.0.1
install -c -m 0644 rbconfig/datadir.rb /opt/local/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb
install -c -m 0644 rubygems/builder.rb /opt/local/lib/ruby/site_ruby/1.8/rubygems/builder.rb
install -c -m 0644 rubygems/command.rb /opt/local/lib/ruby/site_ruby/1.8/rubygems/command.rb
install -c -m 0644 rubygems/command_manager.rb /opt/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb

・・・・中略・・・・

rm -rf /opt/local/lib/ruby/gems/1.8/doc/rubygems-0.9.4
Installing rubygems-1.0.1 ri into /opt/local/lib/ruby/gems/1.8/doc/rubygems-1.0.1/ri...
Installing rubygems-1.0.1 rdoc into /opt/local/lib/ruby/gems/1.8/doc/rubygems-1.0.1/rdoc...
As of RubyGems 0.8.0, library stubs are no longer needed.
Searching $LOAD_PATH for stubs to optionally delete (may take a while)...
...done.
No library stubs found.
RubyGems system software updated
pb17:˜ discus$ gem -v
1.0.1
pb17:˜ discus$

これでRubyGemsのアップデートもなんとか完了〜〜。ホッ。この続きは暇を見て調べながらやって行きましょうかね・・・・。


参考にしたサイトや書籍など。。
http://feeds.japan.cnet.com/~r/cnet/blog/kenn/~3/761095/
http://www.takezou.com/archives/2007/05/ror_install_on.html
http://i.loveruby.net/ja/projects/setup/doc/usage.html
http://mikilab.doshisha.ac.jp/dia/research/report/2006/1014/002/report20061014002.html
http://lapangan.net/darwinports/index.php?HowTo%2FUseMacPorts
http://rubyforge.org/
http://www.rubyonrails.org/down

| | | コメント (0) | トラックバック (0)

2008年1月12日 (土)

Dashboard Widget top50 - 2008/01/12

今週の火曜日から風邪をひいてしまった。

奥さんが2週間半前からひいていた風邪に感染してしまったようだ。奥さんが通院した病院と同じ病院なのでほぼ同じ処方をしてもらい早めの対処で4日目の今ではこうしてブログの更新ができるようになるまで回復。。(よかった〜。)

奥さんは咳が酷くなり2週間半たった今でもたまに咳をする。今年の風邪はほんとうに咳が長く続くようなので皆さんお気をつけくださいませ。私は咳はほとんど出てないのでこのまま完治しそう。ただ子供は多少鼻水が多くなってきたので注意して様子をみておこう。(食欲はあるので大丈夫そうだが。。。)

とにかく奥さんの風邪がインフルエンザでなくてよかったよ〜〜。。。。

となが〜〜い前置きは此のくらいで、Dashboard de Aquarium v1.1の現時点でのDashboard Widget Top50ランキング。昨日は、Top13に位置していた。。やはりそう簡単にはTop10入りしないよね。返り咲いたらうれしいけど。。
でもTop13ですからね。ダウンロードしてくださった方々ありがとうございます。

20080112top13

ちなみに、私のブログのDashboard de Aquarium v1.0v1.1のページのアクセス数をGoogle Analyticsで集計した結果、昨日の時点で17000アクセスを突破。(Google Analyticsを導入したのはDashboard de Aquarium v1.0リリース後1ヶ月ほどしてからなので実際にはもっと多いのですが。。)

| | | コメント (0) | トラックバック (0)

2008年1月 2日 (水)

初夢 - Mac Touchなんてね。

The Apple Colletcionというよく見てるサイトで見つけたんですが、こんなイメージのMulti-Touch対応 "Mac Touch"なんてのが出たらつい買っちゃうかも。。

The Apple Colletcionより引用。
MacBoardPro

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #17

「XMLマスター:プロフェッショナル(データベース) 試験」のサンプル問題がXML技術者育成推進委員会のサイトに掲載されている。
この問題の幾つかは直接XML DBを操作して確認することができる問題なのだが、それらの問題をOracle11g R1 11.1.0.6.0を利用して試す場合には次の2点には注意しておいたほうがよいだろう。

● 最初はSQL*Plusの仕様による影響。

SQL*PlusのXQueryコマンドで試す場合以下のように@がSQL*PlusのSTARTコマンとして実行されてしまう。
SCOTT> xquery
2 for $n in fn:doc("/public/scott/xml/example2.xml")/list
3 return
4 <codeList>
5 <code> {
6 @code
SP2-0310: ファイル"code.sql"をオープンできません。
6 .
SCOTT>

これを回避する方法は以前も紹介した方法でSQL*PlusのSTARTコマンドして実行されることを回避できる。

SCOTT> xquery
2 for $n in fn:doc("/public/scott/xml/example2.xml")/list
3 return
4 <codeList>
5 <code>{
6 (::) @code
7 }</code>
・・・以下省略・・・

「XMLマスター:プロフェッショナル(データベース) 試験のサンプル問題」の問題2をOracle11g R1 11.1.0.6.0で試す場合には忘れずに!


● もう一つはテキストノードのwhitespaceの取扱いに関するもの。

Oracle11g R1 11.1.0.6.0のXMLDBではテキストノードに対するwhitespaceの取扱いは常にstripであること。以下の例を見ていただければ一目瞭然。
ということで「XMLマスター:プロフェッショナル(データベース) 試験のサンプル問題」の問題3をOracle11g R1 11.1.0.6.0で実行した場合<space> </space>というノードの空白は削除されてしまうのでこれまたOracle11g R1ではそのような実装になっているということをお忘れなく。

SCOTT> !cat sample.xml
<?xml version="1.0" encoding="utf-8"?>
<space> </space>

SCOTT> declare
2 r boolean;
3 begin
4 r := dbms_xdb.createresource(
5 '/public/scott/xml/sample.xml',
6 bfilename('SCOTT_XMLDIR','sample.xml'),
7 nls_charset_id('AL32UTF8'));
8 commit;
9 end;
10 /

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> xquery
2 fn:doc("/public/scott/xml/sample.xml")/space
3 /

Result Sequence
--------------------------------------------------------------------------------
<space/>

SCOTT>


ちなみにオープンソースのSaxon Bではテキストノードのwhitespaceの扱いは指定可能なのでXMLマスタープロフェッショナル(データベース)のようなベンダー比依存の試験勉強の為だけであればSaxon Bを使ったほうが無難かもしれない。ただ、プロジェクトでOracle11g R1のXML DBを利用するのであればOracle11g R1を利用して検証したほうがいいのは言うまでもない。

以下、saxon 9.0.0J(saxon B 9.0.0.2のjava版)を利用して上記2点に関連する部分を実行した例

環境:MacOSX Server 10.4.11 Tiger

● SAXON B 9.0.0.2(java版)をダウンロード、unzipする。

今回は/User/Sharedで作業を行うことにした。Webブラウザでダウンロードしてもいいのだが折角なので全部コマンドで行っちゃいましょう。
curlコマンドSAXON B 9.0.0.2(Java版)をダウンロード後、unzip。

G5Server:˜ oracle$ java -version
java version "1.5.0_13"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-241)
Java HotSpot(TM) Client VM (build 1.5.0_13-121, mixed mode)
G5Server:˜ oracle$
G5Server:˜ oracle$ cd /Users/Shared/
G5Server:/Users/Shared oracle$
G5Server:/Users/Shared oracle$ curl -L -o saxonb9-0-0-2j.zip http://prdownloads.sourceforge.net/saxon/saxonb9-0-0-2j.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1862k 100 1862k 0 0 144k 0 0:00:12 0:00:12 --:--:-- 144k

G5Server:/Users/Shared oracle$ unzip saxonb9-0-0-2j.zip -d saxonb9-0-0-2j
Archive: saxonb9-0-0-2j.zip
inflating: saxonb9-0-0-2j/saxon9-ant.jar
inflating: saxonb9-0-0-2j/saxon9-dom.jar
inflating: saxonb9-0-0-2j/saxon9-dom4j.jar
inflating: saxonb9-0-0-2j/saxon9-jdom.jar
inflating: saxonb9-0-0-2j/saxon9-s9api.jar
inflating: saxonb9-0-0-2j/saxon9-sql.jar
inflating: saxonb9-0-0-2j/saxon9-xom.jar
inflating: saxonb9-0-0-2j/saxon9-xpath.jar
inflating: saxonb9-0-0-2j/saxon9-xqj.jar
inflating: saxonb9-0-0-2j/saxon9.jar
G5Server:/Users/Shared oracle$ cd saxonb9-0-0-2j


● XMLファイルとXQueryファイルを用意する。

前述したXMLマスタープロフェッショナル(データベース)試験のサンプル問題元にXMLファイルとXQueryファイルを準備しておく。
SAXON Bのコマンドラインでは直接XQueryを記述できずXQueryを記述したファイルを指定する必要がある為。)

G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ ll
total 10584
-rw-r--r-- 1 oracle wheel 444 Dec 31 17:38 example.xml
-rw-r--r-- 1 oracle wheel 40 Dec 31 17:38 query1.xql
-rw-r--r-- 1 oracle wheel 58 Dec 31 17:38 query2.xql
-rw-r--r-- 1 oracle wheel 199 Dec 31 17:38 query_a.xql
-rw-r--r-- 1 oracle wheel 188 Dec 31 17:38 query_b.xql
-rw-r--r-- 1 oracle wheel 204 Dec 31 17:38 query_c.xql
-rw-r--r-- 1 oracle wheel 189 Dec 31 17:38 query_d.xql
-rw-r--r-- 1 oracle wheel 57 Dec 31 17:38 result.xml
-rw-r--r-- 1 oracle wheel 108 Dec 31 17:38 sample.xml
-rw-r--r-- 1 oracle wheel 56 Dec 31 17:38 sample2.xml
-rw-r--r-- 1 oracle wheel 23963 Nov 30 14:35 saxon9-ant.jar
-rw-r--r-- 1 oracle wheel 110602 Nov 30 14:35 saxon9-dom.jar
-rw-r--r-- 1 oracle wheel 30000 Nov 30 14:35 saxon9-dom4j.jar
-rw-r--r-- 1 oracle wheel 32743 Nov 30 14:35 saxon9-jdom.jar
-rw-r--r-- 1 oracle wheel 110818 Nov 30 14:35 saxon9-s9api.jar
-rw-r--r-- 1 oracle wheel 45598 Nov 30 14:35 saxon9-sql.jar
-rw-r--r-- 1 oracle wheel 45218 Nov 30 14:35 saxon9-xom.jar
-rw-r--r-- 1 oracle wheel 43536 Nov 30 14:35 saxon9-xpath.jar
-rw-r--r-- 1 oracle wheel 173255 Nov 30 14:35 saxon9-xqj.jar
-rw-r--r-- 1 oracle wheel 4737705 Nov 30 14:35 saxon9.jar
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$


● SAXON BのXQueryのコマンド形式は以下のようにして確認できます。

G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query -?
Saxon 9.0.0.2J from Saxonica
Usage: java net.sf.saxon.Query [options] query {param=value}...
Options:
-cr:classname Use specified CollectionURIResolver class
-dtd:on|off Validate using DTD
-expand:on|off Expand defaults defined in schema/DTD
-explain[:filename] Display compiled expression tree
-ext:[on|off] Allow|Disallow external Java functions
-l:on|off Line numbering for source document
-mr:classname Use specified ModuleURIResolver class
-o:filename Send output to named file
-outval:recover|fatal Handling of validation errors on result document
-p Recognize Saxon file extensions and query parameters
-pipe:push|pull Execute internally in push or pull mode
-projection:[on|off] Use|Don't use source document projection
-r:classname Use URIResolver class
-repeat:N Repeat N times for performance measurement
-s:file|URI Provide initial context document
-sa Schema-aware query (requires Saxon-SA)
-strip:all|none|ignorable Strip whitespace text nodes
-t Display version and timing information
-tree:tiny|linked Select tree model
-T[:classname] Use TraceListener class
-TJ Trace calls to external Java functions
-u Names are URLs not filenames
-val:strict|lax Validate using schema
-wrap:on|off Wrap result sequence in XML elements
-x:classname Parser (XMLReader) used for source files
-xi:on|off Expand XInclude on all documents
-xmlversion:1.0|1.1 Version of XML to be handled
-? Display this message
param=value Set query string parameter
+param=value Set query document parameter
!option=value Set serialization option
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$

SAXON B「XMLマスター:プロフェッショナル(データベース) 試験のサンプル問題」の問題2を試す。

G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ cat example.xml
<?xml version="1.0" encoding="utf-8"?>
<logList>
<list code="w001" message="警告1"/>
<list code="w002" message="警告2"/>
<list code="e001" message="エラー1"/>
<list code="e002" message="エラー2"/>
<day date="2007-12-01">
<log time="10:00:00" code="w001"/>
<log time="14:00:00" code="e001"/>
</day>
<day date="2007-12-02">
<log time="13:00:00" code="e002"/>
<log time="15:00:00" code="e001"/>
</day>
</logList>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ cat -n query_a.xql
1 <result>{
2 let $doc := fn:doc("example.xml")
3 for $log in $doc//log
4 return
5 <log>{
6 $log/../@date,
7 $log/@time,
8 $doc//list[@code eq $log/@code]/@message
9 }</log>
10 }</result>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query query_a.xql
<?xml version="1.0" encoding="UTF-8"?>
<result>
<log date="2007-12-01" time="10:00:00" message="警告1"/>
<log date="2007-12-01" time="14:00:00" message="エラー1"/>
<log date="2007-12-02" time="13:00:00" message="エラー2"/>
<log date="2007-12-02" time="15:00:00" message="エラー1"/>
</result>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ cat -n query_b.xql
1 <result>{
2 let $doc := fn:doc("example.xml")
3 for $log in $doc//log
4 return
5 <log>{
6 ../@date,
7 @time,
8 ../../list[@code = $log/@code]/@message
9 }</log>
10 }</result>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query query_b.xql
Error on line 6 of file:/Users/Shared/saxonb9-0-0-2j/query_b.xql:
XPDY0002: The context item is not set
Query processing failed: Run-time errors were reported
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ cat -n query_c.xql
1 <result>{
2 let $doc := fn:doc("example.xml")
3 for $day in $doc//day
4 return
5 <log>{
6 $day/@date,
7 $day/log/@time,
8 $doc//list[@code eq $day/log/@code]/@message
9 }</log>
10 }</result>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query query_c.xql
Error on line 7 of file:/Users/Shared/saxonb9-0-0-2j/query_c.xql:
XQDY0025: Cannot create an element having two attributes with the same name: @time
Query processing failed: Run-time errors were reported
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ cat -n query_d.xql
1 <result>{
2 let $doc := fn:doc("example.xml")
3 for $day in $doc//day
4 return
5 <log>{
6 @date,
7 log/@time,
8 ../list[@code = $day/log/@code]/@message
9 }</log>
10 }</result>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query query_d.xql
Error on line 6 of file:/Users/Shared/saxonb9-0-0-2j/query_d.xql:
XPDY0002: The context item for axis step attribute::attribute(date, xs:anyAtomicType) is undefined
Query processing failed: Run-time errors were reported


SAXON Bではテキストノードのwhitespaceの取扱いを-stripオプションで指示できる。

G5Server:/Users/shared/saxonb9-0-0-2j oracle$ cat -n sample2.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <space> </space>
G5Server:/Users/shared/saxonb9-0-0-2j oracle$ cat -n query2.xql
1 fn:doc("sample2.xml")/space
G5Server:/Users/shared/saxonb9-0-0-2j oracle$
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query query2.xql
<?xml version="1.0" encoding="UTF-8"?>
<space> </space>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query -strip:all query2.xql
<?xml version="1.0" encoding="UTF-8"?>
<space/>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query -strip:none query2.xql
<?xml version="1.0" encoding="UTF-8"?>
<space> </space>
G5Server:/Users/Shared/saxonb9-0-0-2j oracle$ java -cp saxon9.jar net.sf.saxon.Query -strip:ignorable query2.xql
<?xml version="1.0" encoding="UTF-8"?>
<space> </space>




● バックナンバー
Oracle de XMLDB #1
Oracle de XMLDB #2
Oracle de XMLDB #3 - Oracle10g XEではどうよ?
Oracle de XMLDB #4
Oracle de XMLDB #5 - Oracle11g環境再構築完了
Oracle de XMLDB #6 - Linux x86版再び。
Oracle de XMLDB #7 - 何かが違う!?
Oracle de XMLDB #8 - またまた少々脱線
Oracle de XMLDB #9 - またまた少々脱線の続き
Oracle de XMLDB #10 - 三度脱線
Oracle de XMLDB #11 - 三度脱線のおまけ
Oracle de XMLDB #12
Oracle de XMLDB #13
Oracle de XMLDB #14
Oracle de XMLDB #15
Oracle de XMLDB #16

| | | コメント (0) | トラックバック (0)

2007年12月24日 (月)

MyMiniCity - DISCUS HAMBURG #3

MyMiniCityのブログパーツがないのでいろいろと試し無理矢理ブログパーツとしてサイドバーに貼付けてみた。

常に最新の状態が表示されるわけではなくメンテナンスは手動なのだが、まあ無いよりましなので当面はこれでいこうかと。。

| | | コメント (0) | トラックバック (0)

2007年12月22日 (土)

Oracle Magazine is now available on the Apple iPhone.

Oracle Magazine January/February 2008 の案内が来たので見てみると、Oracle Magazine is now available on the Apple iPhone. という文字が目にはいった。

5



ん〜〜〜〜、あ、そうだ、Safari3のdebugメニューを使ってUser-AgentをMobile Safari1.0にしたら見えるかもしれない......

4


あ〜〜〜ダメなのね、User-Agentの問題ではないのか。。。
6

まぁいいや、通常DIGITAL EDITIONが見れれば。
7

| | | コメント (0) | トラックバック (0)

2007年12月18日 (火)

WIF 2008 - ウェブデザイン国際フェスティバル

なんでもフランスのリモージュで開催されるWIF (Webdesign International Festival) 2008 - ウェブデザイン国際フェスティバルの国内予選の参加者を募集しているとのこと。

腕?、感性?に自信のある方、チャレンジしてみてはどうだろうか?


6


ただ国内予選エントリの締め切りが2008年1月17日 PM6:00とのことなので興味のあるかたは先にスケジュール決めちゃう方がいいかもしれない、なにせ締め切りまであと一ヶ月なので。。
(今回はウチの奥さん共々よくブログを拝見させていただいている多摩美の高味氏が日本国内オーガナイザーを務めるとのこと。盛り上がるといいですね。:-)

ーー関連記事ーー
http://compe.japandesign.ne.jp/ap/01/degi/wif2008/
http://www.designtope.net/today/articles/406/

ーーFlickr Photosーー
http://www.flickr.com/photos/9365390@N05/show/


| | | コメント (0) | トラックバック (0)

2007年12月17日 (月)

Oracle de XMLDB #16

Oracle de XMLDB #13でも書いたxquery宣言のencodingがサポートされていないということも含めてOracle11g R1の以下マニュアルに記載されているので要確認。(備忘録)

Oracle® XML DB Developer's Guide 11g Release 1 (11.1) - Oracle XML DB Support for XQuery

前述のマニュアルにも記載されているが、boundary-spaceは未サポートとか。とりあえず試してみる。

Last login: Sun Dec 16 14:15:06 on console
Welcome to Darwin!
G5Server:˜ discus$ su - oracle
Password:
G5Server:˜ oracle$ ssh oracle@corydoras
oracle@corydoras's password:
Last login: Sat Dec 15 19:59:13 2007 from 192.168.1.19
[oracle@corydoras ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 日 12月 16 18:03:04 2007

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

> conn scott/tiger
接続されました。
SCOTT> set sqlterm off
SCOTT> set long 4000
SCOTT> set pagesize 1000
SCOTT> xquery
2 declare boundary-space preserve;
3 <result>
4 {
5 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
6 return
7 <greeting> { fn:concat("Hello, ", $i/text())
8 } </greeting>
9* } </result>
10 /
ERROR:
ORA-19107: 無効なXQueryX - 構成がサポートされていません - boundary-space preserve declaration

SCOTT> edit
file afiedt.bufが書き込まれました。

1 xquery
2 declare boundary-space strip;
3 <result>
4 {
5 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
6 return
7 <greeting> { fn:concat("Hello, ", $i/text())
8 } </greeting>
9* } </result>
SCOTT> /

Result Sequence
--------------------------------------------------------------------------------
<result><greeting>Hello, 03-1234-5555</greeting><greeting>Hello, 090-4321-7878</
greeting><greeting>Hello, 070-7777-8798</greeting><greeting>Hello, 06-1234-5555<
/greeting><greeting>Hello, 06-6860-0001</greeting><greeting>Hello, 090-6666-7878
</greeting><greeting>Hello, 080-9999-8798</greeting><greeting>Hello, 06-6860-000
1</greeting><greeting>Hello, 090-0066-0108</greeting><greeting>Hello, 090-3020-2
897</greeting></result>


SCOTT>

Oracle11g R1 11.6.0.1.0のXQueryでは、boundary-space preserveが未サポートということでboundary-space stripで処理しているということなんだね。




● バックナンバー
Oracle de XMLDB #1
Oracle de XMLDB #2
Oracle de XMLDB #3 - Oracle10g XEではどうよ?
Oracle de XMLDB #4
Oracle de XMLDB #5 - Oracle11g環境再構築完了
Oracle de XMLDB #6 - Linux x86版再び。
Oracle de XMLDB #7 - 何かが違う!?
Oracle de XMLDB #8 - またまた少々脱線
Oracle de XMLDB #9 - またまた少々脱線の続き
Oracle de XMLDB #10 - 三度脱線
Oracle de XMLDB #11 - 三度脱線のおまけ
Oracle de XMLDB #12
Oracle de XMLDB #13
Oracle de XMLDB #14
Oracle de XMLDB #15

| | | コメント (0) | トラックバック (0)

2007年12月16日 (日)

Pascal ?

アクセスログの検索フレーズを眺めていたらThink Pascalの文字が!

な・・・・な・なんとなつかしい響き、Think Pascal。

Think Pascal自体はClassic環境でしか動かないと思うけど、まだ使っている方いるのですかね?
私も漢字Talkのころは使ってましたよ。Think Pascal。

という思いで話はさておき、Think Pascalってどうなってんだろうと、ググって見たら。


親近感を持つサイト名が。

Mac de Pascal

ただ更新日は少々古くて、2004年の情報が最後みたいですね。と。。。リンクをたどるとGNU Pascalとあるな・・

GNU Pascal for MacOSXなるサイトでは、Tiger向けしかもPPC/Intelクロスコンパイラまであるみたい。。。

私自身はもうPascalでプログラミングすることはないとは思いますが、とりあえず備忘録として。

2007/12/17追記。
GNU Pascal以外にもFree Pascalもあるようだ、こちらは多数のプラットフォームにも対応しているようだ。

Free_pascal


おまけ、ちょっと物置の奥を捜してみたらThink Pascalじゃなくて、Symantec C/C++が出てきた。懐かしいので、記念写真を!
Sc0017a6d2 Sc0017bd43

| | | コメント (0) | トラックバック (0)

Safari3 - Inline find(インライン検索)

MacOSX 10.4 TigerでもSafari3にアップデートしたのですが、インライン検索結果が見やすいし、私好みのUI。

Safari3_inline_find

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #15

さて、まだ脱線は続きます。(いつ戻るんだ〜〜!)

Oracle de XMLDB #13でXqueryのencodingが指定できないと書いたが、どうしても文字コードを変えたい場合はどうするんだろうか?

思い出したのがOracle de XMLDB #7 - 何かが違うでも書いたクライアント側のNLS_LANG環境変数で制御する方法。




● バックナンバー
Oracle de XMLDB #1
Oracle de XMLDB #2
Oracle de XMLDB #3 - Oracle10g XEではどうよ?
Oracle de XMLDB #4
Oracle de XMLDB #5 - Oracle11g環境再構築完了
Oracle de XMLDB #6 - Linux x86版再び。
Oracle de XMLDB #7 - 何かが違う!?
Oracle de XMLDB #8 - またまた少々脱線
Oracle de XMLDB #9 - またまた少々脱線の続き
Oracle de XMLDB #10 - 三度脱線
Oracle de XMLDB #11 - 三度脱線のおまけ
Oracle de XMLDB #12
Oracle de XMLDB #13
Oracle de XMLDB #14


●このテスト環境の文字エンコーディングの概略図
NLS_LANG環境変数を変換したい文字コードへ変更すればうまく変換できるはず・・・・


Diagram_encoding

● まずは全てUTF-8で統一させている場合の例から。

MacOSXのterminalの文字エンコーディングもUTF-8にすることをお忘れなく。
Utf8


> conn scott/tiger
接続されました。
SCOTT> !echo $NLS_LANG
japanese_japan.AL32UTF8

SCOTT> set sqlterm off
SCOTT> set pagesize 1000
SCOTT> set long 4000
SCOTT>
SCOTT> select
2 xmlquery(
3 'xquery version "1.0";
4 <result>
5 {
6 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
7 return $i
8 }
9 </result>'
10 returning content
11 )
12 from
13* dual
SCOTT> /

XMLQUERY('XQUERYVERSION"1.0";<RESULT>{FOR$IINFN:DOC("/PUBLIC/SCOTT/XML/ADDRESSLI
--------------------------------------------------------------------------------
<result><電話番号 区分="自宅">03-1234-5555</電話番号>
<電話番号 区分="携帯">090-4321-7878</電話番号>
<電話番号 区分="携帯">070-7777-8798</電話番号>
<電話番号 区分="自宅">06-1234-5555</電話番号>
<電話番号 区分="会社">06-6860-0001</電話番号>
<電話番号 区分="携帯">090-6666-7878</電話番号>
<電話番号 区分="携帯">080-9999-8798</電話番号>
<電話番号 区分="会社">06-6860-0001</電話番号>
<電話番号 区分="携帯">090-0066-0108</電話番号>
<電話番号 区分="携帯">090-3020-2897</電話番号>
</result>

SCOTT> exit


● クライアント側のNLS_LANG=japanese_japan.JA16SJISTILDE、MacOSXのTerminalの文字エンコーディングもShift_JISへ変更して実行する。

Sjis

[oracle@corydoras ˜]$ export NLS_LANG=japanese_japan.JA16SJISTILDE
[oracle@corydoras ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 金 12月 14 23:10:29 2007

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

> conn scott/tiger
接続されました。

SCOTT> !echo $NLS_LANG
japanese_japan.JA16SJISTILDE

SCOTT> set sqlterm off
SCOTT> set pagesize 1000
SCOTT> set long 4000
SCOTT>
SCOTT> select
2 xmlquery(
3 'xquery version "1.0";
4 <result>
5 {
6 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
7 return $i
8 }
9 </result>'
10 returning content
11 )
12 from
13* dual
SCOTT> /

XMLQUERY('XQUERYVERSION"1.0";<RESULT>{FOR$IINFN:DOC("/PUBLIC/SCOTT/XML/ADDRESSLI
--------------------------------------------------------------------------------
<result><電話番号 区分="自宅">03-1234-5555</電話番号>
<電話番号 区分="携帯">090-4321-7878</電話番号>
<電話番号 区分="携帯">070-7777-8798</電話番号>
<電話番号 区分="自宅">06-1234-5555</電話番号>
<電話番号 区分="会社">06-6860-0001</電話番号>
<電話番号 区分="携帯">090-6666-7878</電話番号>
<電話番号 区分="携帯">080-9999-8798</電話番号>
<電話番号 区分="会社">06-6860-0001</電話番号>
<電話番号 区分="携帯">090-0066-0108</電話番号>
<電話番号 区分="携帯">090-3020-2897</電話番号>
</result>


これではなんとなく分かりずらいですね。ということで結果をHTMLへスプールして確認してみましょう。

SCOTT> set markup html on spool on
SCOTT> set echo off
<br>
SCOTT> spool result.html
<br>
SCOTT> /
<br>

・・・・・中略・・・・・

SCOTT> spo off
<br>
SCOTT> set markup html off
<br>
SCOTT> set echo on
SCOTT> !cat result.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
<meta name="generator" content="SQL*Plus 11.1.0">
<style type="text/css">
body {font:10pt Arial,Helvetica,sans-serif;
color:black; background:White;}
p {font:10pt Arial,Helvetica,sans-serif;
color:black; background:White;}
table,tr,td {font:10pt Arial,Helvetica,sans-serif;
color:Black; background:#f7f7e7;
padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;}
th {font:bold 10pt Arial,Helvetica,sans-serif;
color:#336699; background:#cccc99; padding:0px 0px 0px 0px;}
h1 {font:16pt Arial,Helvetica,Geneva,sans-serif;
color:#336699; background-color:White;
border-bottom:1px solid #cccc99;
margin-top:0pt; margin-bottom:0pt;
padding:0px 0px 0px 0px;}
h2 {font:bold 10pt Arial,Helvetica,Geneva,sans-serif;
color:#336699; background-color:White;
margin-top:4pt; margin-bottom:0pt;}
a {font:9pt Arial,Helvetica,sans-serif;
color:#663300; background:#ffffff;
margin-top:0pt; margin-bottom:0pt; vertical-align:top;}
</style>
<title>
SQL*Plus レポート
</title>
</head>
<body>
SCOTT> /
<br>
<p>
<table border="1" width="90%" summary="Script output">
<tr>
<th scope="col">
XMLQUERY('XQUERYVERSION"1.0";<RESULT>{FOR$IINFN:DOC("/PUBLIC/SCOTT/XML/ADDRESSLI
</th>
</tr>
<tr>
<td>
<result><電話番号 区分="自宅">03-1234-5555</電話番号>
<電話番号 区分="携帯">090-
4321-7878</電話番号>
<電話番号 区分="携帯">070-7777-8798</電話番号>
<電話番号 区
分="自宅">06-1234-5555</電話番号>
<電話番号 区分="会社">06-6860-0001</電話番号>

<電話番号 区分="携帯">090-6666-7878</電話番号>
<電話番号 区分="携帯">080-9999-87
98</電話番号>
<電話番号 区分="会社">06-6860-0001</電話番号>
<電話番号 区分="携帯
">090-0066-0108</電話番号>
<電話番号 区分="携帯">090-3020-2897</電話番号>
</resu
lt>
</td>
</tr>
</table>
<p>

SCOTT> spo off
<br>
</body>
</html>

SCOTT>

SQL*PlusでHTMLとして結果をSPOOLするコマンドがありますが、その機能を利用して文字エンコーディングがShift_JISになっているか確認しています。(太字で赤色で強調してある部分)
うまくShift_JISへ変換できているようです。
NLS_LANG環境変数で制御するしかないのはかなりトリッキーではあるけれど・・・)

| | | コメント (0) | トラックバック (0)

2007年12月15日 (土)

Dashboard Widget Top50 - 2007/12/15

Dashboard de Aquarium v1.1のApple Dashboard Widget Top50ランキングで久々のTop11入り。(日本時間2007/12/15現在)

Top10目前。ワクワクドキドキ!

Dashboard_de_aquarium_v1_1_20071215

| | | コメント (0) | トラックバック (0)

2007年12月14日 (金)

Oracle de XMLDB #14

またXMLマスタープロフェッショナル(DB)試験ネタからは少々脱線している・・・。と気付きつつも、気になるとやらずに居られない性分なので。



● バックナンバー

Oracle de XMLDB #1

Oracle de XMLDB #2

Oracle de XMLDB #3 - Oracle10g XEではどうよ?

Oracle de XMLDB #4

Oracle de XMLDB #5 - Oracle11g環境再構築完了

Oracle de XMLDB #6 - Linux x86版再び。

Oracle de XMLDB #7 - 何かが違う!?

Oracle de XMLDB #8 - またまた少々脱線

Oracle de XMLDB #9 - またまた少々脱線の続き

Oracle de XMLDB #10 - 三度脱線

Oracle de XMLDB #11 - 三度脱線のおまけ

Oracle de XMLDB #12

Oracle de XMLDB #13


前々回にも書いたがSQL*Plusでは、";"を入力してしまうとそれまで入力したSQL文を実行してくれる。

ただ、SQL文や、XQueryコマンドの実行には問題ないのだが、SQL/XMLでは少々困った問題を引き起こすんです。

以下の例をご覧ください。

> conn scott/tiger
接続されました。
SCOTT>
SCOTT>
SCOTT> select
2 xmlquery(
3 'xquery version "1.0";
ERROR:
ORA-01756: 引用符付き文字列が正しく終了していません

そうなんです!。
xmlquery()関数内あっても ";"(セミコロン)を入力する必要があるのですが、入力した時点で実行しようとしてしまうんです。(><)

これには困りました!。

無理矢理な対処として、エラーになっても気にせず前述のように入力後、SQL*Plusのeditコマンドで編集する方法もありますが、今回はマニュアル Oracle® XML DB Developer's Guide 11g Release 1 (11.1) - Using Namespaces with XQueryにも書かれている方法でやってみましょう。

● ";"(セミコロン)の後にXQeuryのコメントを付加する方法

SCOTT> 
SCOTT> select
2 xmlquery(
3 'xquery version "1.0"; (::)
4 declare namespace mo = "http://192.168.1.20/my_namespace"; (::)
5 declare function mo:phoneNumber($phone)
6 {
7 $phone/text()
8 }; (::)
9 (: query body :)
10 <result>
11 {
12 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
13 return
14 <greeting>
15 { fn:concat("Hello, ", mo:phoneNumber($i)) }
16 </greeting>
17 }
18 </result>'
19 returning content
20 )
21 from
22 dual
23 .
SCOTT> /

XMLQUERY('XQUERYVERSION"1.0";(::)DECLARENAMESPACEMO="HTTP://192.168.1.20/MY_NAME
--------------------------------------------------------------------------------
<result><greeting>Hello, 03-1234-5555</greeting><greeting>Hello, 090-4321-7878</
greeting><greeting>Hello, 070-7777-8798</greeting><greeting>Hello, 06-1234-5555<
/greeting><greeting>Hello, 06-6860-0001</greeting><greeting>Hello, 090-6666-7878
</greeting><greeting>Hello, 080-9999-8798</greeting><greeting>Hello, 06-6860-000
1</greeting><greeting>Hello, 090-0066-0108</greeting><greeting>Hello, 090-3020-2
897</greeting></result>


SCOTT>


● 次は、";"(セミコロン)を無視させる方法。

SCOTT> set sqlterm off
SCOTT> select
2 xmlquery(
3 'xquery version "1.0";
4 declare namespace mo = "http://192.168.1.20/my_namespace";
5 declare function mo:phoneNumber($phone)
6 {
7 $phone/text()
8 };
9 (: query body :)
10 <result>
11 {
12 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
13 return
14 <greeting>
15 { fn:concat("Hello, ", mo:phoneNumber($i)) }
16 </greeting>
17 }
18 </result>'
19 returning content
20 )
21 from
22 dual
23 .
SCOTT> /

XMLQUERY('XQUERYVERSION"1.0";DECLARENAMESPACEMO="HTTP://192.168.1.20/MY_NAMESPAC
--------------------------------------------------------------------------------
<result><greeting>Hello, 03-1234-5555</greeting><greeting>Hello, 090-4321-7878</
greeting><greeting>Hello, 070-7777-8798</greeting><greeting>Hello, 06-1234-5555<
/greeting><greeting>Hello, 06-6860-0001</greeting><greeting>Hello, 090-6666-7878
</greeting><greeting>Hello, 080-9999-8798</greeting><greeting>Hello, 06-6860-000
1</greeting><greeting>Hello, 090-0066-0108</greeting><greeting>Hello, 090-3020-2
897</greeting></result>


SCOTT>

SQL/XMLやXQueryを実行する場合には、SET SQLTERMINATOR OFFを使って ";"を無視させた方が便利で簡単ですね。

| | | コメント (0) | トラックバック (0)

2007年12月13日 (木)

Oracle de XMLDB #13

● バックナンバー
Oracle de XMLDB #1
Oracle de XMLDB #2
Oracle de XMLDB #3 - Oracle10g XEではどうよ?
Oracle de XMLDB #4
Oracle de XMLDB #5 - Oracle11g環境再構築完了
Oracle de XMLDB #6 - Linux x86版再び。
Oracle de XMLDB #7 - 何かが違う!?
Oracle de XMLDB #8 - またまた少々脱線
Oracle de XMLDB #9 - またまた少々脱線の続き
Oracle de XMLDB #10 - 三度脱線
Oracle de XMLDB #11 - 三度脱線のおまけ
Oracle de XMLDB #12


さて、前回SQL*PlusのXQueryコマンドのXQuery宣言ではversion及びencodingが指定できなかったり、先頭行にコメントが書けなかったがSQL/XMLのxmlquery()関数内ではどうなのか確認しておく。
環境はいつものとおり、Oracle11g EE R1 11.1.0.6.0 for Linux x86へMacOSXのTerminalからssh接続して行った。

Last login: Thu Dec 13 07:54:08 on console
Welcome to Darwin!
G5Server:˜ discus$ su - oracle
Password:
G5Server:˜ oracle$ ssh oracle@corydoras
oracle@corydoras's password:
Last login: Wed Dec 12 21:21:43 2007 from 192.168.1.19
[oracle@corydoras ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 木 12月 13 17:03:36 2007

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

> conn scott/tiger
接続されました。
SCOTT> l
1 select
2 xmlquery(
3 'xquery version "1.0" encoding "utf-8";
4 declare namespace mo = "http://192.168.1.20/my_namespace";
5 declare function mo:phoneNumber($phone)
6 {
7 $phone/text()
8 };
9 (: Query body :)
10 <result>
11 {
12 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
13 return
14 <greeting>
15 { fn:concat("Hello, ", mo:phoneNumber($i)) }
16 </greeting>
17 }
18 </result>'
19 returning content
20 )
21 from
22 dual
SCOTT> /
dual
*
行22でエラーが発生しました。:
ORA-19284: バージョン宣言におけるエンコーディング指定はサポートされていません

xmlquery()関数では、SQL*PlusのXQueryコマンドとは異なりencodingは指定できないがversionだけは指定できるようだ。

SCOTT> edit
file afiedt.bufが書き込まれました。

1 select
2 xmlquery(
3 'xquery version "1.0";
4 declare namespace mo = "http://192.168.1.20/my_namespace";
5 declare function mo:phoneNumber($phone)
6 {
7 $phone/text()
8 };
9 (: Query body :)
10 <result>
11 {
12 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
13 return
14 <greeting>
15 { fn:concat("Hello, ", mo:phoneNumber($i)) }
16 </greeting>
17 }
18 </result>'
19 returning content
20 )
21 from
22* dual
SCOTT> /

XMLQUERY('XQUERYVERSION"1.0";DECLARENAMESPACEMO="HTTP://192.168.1.20/MY_NAMESPAC
--------------------------------------------------------------------------------
<result><greeting>Hello, 03-1234-5555</greeting><greeting>Hello, 090-4321-7878</
greeting><greeting>Hello, 070-7777-8798</greeting><greeting>Hello, 06-1234-5555<
/greeting><greeting>Hello, 06-6860-0001</greeting><greeting>Hello, 090-6666-7878
</greeting><greeting>Hello, 080-9999-8798</greeting><greeting>Hello, 06-6860-000
1</greeting><greeting>Hello, 090-0066-0108</greeting><greeting>Hello, 090-3020-2
897</greeting></result>


SCOTT>


ではSQL*PlusのXQueryコマンドでは先頭行がコメントである場合、XQueryとは解釈されずSQL文として解釈されてしまっていたがxmlquery()関数ではそのような書き方でも問題はない。
SQL*PlusのXQueryコマンドは、XQuery宣言ではなく、SQL*PlusのXQueryコマンドだということを忘れないようにしたい。(混乱しそうだが。。。。)

SCOTT> edit
file afiedt.bufが書き込まれました。

1 select
2 xmlquery(
3 '(: コメントを先頭に :)
4 xquery version "1.0";
5 declare namespace mo = "http://192.168.1.20/my_namespace";
6 declare function mo:phoneNumber($phone)
7 {
8 $phone/text()
9 };
10 (: Query body :)
11 <result>
12 {
13 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
14 return
15 <greeting>
16 { fn:concat("Hello, ", mo:phoneNumber($i)) }
17 </greeting>
18 }
19 </result>'
20 returning content
21 )
22 from
23* dual
SCOTT> /

XMLQUERY('(:コメントを先頭に:)XQUERYVERSION"1.0";DECLARENAMESPACEMO="HTTP://192.
--------------------------------------------------------------------------------
<result><greeting>Hello, 03-1234-5555</greeting><greeting>Hello, 090-4321-7878</
greeting><greeting>Hello, 070-7777-8798</greeting><greeting>Hello, 06-1234-5555<
/greeting><greeting>Hello, 06-6860-0001</greeting><greeting>Hello, 090-6666-7878
</greeting><greeting>Hello, 080-9999-8798</greeting><greeting>Hello, 06-6860-000
1</greeting><greeting>Hello, 090-0066-0108</greeting><greeting>Hello, 090-3020-2
897</greeting></result>


SCOTT>

| | | コメント (0) | トラックバック (0)

iTunesベストオブ2007 100曲プレゼントキャンペーン

7

2007年12月12日午前0時00分から2008年1月8日午後23時59分までiTunesベストオブ2007 100曲プレゼントキャンペーンをやっているようだ。運試しに応募しておくか!

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #12

● バックナンバー
Oracle de XMLDB #1
Oracle de XMLDB #2
Oracle de XMLDB #3 - Oracle10g XEではどうよ?
Oracle de XMLDB #4
Oracle de XMLDB #5 - Oracle11g環境再構築完了
Oracle de XMLDB #6 - Linux x86版再び。
Oracle de XMLDB #7 - 何かが違う!?
Oracle de XMLDB #8 - またまた少々脱線
Oracle de XMLDB #9 - またまた少々脱線の続き
Oracle de XMLDB #10 - 三度脱線
Oracle de XMLDB #11 - 三度脱線のおまけ


DB Magazineに連載されていたXMLマスター実践講座 プロフェッショナル(DB)試験対応 第2回 XQueryの概要にあるLIST1:サンプルのXqueryとほぼ同じクエリをOracle11g R1(Linux x86)のSQL*Plusで試してみる。

Last login: Wed Dec 12 22:18:10 on ttyp1
Welcome to Darwin!
G5Server:˜ discus$ su - oracle
Password:
G5Server:˜ oracle$
G5Server:˜ oracle$ ssh oracle@corydoras
oracle@corydoras's password:
Last login: Wed Dec 12 23:03:58 2007 from 192.168.1.19
[oracle@corydoras ˜]$
[oracle@corydoras ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 水 12月 12 23:04:46 2007

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

●まず、addresslist.xmlファイルをOracle XDBリポジトリへ事前に登録しておく。
簡単なXQueryで問い合わせ内容を確認しておきましょう。

> conn scott/tiger
接続されました。
SCOTT>
SCOTT> set long 4000
SCOTT> l
1 xquery
2 for $i in fn:doc("/public/scott/xml/addresslist.xml")
3 return $i
SCOTT> /

Result Sequence
--------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?><アドレスブック><連絡先><氏名><姓>赤坂</姓
><名>元</名></氏名><住所/><メール><アドレス 区分="プライベート">G.Akasaka@coldma
il.jp</アドレス><アドレス 区分="携帯">G.Akasaka@hardbank.ne.jp</アドレス><アドレ
ス 区分="携帯">G.Akasaka@dokodemo.ne.jp</アドレス></メール><電話><電話番号 区分=
"自宅">03-1234-5555</電話番号><電話番号 区分="携帯">090-4321-7878</電話番号><電
話番号 区分="携帯">070-7777-8798</電話番号></電話></連絡先><連絡先><氏名><姓>麻
布</姓><名>太郎</名></氏名><住所/><メール><アドレス 区分="会社">T.Azabu@taro.co.
jp</アドレス><アドレス 区分="プライベート">T.Azabu@coolmail.jp</アドレス><アドレ
ス 区分="携帯">T.Azabu@a_phone.ne.jp</アドレス><アドレス 区分="携帯">T.Azabu@bu.
ne.jp</アドレス></メール><電話><電話番号 区分="自宅">06-1234-5555</電話番号><電
話番号 区分="会社">06-6860-0001</電話番号><電話番号 区分="携帯">090-6666-7878</
電話番号><電話番号 区分="携帯">080-9999-8798</電話番号></電話></連絡先><連絡先><
氏名><姓>代々木</姓><名>武</名></氏名><住所/><メール><アドレス 区分="プライベー
ト">Y.Takeshi@ba-net.ne.jp</アドレス><アドレス 区分="携帯">Y.Takeshi@dokodemo.ne
.jp</アドレス><アドレス 区分="携帯">Y.Takeshi@bu.ne.jp</アドレス></メール><電話>
<電話番号 区分="会社">06-6860-0001</電話番号><電話番号 区分="携帯">090-0066-0108
</電話番号><電話番号 区分="携帯">090-3020-2897</電話番号></電話></連絡先></アド
レスブック>

● 本来なら問題ない構文から試してみると。。。

SCOTT> (: サンプル :)
2 xquery version "1.0" encoding "utf-8";
(: サンプル :)
*
行1でエラーが発生しました。:
ORA-00928: SELECTキーワードがありません。

あ〜〜〜、XQueryのコメントとして解釈されているのかと思ったが、SQL*PlusではXQueryのコメントから始めることはできないようだ。

NOTE 1)
SQL*PlusでXQueryを利用する場合、XQueryのコメント文から入力してしまうと通常のSQL文と判断してしてしまうので要注意!

NOTE 2)
SQL*Plusでは、";"は文を実行するという意味があるのでXQueryのPrologで入力してしまうとそこまで入力したXQueryを解析、実行してしまうので要注意!

SQL*PLusでXqueryを入力する際のちょっとしたテクニックとして、一旦前述のように入力後SQL*Plusのeditコマンドでviなどを起動し編集すればこの問題は回避できる。以下はeditコマンドを利用してviで入力した。

SCOTT> edit
file afiedt.bufが書き込まれました。

1 (: サンプル :)
2 xquery version "1.0" encoding "utf-8";
3 declare namespace mo = "http://192.168.1.20/my_namespace";
4 declare function mo:phoneNumber($phone)
5 {
6 $phone/text()
7 };
8 (: Query Body :)
9 <result>
10 {
11 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
12 return
13 <greeting>
14 { fn:concat( "Hello, ", mo:phoneNumber($i)) }
15 </greeting>
16 }
17* </result>
18 /
SP2-0552: バインド変数"CONCAT"が宣言されていません。

やはり、XQueryのコメント(::)から開始するとSQL文だと判断されてしまうようだ。


XQueryコマンドの前にあるXQueryのコメントを削除する。XQueryとしては正しいのだが、SQL*Plusでは別のエラーが発生する。
以下のエラーメッセージから version "1.0" の部分が文法エラーとされてしまっている。恐らくencodeingも文法エラー扱いになるだろう。

SCOTT> edit
file afiedt.bufが書き込まれました。

1 xquery version "1.0" encoding "utf-8";
2 declare namespace mo = "http://192.168.1.20/my_namespace";
3 declare function mo:phoneNumber($phone)
4 {
5 $phone/text()
6 };
7 (: Query Body :)
8 <result>
9 {
10 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
11 return
12 <greeting>
13 { fn:concat( "Hello, ",mo:phoneNumber($i)) }
14 </greeting>
15 }
16* </result>
SCOTT> /
ERROR:
ORA-19114: XPST0003 - XQuery式を解析中にエラーが発生しました: LPX-00801:
XQuery syntax error at '"1.0"'
1 version "1.0" encoding "utf-8";
- ^

ということで、versionとencodingを削除してみると、わ〜〜、パチパチ。上手くできました。
XQueryの文法では正しくてもSQL*PlusやOracle11gの実装により文法エラーとされてしまうケースもあるので、Oracle11gでXMLマスタープロフェッショナル(DB)の勉強をする際には要注意。

SCOTT> edit
file afiedt.bufが書き込まれました。

1 xquery
2 declare namespace mo = "http://192.168.1.20/my_namespace";
3 declare function mo:phoneNumber($phone)
4 {
5 $phone/text()
6 };
7 (: Query Body :)
8 <result>
9 {
10 for $i in fn:doc("/public/scott/xml/addresslist.xml")//電話番号
11 return
12 <greeting>
13 { fn:concat("Hello, ",mo:phoneNumber($i)) }
14 </greeting>
15 }
16* </result>
SCOTT> /

Result Sequence
--------------------------------------------------------------------------------
<result><greeting>Hello, 03-1234-5555</greeting><greeting>Hello, 090-4321-7878</
greeting><greeting>Hello, 070-7777-8798</greeting><greeting>Hello, 06-1234-5555<
/greeting><greeting>Hello, 06-6860-0001</greeting><greeting>Hello, 090-6666-7878
</greeting><greeting>Hello, 080-9999-8798</greeting><greeting>Hello, 06-6860-000
1</greeting><greeting>Hello, 090-0066-0108</greeting><greeting>Hello, 090-3020-2
897</greeting></result>





Ang?lique Kidjo - Djin Djin - Gimme Shelter

話はがらりと変わり、昨日はAngelique Kidjoライブご招待へ当選したので、ウチのおチビちゃんのお守りは奥さんに任せてdrmarさんをとブルーノート東京へ(久々だな〜)

曲目全ては覚えていないのだが、

Gimme Shelterをはじめ (アルバムでは、Joss Stone Joss Stone - Introducing Joss Stone
をフィーチャーしている)アルバム Djin Djinからの曲。私もdrmarさん同様、全く知らなかったアーティストなのだが、グラミー賞には過去5回ノミネートされたことがある実力派。西アフリカはペナン共和国出身。その影響だろうか、日本はもう冬なのだが、曲は太陽を感じるような曲が多い。

アルバム Djin Djinでは、ビーター・ガブリエル、カルロス・サンタナ、ジョス・ストーンなど多彩なゲストをフィーチャーしている。

YouTube - Gimme Shelter(Feat. Joss Stone)
YouTube - Africa Calling
YouTube - Voodoo Child
YouTube - Tumba


Angelique_kidjo

| | | コメント (0) | トラックバック (0)

2007年12月12日 (水)

大規模Web サイトでのMySQL導入方法および事例紹介」セミナー

20071204001

先週のことだが、大規模Web サイトでのMySQL導入方法および事例紹介」セミナーが六本木にあるスウェーデン大使館内 オーデトリアムで開催されるということで行ってきた。MySQL Conference 2007の内容と多少重複する内容もあったが、DBマガジンでおなじみのMySQL 株式会社 松信 嘉範氏のセッションは興味深い内容だった。

会場となったスウェーデン大使館のオーデトリアムだけでは足りず、ロビーにも椅子とモニターが用意されていたが会場自体が小さいので全体で100名程度で満席となっていた。(オーデトリアム内で立ち見だったし。)

| | | コメント (0) | トラックバック (0)

Safariセミナー

昨日、Apple主催のSafariセミナーに参加してきた。


このセミナーを開催しようと思ったきっかけは、日本に於いて、Safariが各サイトの標準ブラウザとして明記されていなかったり、Safariに最適化されていないサイトがまだまだ少ないのではないかと感じていることが発端のようだ。(ADCワールドワイドリレーションズの上田氏談)

実は私もそれは感じている。以前電子入札システムの利用環境を調べた時の話・・・・

私の叔母が経営する法人が仕事の関係上、公共事業の電子入札を行う必要があるのでどんなパソコンがいいのか?
また、パソコンの設定方法や操作方法も分からないので助けてくれないかと連絡してきた時のこと。

ということで実際に利用することになる電子入札システムの仕様や前提などを調べて行くと・・・
なんと!、Windows2000/XPかつ、ブラウザはIE6 SP1以降のみとあった。。。

なんとかっこいい電子入札システムですこと。。。こんなに特定のクライアントOS/特定のWebブラウザ依存の強い公共事業の電子入札システムなんて・・・・なんだこりゃ!? と言うのが第一印象だった。

とはいうものの電子入札しか行われなくなるので叔母はMacOSXではなく、Windowsしか選択肢は無くなってしまった。。。

公のシステムだからこそ、WindowsのIE6にのみに対応させるのではなく、Firefox2やMacOSXのSafariなどW3C標準に準拠した他のモダンウェブブラウザへの対応が必要なのではないだろうか?

以下、Windowsオンリーな公共事業電子入札システムの一例;埼玉県のサイトから引用
http://www.pref.saitama.lg.jp/A01/B300/ebid/index.htm#system
Saitama_cals_system_requirement

以下、関連サイト
http://www.cals.jacic.or.jp/coreconso/linkpage/core.pdf

新しい? アーキテクチャがPDFに記載されているがマルチプラットフォームと書かれてはいるものの、クライアントとして利用できるのははWindowsだけ、WebブラウザもNetscapeとIEと書かれているが埼玉県のサイトを見る限り、IE6のみしか動作確認されていない。いやはや・・(少々引きつりながら)笑うしかない・・・・

そのうえ電子入札システムの使い勝手もかなり悪い! なんでこうなっちゃうんだろう・・

http://www.cals.jacic.or.jp/coreconso/
http://www.jacic.or.jp/

随分前置きが長くなってしまったが本題のSafariセミナーへと話を戻す。

Safariに関わるいろいろなお話があったのだが、開発者の私としては、すでに多くのBlogでも取り上げられていたと思うがSafariにデバッグメニューを追加する方法や、SafariというかWebkitへアタッチしてデバッグ可能なDrosera(モウセンゴケ)と名付けられたデバッガのお話。

● まずは、Safariにdebugメニューを追加する方法


Terminalから以下のコマンドを実行してSafariを起動するとdebugメニューが表示されるようになり、開発者にはうれしい機能が利用できるようになります。
Last login: Wed Dec 12 05:22:48 on ttyp1
Welcome to Darwin!
G5Server:˜ discus$ defaults write com.apple.Safari IncludeDebugMenu 1

Safariを再起動すると・・・
Safari_with_debug_menu

Debug menuのweb inspectorを起動したところ。
Safari_debug_menu

Safari_debug_menu_web_inspector1

debugメニューを取り除くには、Terminalから以下のコマンドを実行します。

Last login: Wed Dec 12 05:22:48 on ttyp1
Welcome to Darwin!
G5Server:˜ discus$ defaults write com.apple.Safari IncludeDebugMenu 0

● 次はDrosea


Droseaは、SafariのベースになっているWebkitにしかアタッチできないので、まず、http://webkit.org/から最新のWebkit Nightly Buildsをダウンロード。

ダウンロードした.dmgファイルを開くとSafariのようなアイコンとDroseaのアイコンが現れます。
Webkit Drosea

次にWebkitアイコンをダブルクリックして起動後、Droseaアイコンをダブルクリックして起動する。
尚、Safari3とWebkitは起動してしまうと区別するのが難しいのでアイコンで区別してくださいね。DroseaがアタッチできるのはWebkitの方だけなので大丈夫だとは思いますが・・・・
Drosea_attach_to_webkit

Dorosea_debugger_window


Webkitへアタッチしたらコンテンツをリロードする。するとDroseaのDebug Windowにコンテンツの内容が表示されデバックできるようになります。
Drosea_debugger_windows_webkit_relo

DroseaのDebug Window
DashCodeに似てるかな。。
Drosea_debugger_window2




おまけ
CSS3(現時点ではDraft)関連では、

background-size
min-device-pixel-ratio

参考URL見つけられず。Media Queriesに含まれるプロパティらしいが・・
http://www.w3.org/TR/2002/CR-css3-mediaqueries-20020708/
http://www.evotech.net/blog/2007/06/targeting-safari-30-with-css/

border-radius
border-image

現時点で各プロパティを利用するには


-webkit-を先頭に付加して

-webkit-background-size
-webkit-min-device-pixel-ratio
-webkit-border-radius
-webkit-border-image

にすればよいとのこと。尚、-webkitに替えて-mozを付加すればFirefoxでも利用できるとか。


また、自サイトなどの検証には、http://validator.w3.org/を利用するとよい。検証結果がOKであればSafariでも動作する。

| | | コメント (0) | トラックバック (0)

2007年12月 9日 (日)

Dashboard Widget Top50 - 2007/12/09

日本時間の2007/12/09時点でTop50の12位(前日の13位から1ランクアップ)にランクアップ!。ほんとうにTop10以内に再ランクインしちゃったりして。。。

もし、Top10以内にランクインしたら6月28日につづき2回目ということになりますねぇ。

Dashboard_widget_20071209

| | | コメント (0) | トラックバック (0)

2007年12月 8日 (土)

Dashboard Widget Top50 - 2007/12/08

Dashboard de Aquarium v1.1リリース後、Top50の13位にランクイン!。

Leopardだけで発生する問題を解決したv1.1のリリース後、Leopardユーザのアクセスも多くなってきていい感じ。

再びTop10に入れるかどうか・・・・・。

Dashboard_top50_20071208

| | | コメント (0) | トラックバック (0)

2007年11月22日 (木)

Oracle de XMLDB #8 - またまた少々脱線

久々にOracle11gのXML DBネタなのだが、XQueryなどのXMLマスタープロフェッショナル(データベース)絡みのネタからはまた脱線。SQL/XMLネタを一つ。

以前、Oracle10g R1/R2上でRSS FEEDをPL/SQLで取得してOracle Application Expressで表示なんてことをやっていた。
(33回も連載してたっけ。。。。)

Mac De PL/SQL RSS Reader #1
Mac De PL/SQL RSS Reader #2

それらのエントリで、参照するXML文書の文字エンコーディングとデータベースキャラクタセットが異なると文字化けを起こしてしまうHttpUriType型の仕様?のことを書いていたのだが、先日リリースされたOracle11g R1ではどうなったのか?


確かめてみた! 

まずは、SQL/XMLを利用した例。(以下は、Oracle11g R1 for Linux x86を利用。)

XML文書の文字エンコーディングはUTF-8、Oracleデータベースのキャラクタセットは、JA16SJISTILDE。

SCOTT> r
1 select *
2 from
3 xmltable(
4 'for $i in //*
5 return $i'
6 passing httpuritype('https://discus-hamburg.cocolog-nifty.com/test/atom.xml').getXML()
7* )
passing httpuritype('https://discus-hamburg.cocolog-nifty.com/test/atom.xml').getXML()
*
行6でエラーが発生しました。:
ORA-31011: XML解析に失敗しました
ORA-19202: XML処理
LPX-00244: 小なり不等号 ('<')文字の使用が無効です。 (&lt;を使用します)
Error at line 30
中にエラーが発生しました
ORA-06512: "SYS.XMLTYPE", 行5
ORA-06512: "SYS.HTTPURITYPE", 行97


SCOTT>


あ〜〜〜〜やっぱり、ダメね〜。上記はXML文書のパースエラーとして現れているのだが、その原因は文字化けなのである。


XML文書とOracleデータベースのキャラクタセットが異なる場合(前述の例では、UTF-8とSJIS)にはHttpUriType型を利用せず、UTL_HTTPパッケージを利用し、

UTL_HTTP.SET_HEADER(v_req, 'Content-Type', 'text/xml;charset=UTF-8');

のようにすることで文字化けせずにXML文書を取込むことができる。
尚、XML文書、データベースキャラクタセットが同一である場合(XML文書がUTF-8でデータベースキャラクタセットがAL32UTF8のような場合)には文字化けは発生しない。これは私個人の想像なのだが、HttpUriType型が裏でHTTP通信する際に利用する文字エンコーディングはデータベースキャラクタセットから導出しているのだと思われる。今のところHttpUriType型には文字エンコーディングは指定できないのでオラクルさんが方針を変えない限り文字化けの回避策は前述の2つしかないだろう。

2007/11/28追記
もしどうしてもXML文書の文字エンコーディングとデータベースキャラクタセットが異なる環境でHTTPURITYPE型を使いたいということであれば、代替策としてUTL_HTTPパッケージを利用したユーザ定義型を作成すれば可能かもしれない。
(あくまで推測。。あとで試してみるか=>TODO)

以前、DBMS_XMLPARSER.PARSE(parser, uri)を使ってFEEDを直接参照した場合も同様のエラーだったが、UTL_HTTPパッケージを利用して文字化けを回避した。
以下URL参照のこと。(下記のエントリの内容はOracle10g R1/R2で試したものです。)

Mac De PL/SQL RSS Reader #3

SQL/XML機能が充実してきたので今後はあまり使わなくなるかもしれないが、次いでなのでDBMS_XMLPARSER.PARSER(parser,uri)でも試してみた。
DBMS_XMLPARSER.PARSER(parser, uri)でもHttpUriType型を利用しているだろうから結果は同じはずだ。
(また、XMLマスタープロフェッショナル(データベース)ネタからは離れてく〜〜。w)

以前作成したコードを少々手直してOracle11gで実行!(Oracle SQL Developer for MacOSXを利用した)
Xmldb8_jdev


● ソース

CREATE OR REPLACE PROCEDURE GET_FEED(i_url IN VARCHAR2)
AS
v_url VARCHAR2(32767);
v_myParser DBMS_XMLPARSER.Parser;
v_rssDoc DBMS_XMLDOM.DomDocument;
v_xml XMLTYPE;

PROCEDURE println(str IN VARCHAR2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(str);
END;

PROCEDURE println
(
i_text IN CLOB
)
IS
v_tempStr VARCHAR(32767);
v_numOfPieces PLS_INTEGER;
BEGIN
v_numOfPieces := CEIL(LENGTH(i_text)/1000);
FOR i IN 1..v_numOfPieces LOOP
DBMS_OUTPUT.PUT_LINE(SUBSTR(i_text, ((i-1)*1000), 1000));
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(
'println(CLOB) internal procedure:'
|| sqlerrm()
);
RAISE;
END println;

--****************************************************************************
--* Main
--****************************************************************************
BEGIN
DBMS_OUTPUT.ENABLE(200000);
println('begin...');


v_url := i_url;
IF v_url IS NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'URLを指定してください。');
END IF;

v_myParser := DBMS_XMLPARSER.NEWPARSER();
DBMS_XMLPARSER.PARSE(v_myParser, v_url);
v_rssDoc := DBMS_XMLPARSER.GETDOCUMENT(v_myParser);
v_xml := DBMS_XMLDOM.GETXMLTYPE(v_rssDoc);
println('DBMS_XMLPARSERバージョン:'||DBMS_XMLPARSER.GETRELEASEVERSION());
println('DBMS_XMLDOMバージョン :'||DBMS_XMLDOM.GETVERSION(v_rssDoc));
println(' ');
println('=== パース済みDOMから取得したRSSソース ===');
println(XmlType.GETCLOBVAL(v_xml));
println('====================');
println(' ');
DBMS_XMLPARSER.FREEPARSER(v_myParser);

println('...End');

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(
'Main Procedure:'
|| sqlerrm()
);
RAISE;

END GET_FEED;


● 結果

RSS FEED(UTF-8)をデータベースキャラクタセット(JA16SJISTILDE)から取込んだ場合。
Connecting to the database Oracle11g R1 Scott(leaffish) - JA16SJISTILDE.
ORA-31011: XML解析に失敗しました
ORA-19202: XML処理
LPX-00244: 小なり不等号 ('<')文字の使用が無効です。 (&lt;を使用します)
Error at line 30
中にエラーが発生しました
ORA-06512: "SCOTT. GET_FEED", 行161
ORA-06512: 行6
begin...
Main Procedure:ORA-31011: XML解析に失敗しました
ORA-19202: XML処理
LPX-00244: 小なり不等号 ('<')文字の使用が無効です。 (&lt;を使用します)
Error at line 30
中にエラーが発生しました
Process exited.
Disconnecting from the database Oracle11g R1 Scott(leaffish) - JA16SJISTILDE.


RSS FEED(UTF-8)をデータベースキャラクタセット(AL32UTF8)から取込んだ場合。文字エンコーディングが同じ場合は問題なし!
ところで、Oracle11g R1でも、DBMS_XMLPARSERのパージョンは10.1.0.2.0なのね〜。(^^;;;

Connecting to the database Oracle11g R1 Scott(guppy) - AL32UTF8.
begin...
DBMS_XMLPARSERバージョン:10.1.0.2.0
DBMS_XMLDOMバージョン :1.0

=== パース済みDOMから取得したRSSソース ===
<?xml version="1.0" encoding="utf-8"?>

<feed xmlns="http://www.w3.org/2005/Atom">
<title>Mac De Oracle</title>
<link rel="alternate" type="text/html" href="https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/" />
<link rel="service.post" type="application/x.atom+xml" href="http://app.cocolog-nifty.com/t/atom/weblog/blog_id=121907" title="Mac De Oracle" />
<id>tag:app.cocolog-nifty.com,2003:weblog-121907</id>
<updated>2007-11-19T09:16:39Z</updated>


・・・・中略・・・・


<summary>前回、何かが違うと感じたと書いたがそれはなにか? 実はwhitespaceに関す...</summary>
<author>
<name>discus</name>
</author>
<category term="Linux" />
<category term="Oracle" />
<category term="Oracle Database 11g" />
<category term="XML" />




</entry>

</feed>
====================

...End
Process exited.
Disconnecting from the database Oracle11g R1 Scott(guppy) - AL32UTF8.


尚、Oracle11g R1ではセキュリティが強化されている。(Oracle10g R2以前のセキュリティレベルにもできるようだが。。)上記のコードをそのまま実行しようとするとエラーになる。

ということで、セキュリティ関連も含めて続きは次回ということで。



おまけ

以下の資料はSQL/XMLって何? ってとこからスタートする方にはよいかも..。
オープンソースカンファレンス2007 .DBの資料「XQuery、XPath 及び SQL / XML に関する標準化動向と今後の取組み状況」 (PDF)

以下のサイトにはSQL/XML関連の情報がいろいろ(英語です。)
SQLX.org

その他、OTN-Jなどにもあったかも。。。(未確認)

| | | コメント (0) | トラックバック (0)

2007年11月17日 (土)

え〜〜〜、AmazonでiPod touchが11月18日(って明日じゃん! )まで安くなってる!!

え〜〜〜、AmazonでiPod touchが11月18日(明日じゃん! )まで安くなってる!! 知らなかった〜

しかも数量限定。 

http://affiliate-blog.amazon.co.jp/2007/11/ipod-touch6000o.html


| | | コメント (0) | トラックバック (0)

2007年11月16日 (金)

jMaki開発者Gregによるセミナー「jMaki and Ajax」

いや〜〜、行く予定だったんですが、行けなかった〜〜〜残念!〜〜。

Sunの岡崎さんのブログでその映像が配信されたようですね。行けなかったこともあり、内容を見る事ができてうれしいです。

YouTubeで配信してもらえるといいかも。(やっぱり、MacOSX Leopard使ってるのねぇ〜)

http://mediacast.sun.com/share/okazaki/jMaki20071115.mov

http://blogs.sun.com/okazaki/entry/昨日のhot_topic_seminar_jmaki開発者gregによるセミナー_jmaki

| | | コメント (0) | トラックバック (0)

2007年11月 8日 (木)

Sun Tech Days 2007 in Tokyo - Last Day

やはり、気になったので、有楽町の無印での買い物ついでにSun Tech Days 2007 in Tokyoの最終日の最終セッションへ。

MacOSX Leopardへも組み込まれているDtrace関連と昨日は全く聞けなかったPostgraSQL関連セッション。

Solarisはないので、LeopardのbashからMacOSX 10.5 Leopardで確認だけ。。ちゃんと入ってますDtrace

Dtrace_macosx_leopard

その他、いろいろ試してみたいのだが、それは後日時間を取ってやってみようかと。。。予定は未定。

| | | コメント (0) | トラックバック (0)

2007年11月 7日 (水)

Sun Tech Days 2007 in Tokyo - Day-1

今日も行ってきましたSun Tech Days
明日も行くかは微妙だけど、Dtrace for Web 2.0,JavaScript, PHP and CoolStack (SAMP)やEnterprise Database Inside: The PostgreSQLなんてセッションが夕方からあるので行くかも。

基調講演と以下の3セッション。
基調講演では、ロボットのデモがあったけど、ウチの奥さんも居たら涙もんですな、絶対。

(ところでウチのケイトー君の作り込みの記事は停滞中です。なにせ奥さんと1エントリ毎の交代で書いているので。。)

20071107002 20071107003

Ajax関連では、Ajax and Web 2.0 Related Frameworks and Toolkits
Gregさんが日本語でプレゼンしてました。このプレゼンが面白いこと。(^^;
いや〜マジでMac OS X Leopardのデモなんじゃないかと勘違いするくらいMacOSX Leopardバリバリ使っていましたよ。
Parallels Desktop 3.0 for MacでWindows XP上のデモやってました。やっぱりParallelsは必須だな。
(jMaki使ってみるか。。

それに、DTraceのセッション。
DTraceはMacOSX Leopardでも採用されているのでね。

それとDBがらみなので、Java Persistence API: Simplifying Persistence。
(PostgreSQLは時間がバッティングしていたので諦めた。)

| | | コメント (0) | トラックバック (0)

2007年11月 6日 (火)

Sun Tech Days 2007 - Community Day

今日は、Sun Tech Days 2007 Tokyo - Community Dayへ。

最初の2セッションだけでしたけど、NetBeans 6.0の進化が見れてよかったかな。
現在は、NetBeans 6.0 Beta 2がダウンロードできるようだ。

プレゼンする方も見る側もMacBook/PowerBook? 持っている方はやはり多いですね。:-)

Javaはうちの奥さんの得意分野。客先ではEclipseを利用する場合が多いのだが、Sun Java StudioのMacOS版の使い易さに感動していたのを思い出す。おそらくNetBeans6.0を触れば気に入るんじゃないかな。
しかもEclipseのプロジェクトをImportしたり共有できるようになるんだからねぇ。

Netbeans60beta2icon

こんな色合い、好きなんですよね〜。熱帯魚好きな私好み。。。これがターコイズ系ならもっと好きなんだが。。
Netbeans60beta2

| | | コメント (0) | トラックバック (0)

2007年11月 4日 (日)

なんとなくGoogle Toolbarを使ってみた。w

気にした事も無かったんだが、どこかのブログ(いろいろ見ていたので、どこだったか失念)でPage Rankネタがあったので、FireFoxへGoogle Toolbarをインストールし、Mac De Oracle奥さんのブログmegawattさんのブログのPage Rankを見てみた。

ほ〜〜〜っ。
OTN-JのPage Rankが5(2007/11/4現在)なのだが、Mac De Oracleは4。奥さんのブログは3、megawattさんのブログは2だった。 ただそれだけ :)

ついでなので、Oracle DBA Toolbarもインストールしてみた。SQL*Plusも起動できるのね。:)
Mac_de_oracle_page_rank Today_s_menu Mega_houdan


あ、drmarさんのブログのPage Rank見るの忘れた。。 (^^;;;

| | | コメント (0) | トラックバック (0)

2007年11月 1日 (木)

Dashboard De Aquarium v1.1 - Released!

6-Feb-2009:
Dashboard de Aquarium v1.2 released!!!!, Download NOW!!
(Apple社(US及び日本)でv1.2が公開されるたのでv1.1のダウンロードは停止しました。


translate from japanese to english : Powered by Google translate

前回の予告したようにMacOSX 10.5 LeopardでDashboard De Aquarium v1.0を実行した場合に発生する問題を解決したDashboard De Aquarium v1.1リリースしました。

(これに伴いv1.0のダウンロードはできなくなります。)


動作確認した機種とMacOSXのバージョンは以下の通り。

System Requirements : MacOSX Tiger 10.4 or later -- Freeware.

PowerBook G4 1Ghz - MacOSX 10.4.10 (Tiger)
PowerMac G5 Dual 2.7Ghz - MacOSX 10.4.10 (Tiger)
MacBook Pro 2.2Ghz Core 2 Duo - MacOSX 10.5 (Leopard)

V1_1_on_leopard

V1_1_on_leopard_1 V1_1_on_leopard_2

Download Now!
Go to v1.2 download page!

"Mac OS X 10.4 Tiger以降が必要です。ダウンロードにSafariを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。Safari以外のブラウザを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、解凍したウィジェットを /ライブラリ/Widgets/ フォルダに配置してください。ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。"


Note: 国際化対応しています。言語環境が英語であれば以下のように表示されます。
V1_1_on_leopard_en_us_1 V1_1_on_leopard_en_us_2

| | | コメント (3) | トラックバック (0)

2007年10月31日 (水)

Dashboard de Aquarium v1.0 on Leopard - あれ〜〜。

妻のMacBook ProをMacOSX LeopardへUpdateしたので、早速、Dashboard de Aquarium v1.0をインストールしてみたところ、Tigerで動作させた場合と異なる動作をすることに気付いた。(新機能を盛り込む前にこの問題を潰しておく必要があります。今暫くお待ちください。)

Dashboard de Aquarium v1.0をMacBook Pro - Leopard のDashboardへインストールした直後の画像(この状態ではTiger上の動きとの違いは無さそうだったのだが。。。)
Dashboard_de_aquarium_on_leopard

この状態から
Dashboard_de_aquarium_on_leopard_bu

Preference画面へ切り替え、
Dashboard_de_aquarium_on_leopard__2

Preference画面の「終了」ボタンをクリックすると。。。。あららら〜。すべて左上に集まってきてしまう。
Dashboard_de_aquarium_on_leopard__3

新機能を盛り込むより。こちらの問題を解決する方が先ですね。Leopard上でDashboard de Aquarium v1.0をご利用の方には申し訳ありませんが、今暫くお待ちください。

| | | コメント (0) | トラックバック (0)

Dashboard de Aquarium - 準備は整った!?

奥さんのMacBook ProがLeopardにupdateしたこともあり、DashCodeが利用できる環境が整った
(当分の間、私のPowerBookはTigerのままにしておきたいので、奥さんのMacBookを借りてDashboard de Aquariumの改造を再開していこうかと考えているところ。 ー まだ、どのようにするか全く考えていないのですがね。。。。)

ところで、ブログのアクセスログを見ていて今頃気付いたのだが、
新着アプリテスト記録(とトラブルシューティング) というサイトでDashboard de Aquariumが紹介されていた。
(気付くのが遅れて申し訳ありません。この場を借りてお礼申し上げます。)

以下、紹介されているページへのリンク。

| | | コメント (0) | トラックバック (0)

2007年10月30日 (火)

Oracle10g 10.1.0.5.0 on MacOSX Leopard

http://forums.oracle.com/forums/thread.jspa?messageID=2167803&tstart=0#2167803によると、MacOSX Leopard(PowerPC版)にて、Oracle10g R1 10.1.0.5.0のインストール及び起動ができたとのこと。 
(Leopard Serverの購入はまだ先の話なので備忘録として書いておく。)

それより先にOracle11g for MacOSX Serverでもリリースされたらうれしいのだが。。。どうなんでしょう。。。。

追記:
http://ronr.blogspot.com/2007/10/oracle-10105-on-leopard.html

さらに追記(2007/10/30):
ブログをちゃんと読んでみると、Leopard上でOracle10g R1をインストールしたわけではないようですね。
MacOSX TigerでInstall後、10.1.0.5.0のPatchを適用。その状態で、MacOSXをTigerからLeopardへupdateしてもOracle10g R1 10.1.0.5.0は起動した!、ということだそうな。
ということで当エントリでも、Leopardでインストールという部分は削除して訂正しておきます。

できれば、10.1.0.3.0のまんまで試してほしかったな〜。個人的には。

| | | コメント (0) | トラックバック (0)

2007年10月28日 (日)

Oracle de XMLDB #6 - Linux x86版再び。

Windows版 Oracle Database 11g R1でXMLDB環境を再構築し、再度XQueryで遊び始めたのだが。。。。Linux版のOracle11g のXMLDBとは何かが違う。。。。。・・・・・・・



バックナンバー:

Oracle de XMLDB #1

Oracle de XMLDB #2

Oracle de XMLDB #3 - Oracle10g XEではどうよ?

Oracle de XMLDB #4 - fizzbuzzから

Oracle de XMLDB #5 - Oracle11g環境再構築完了

本当はXMLDBで遊びたいだけなのだが、、何となく気持ち悪い・・・・・

となれば、以前から計画していたLinux環境復活を先に! 

ということで、以前はOracle9i R2 for Linux x86Oracle10g R1 for Linux x86環境として利用していたToshiba Dynabook SS SX/210LNLW RAM:768MB - Turbolinux 8 Enterprise Server (United Linux 1.0)環境を潰し、CentOS5 + Oracle11g R1 for Linux x86環境として作り直して、その違いを確認してみようということに急遽決定!!!!

尚、Toshiba Dynabook SS SX/210LNLWは、FDもCD/DVDドライブも搭載していないのだが、FDブート可能なFDドライブさえあればLinuxのインストールは可能で、以前TurboLinux 8 Enterprise Serverをインストールした際もFDイメージからブートし、外付けCDドライブからインストールしたことがある。。。

今回はCentOS5をネットワークインストールし、その後Oracle11gをインストールしてみることにした。

Dynabook SS SX/210LNLWへ繋いだFDドライブはこれ。


尚、CentOS5にはFDイメージが無いということなので、CentOS3.8のFDイメージでブート。一旦、CentOS3.8をインストールしてからCentOS5をネットワークインストールでクリーンインストールするという方法を取った。

ありがたいことに、この方法を試してブログで公開されている方がいたので参考にさせてもらった。
(ありがとうございます。いろいろ調べる手間が省けて助かりました。)

● FDはあるけどCD-ROMドライブの無いノートPCに最新版Linuxをインストール(CentOS3.8)
ただ、私がインストールした際、以下の赤字部分を変えた。(それ以外は、前述のブログに書かれている通りで行えた。)
grub.confの編集
# vi /boot/grub/grub.conf

以下の項目を追加。
title CentOS 5.0 Install
root (hd0,0)
kernel /boot/centos/vmlinuz ramdisk_size=8192
initrd /boot/centos/initrd.img

● FDはあるけどCD-ROMドライブの無いノートPCに最新版Linuxをインストール2(CentOS5編)


では、Toshiba Dynabook SS SX/210LNLWでCentOS5が起動した画像を。
Cimg7335

ここまでできたら、Oracle Database 11gをインストールすればいい。手順は以前のエントリを
(尚、Oracle11gをインストールするためには最低1GBのメモリが推奨されているが、このDynabookに積めるメモリは最大768MBである為1280MBだが512MB一枚しかなかったので768MBと少なめ。OUIの物理メモリサイズに関する警告を無視することでインストールを行った。Swapが多くなりモタツキ感はあるもののOracle11gは無事にインストールできた。)

以下は、MacOSX TigerのxtermよりCentOS5(Dynabook SS SX/210)へssh接続して起動したOUIの画像。
Dynabook_ss_oracle11g

ということで、次回は、 何かが違う。。。と思った点について確認してみるか。

| | | コメント (0) | トラックバック (0)

2007年10月26日 (金)

Leopardワールドプレミア - Apple Store Shibuya

今日は、MacOSX Leopardの発売日!
私は、Apple Store 渋谷へ行きLeopardを購入。入り口では、Apple Store Ginzaのオープン時を思い出させるような、スタッフのお出迎え! (^^;;



では、その模様を携帯で撮影したムービーにて。(画質は悪いですが...)

(再生にはQuickTimeが必要です。)


なんとか記念Tシャツ頂けました。しかも、Lサイズ。

これで、DashCodeを思いっきり使える

| | | コメント (0) | トラックバック (1)

Leopard ワールドプレミア

MacOSX Leopard! 今日発売!

奥さんのMacBook ProもMac OS X Up-To-Dateプログラムへ申し込み済みなのですぐに手元にくることでしょう。楽しみです。

ところで、Leopard ワールドプレミアがApple Storeで本日の6pm-10pmまで開催されるとか。行かねば。

| | | コメント (0) | トラックバック (0)

2007年10月25日 (木)

Oracle de XMLDB #5 - Oracle11g環境再構築完了

前回まで使っていたCentOS5上に構築したOracle Database 11g R1 EEは、ThinkPad R52の下取りということになり、仕方ないのでメモリが1GBしかないDual AthronMP 2800+のWindows XP Professional SP2という環境にOracle11g環境を再構築した。(Linux環境へはいずれ戻る予定)
OUIの操作はLinux/Unixいつ登場するのか不明だが??MacOSXでも同じ。1点違うところは、root.shなどの実行が事くらいなので、ここで改めてWindows版のOracle Database 11gのインストールについて書くつもりはないのだけれど、その様子だけはQuickTimeムービーで公開しておくことにした。(^^。

バックナンバー:
Oracle de XMLDB #1
Oracle de XMLDB #2
Oracle de XMLDB #3 - Oracle10g XEではどうよ?
Oracle de XMLDB #4 - fizzbuzzから



WindowsへOracleをインストールするのだが、そこは、Mac De Oracleですから、素直にWindowsに向うことは無いということは予想できますよね!?

ということで、VNCを使ってもいいのだが、今回は、マイクロソフトから提供されているRemote Desktop Connection(以下、RDC)を利用することにした。(尚、RDCは、IntelMacには未対応のようなのでご注意ください。)

Rdc_icon


RDCの設定でポイントになる点を幾つか。
リモートデスクトップのサイズはご自分のディスプレイに合わせてくださいね。

Rdc_setting1 

パフォーマンスタブをクリックして、ドロップダウンメニュの「LAN(10Mbps以上)」を選択。(これより遅い環境でお使いの場合にはそれなりの設定にしてくださいね。)
Rdc_setting2



もし、こんなエラーがでたら、Windowsのローカルセキュリティ設定を一時的に変更すればOK。
Rdc_connect_error

Rdc_win_local_security



RDC経由でOUIを起動したところ。 :-)
Rdc_connect_oui



(再生にはQuickTimeが必要です。)

約1.8MBでサウンドトラックなし。


次回は、XQuery再開予定。

| | | コメント (0) | トラックバック (0)

2007年10月22日 (月)

Oracle de XMLDB #4

データベースマガジンでもXQuery1.0は"習うより慣れろ"なんて書いてあったので、使って覚えるのが一番いいだろうなということで前々回に環境を構築したのだが、予想外の展開で、なかなか思うように試す時間がとれない・・・、それでも何とか時間を作らなきゃね。ということでやっとその続き。  

バックナンバー:
Oracle de XMLDB #1
Oracle de XMLDB #2
Oracle de XMLDB #3 - Oracle10g XEではどうよ?



最初はFizzBuzzからやってみた。(笑) さずがに、Hello Worldじゃつまらなかったので・・・・。

いつものように、Oracle Database 11g for Linux x86へMacOSXのTerminalからssh接続!

Last login: Sat Oct 20 02:18:51 on console
Welcome to Darwin!
G5Server:˜ discus$ su - oracle
Password:
G5Server:˜ oracle$
G5Server:˜ oracle$ ssh oracle@glasscatfish
oracle@glasscatfish's password:
Last login: Sat Oct 20 02:19:12 2007 from 192.168.1.19
[oracle@glasscatfish ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 月 10月 20 14:13:23 2007

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

> conn scott/tiger@lampeye
接続されました。

SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

SCOTT> set timi on
SCOTT> l
1 xquery
2 for $n in 1 to 100
3 return
4 if ($n mod 15 eq 0) then 'fizzbuzz'
5 else if ($n mod 3 eq 0) then 'fizz'
6 else if ($n mod 5 eq 0) then 'buzz'
7* else $n
SCOTT> /
1
2
fizz
4
buzz
fizz
7
8
fizz
・・・・中略・・・・
fizz
97
98
fizz
buzz

100アイテムが選択されました。

経過: 00:00:00.06
SCOTT>


ついでなので、以前SQLでFizzBuzzしたものと処理時間を比較してみた。
お〜!、SQLでFizzBuzzしたほうが早いな〜!

SCOTT> with
2 t as (
3 select 1 from dual group by cube(1,1,1,1)
4 )
5 select
6 case 0
7 when mod(rownum,15) then 'fizzbuzz'
8 when mod(rownum,3) then 'fizz'
9 when mod(rownum,5) then 'buzz'
10 else to_char(rownum)
11 end as results
12 from
13 t a cross join t b
14 where
15 rownum <= 100;
1
2
fizz
4
buzz
fizz
7
8
・・・・中略・・・・
fizz
97
98
fizz
buzz

100行が選択されました。

経過: 00:00:00.03
SCOTT>


多分、どなたかXQueryでやっているんじゃないかな〜!? ということでググってみたら、ありました、User's Forum For DB2 Japanに。。(^^;;;

いや〜〜〜、目から鱗ですね。User's Forum For DB2 Japanのスレッドにある下記コードは、面白い。(私のコードは読みやすいかもしれないが、ストレート過ぎるかもね。ちょいと捻ったほうが、XQueryのトリッキーな動きも見えてくるというもの。)
以下のコードは、XPath2.0/XQuery1.0では、xs:booleanじゃなくても真理値として扱われる値やシーケンスにフィルタ式を用いているなどなど参考になります。m(_ _)m
(ただ、xs:booleanじゃなくても真理値として扱われるという性質を多用しるぎると難読化傾向はあるかもしれないですね。)

SCOTT> l
1 xquery
2 for $n in 1 to 100
3 return
4 fn:concat(
5 $n[($n mod 3 and $n mod 5)],
6 'fizz'[fn:not($n mod 3)],
7 'buzz'[fn:not($n mod 5)]
8* )
SCOTT> /
1
2
fizz
4
buzz
fizz
7
8
・・・・中略・・・・
97
98
fizz
buzz

100アイテムが選択されました。

経過: 00:00:00.06
SCOTT>


XQueryの条件式を少々書き換えてみた。私が最初に書いたXQueryより条件式の部分が読みにくくなりますよね、やはり。(実行速度に影響がなければ、読みやすい方がいいな。。)

SCOTT> l
1 xquery
2 for $n in 1 to 100
3 return
4 if (fn:not($n mod 15)) then 'fizzbuzz'
5 else if (fn:not($n mod 3)) then 'fizz'
6 else if (fn:not($n mod 5)) then 'buzz'
7* else $n
SCOTT> /
1
2
fizz
4
buzz
fizz
7
8
・・・・中略・・・・
97
98
fizz
buzz

100アイテムが選択されました。

経過: 00:00:00.06
SCOTT>

やはりxs:booleanじゃなくても真理値として扱われるという性質は、間違いやすいところなのでもうちょっと突っ込んで理解しておく必要があるなぁ。いい加減に覚えているとハマりそうな予感。

2007/10/23 追記
Oracle10g R2でもできますよ。

| | | コメント (0) | トラックバック (0)

2007年10月17日 (水)

MacOSX Leopard Up-To-Dateプログラム

MacOSX Leopardの予約開始とともに、Leopard Up-To-Dateプログラムも開始された。

2007年10月1日〜2007年12月29日まで購入した、Mac/XserveにMacOSX Leopardがプリインストール又は、同梱されていなかった方が対象とのこと。

ちなみに、ウチの奥さんのMacBook Proはその対象なので、MacBook ProでLeopardを体験してみますか〜〜 (^^;;
(ただ、ウチはファミリーパック版を使っていのるで、将来的にはMacOSX Leopardのファミリーパックを購入することになるだろうけど。)

ファミリーパックはお得ですよ。22,800円で5台までのMacへインストールできるんですから。はい。

| | | コメント (0) | トラックバック (0)

DBMS_OUTPUT.PUT_LINE()/PUT()の出力制限

Oracle10g R2からDBMS_OUTPUT.PUT_LINE()/PUT()関数で出力できる1行最大サイズが、255バイトから32767バイトへ拡張されたことはご存知だろうか?
PL/SQLでプログラミングしている方ならほとんどの方がお世話になったことがあると思うDBMS_OUTPUT.PUT_LINE()/PUT()関数。これらの関数は、Oracle7のころから、ず〜〜〜〜〜っと255バイトが最大サイズだった。
それが、Oracle10g R2になって、いきなり32767バイト(このサイズは、VARCHAR2型のPL/SQL内での最大サイズに等しい)まで拡張された。(うれしいというか、便利にというか、楽にはなったかもしれない。)
だが、いままで工夫して利用してきているだけに、意外とそのまんまになっていたり、32767バイトまで拡張されたということを知らない方も多いようなので、ネタとしてはあまり新しいとは思えないのだが取り上げておく事にした。

ということで、Oracle10g R1 10.1.0.4.0とOracle10g R2 10.2.0.1.0を利用して実際に違いを確認。

以下の無名PL/SQLブロックでは、 255バイト/256バイト/32767バイト/32768バイトの各文字列をDBMS_OUTPUT.PUT_LINE()関数で出力するコードである。
DBMS_OUTPUT.PUT_LINE()/PUT()関数の制限により、Oracle10g R2より前のリリースでは、256バイト以上の文字列を出力しようと場合/Oracle10g R2以降では32768バイト以上の文字列を出力しようとするとエラーになる。

● Oracle10g R2 10.2.0.1.0の例

32768バイトの文字列を出力しようとした場合だけがエラーになっていることが確認できる。
SCOTT> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SCOTT> set serveroutput on size 100000
SCOTT> l
1 declare
2 str255 varchar2(255) := rpad('255',255,'*');
3 str256 varchar2(256) := rpad('256',256,'*');
4 str32767 varchar2(32767) := rpad('32767',32767,'*');
5 begin
6 dbms_output.put_line(str255);
7 begin
8 dbms_output.put_line(str256);
9 exception
10 when others then
11 dbms_output.put_line(sqlerrm());
12 end;
13 dbms_output.put_line(str32767);
14 begin
15 dbms_output.put_line(str32767||'*');
16 exception
17 when others then
18 dbms_output.put_line(sqlerrm());
19 end;
20* end;
SCOTT> /
255*****************************************************************************
********************************************************************************
********************************************************************************
***************
256*****************************************************************************
********************************************************************************
********************************************************************************
****************
32767***************************************************************************
********************************************************************************
・・・・・中略・・・・・
********************************************************************************
********************************************************************************
********************************************************************************
***********************************************
ORA-20000: ORU-10028: line length overflow, limit of 32767 bytes per line

PL/SQLプロシージャが正常に完了しました。

SCOTT>

● Oracle10g R1 10.1.0.4.0の例

256バイト以上の文字列を出力しようとした場合、全てがエラー。当然!
SCOTT> conn scott@fishtank
パスワードを入力してください:
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Prod
PL/SQL Release 10.1.0.4.0 - Production
CORE 10.1.0.4.0 Production
TNS for Linux: Version 10.1.0.4.0 - Production
NLSRTL Version 10.1.0.4.0 - Production

SCOTT> set serveroutput on size 100000
SCOTT> l
1 declare
2 str255 varchar2(255) := rpad('255',255,'*');
3 str256 varchar2(256) := rpad('256',256,'*');
4 str32767 varchar2(32767) := rpad('32767',32767,'*');
5 begin
6 dbms_output.put_line(str255);
7 begin
8 dbms_output.put_line(str256);
9 exception
10 when others then
11 dbms_output.put_line(sqlerrm());
12 end;
13 begin
14 dbms_output.put_line(str32767);
15 exception
16 when others then
17 dbms_output.put_line(sqlerrm());
18 end;
19 begin
20 dbms_output.put_line(str32767||'*');
21 exception
22 when others then
23 dbms_output.put_line(sqlerrm());
24 end;
25* end;
SCOTT> /
255*****************************************************************************
********************************************************************************
********************************************************************************
***************
ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line
ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line
ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line

PL/SQLプロシージャが正常に完了しました。

SCOTT>

以上で、Oracle10g R2以降でのDBMS_OUTPUT.PUT_LINE()/PUT()関数の拡張は確認できた。PL/SQL内では、32767バイトがVARCHAR2型の最大サイズなので、32767バイト以内の出力であればDBMS_OUTPUT.PUT_LINE()/PUT()関数1行で済むということはかなり便利だ。(32768バイト以上の出力には今まで通りのコードが必要だが。。。)

ここまでやったついでに、以前紹介したPL/SQLの条件付きコンパイルを利用してOracle9i R2 9.2.0.6.0以降、Oracle10g R1 10.1.0.4.0以降、それに、Oracle10g R2及び、Oracle11g R1の各リリースでコード共有の例を1つ。

以下のサンプルコードは、最大32767バイトまでの文字列を引数で受け取り、DBMS_OUTPUT.PUT_LINE()で表示するという単純なコードだ。


● Oracle10g R1 10.1.0.4.0

PL/SQLの条件付きコンパイルは、Oracle10g R1ではデフォルトでは機能しない。隠しパラメータをTRUEに設定する必要がある。
SYS> show parameter _plsql_conditional

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
_plsql_conditional_compilation boolean TRUE
SYS> conn scott@fishtank
パスワードを入力してください:
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Prod
PL/SQL Release 10.1.0.4.0 - Production
CORE 10.1.0.4.0 Production
TNS for Linux: Version 10.1.0.4.0 - Production
NLSRTL Version 10.1.0.4.0 - Production

SCOTT> set serveroutput on size 100000
SCOTT> l
1 CREATE OR REPLACE PROCEDURE dbms_output_test
2 (
3 i_str IN VARCHAR2
4 )
5 IS
6 v_str VARCHAR2(32767);
7 $IF DBMS_DB_VERSION.VERSION <= 9
8 OR (DBMS_DB_VERSION.VERSION = 10
9 AND DBMS_DB_VERSION.RELEASE < 2)
10 $THEN
11 v_pices PLS_INTEGER;
12 C_NumOfChars CONSTANT PLS_INTEGER := 85;
13 $END
14 BEGIN
15 v_str := i_str;
16 $IF DBMS_DB_VERSION.VERSION <= 9
17 OR (DBMS_DB_VERSION.VERSION = 10
18 AND DBMS_DB_VERSION.RELEASE < 2)
19 $THEN
20 v_pices := CEIL(LENGTHB(v_str)/C_NumOfChars);
21 FOR i IN 1..v_pices LOOP
22 DBMS_OUTPUT.PUT_LINE(SUBSTR(v_str,(i-1)*C_NumOfChars+1,C_NumOfChars));
23 END LOOP;
24 $ELSE
25 DBMS_OUTPUT.PUT_LINE(v_str);
26 $END
27* END;
SCOTT> /

プロシージャが作成されました。

SCOTT>

Oracle10g R1環境で条件付きコンパイル後のコードを確認!

SCOTT> exec dbms_preprocessor.print_post_processed_source('PROCEDURE','SCOTT','DBMS_OUTPUT_TEST');
PROCEDURE dbms_output_test
(
i_str IN VARCHAR2
)
IS
v_str VARCHAR2(32767);
v_pices PLS_INTEGER;
C_NumOfChars CONSTANT PLS_INTEGER := 85;
BEGIN
v_str := i_str;
v_pices := CEIL(LENGTHB(v_str)/C_NumOfChars);
FOR i IN 1..v_pices LOOP
DBMS_OUTPUT.PUT_LINE(SUBSTR(v_str,(i-1)*C_NumOfChars+1,C_NumOfChars));
END LOOP;
END;

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> exec dbms_output_test(rpad('32767',32767,'*'));
32767********************************************************************************
*************************************************************************************
*************************************************************************************
・・・・・中略・・・・・
*************************************************************************************
*************************************************************************************
******************************************

PL/SQLプロシージャが正常に完了しました。

SCOTT>

● Oracle10g R2 10.2.0.1.0

Oracle10g R2ではPL/SQLの条件付きコンパイルは最初から有効になっている。
SCOTT> set serveroutput on size 100000
SCOTT> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SCOTT> l
1 CREATE OR REPLACE PROCEDURE dbms_output_test
2 (
3 i_str IN VARCHAR2
4 )
5 IS
6 v_str VARCHAR2(32767);
7 $IF DBMS_DB_VERSION.VERSION <= 9
8 OR (DBMS_DB_VERSION.VERSION = 10
9 AND DBMS_DB_VERSION.RELEASE < 2)
10 $THEN
11 v_pices PLS_INTEGER;
12 C_NumOfChars CONSTANT PLS_INTEGER := 85;
13 $END
14 BEGIN
15 v_str := i_str;
16 $IF DBMS_DB_VERSION.VERSION <= 9
17 OR (DBMS_DB_VERSION.VERSION = 10
18 AND DBMS_DB_VERSION.RELEASE < 2)
19 $THEN
20 v_pices := CEIL(LENGTHB(v_str)/C_NumOfChars);
21 FOR i IN 1..v_pices LOOP
22 DBMS_OUTPUT.PUT_LINE(SUBSTR(v_str,(i-1)*C_NumOfChars+1,C_NumOfChars));
23 END LOOP;
24 $ELSE
25 DBMS_OUTPUT.PUT_LINE(v_str);
26 $END
27* END;
SCOTT> /

プロシージャが作成されました。

Oracle10g R2で条件コンパイル後のコードを確認!(コードがこんなにシンプルに!)

SCOTT> exec dbms_preprocessor.print_post_processed_source('PROCEDURE','SCOTT','DBMS_OUTPUT_TEST');
PROCEDURE dbms_output_test
(
i_str IN VARCHAR2
)
IS
v_str VARCHAR2(32767);
BEGIN
v_str := i_str;
DBMS_OUTPUT.PUT_LINE(v_str);
END;

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec dbms_output_test(rpad('32767',32767,'*'));
32767***************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
・・・・・中略・・・・・
********************************************************************************
********************************************************************************
***********************************************

PL/SQLプロシージャが正常に完了しました。

SCOTT>

| | | コメント (0) | トラックバック (0)

2007年10月16日 (火)

MacOSX Leapard 予約開始

ついに、Leopardの予約が始まった!〜〜。 同時にServerの予約も開始。

待ってました〜〜

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #3 - Oracle10g XEではどうよ?

OracleのXMLDBを試す簡単な環境は? ということで、Oracle10g R2 Express Editionを試してみた。
だが・・・・・今のところ利用できないようだ。次のリリースに期待。

バックナンバー:
Oracle de XMLDB #1
Oracle de XMLDB #2


以下、前回、Oracle Database 11gを構築したPC(CentOS 5)に、Oracle10g R2 Express Edition for Linux x86を追加インストールして試した記録。
尚、Oracle10g EXへは、同環境へインストール済みOracle Database 11g R1のSQL*Plusから接続した。(MacOSXからssh接続しているため、その方が楽だったので・・・)

G5Server:˜ oracle$ ssh oracle@glasscatfish
oracle@glasscatfish's password:
[oracle@glasscatfish ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 火 10月 16 0:04:43 2007

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

> conn sys@xe as sysdba
パスワードを入力してください:
接続されました。
SYS>
SYS> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SYS> select comp_name,version,status from dba_registry;

COMP_NAME VERSION STATUS
-------------------------------------------------- ------------------------------ ----------
Oracle Database Catalog Views 10.2.0.1.0 VALID
Oracle Database Packages and Types 10.2.0.1.0 VALID
Oracle Text 10.2.0.1.0 VALID
Oracle XML Database 10.2.0.1.0 VALID

SYS>
SYS> !
[oracle@glasscatfish ˜]$ ll
合計 8
drwxr-xr-x 2 oracle oinstall 4096 10月 14 15:32 Desktop
[oracle@glasscatfish ˜]$ pwd
/home/oracle
[oracle@glasscatfish ˜]$ mkdir scott_xmldir
[oracle@glasscatfish ˜]$ ll
合計 16
drwxr-xr-x 2 oracle oinstall 4096 10月 14 15:32 Desktop
drwxr-xr-x 2 oracle oinstall 4096 10月 14 15:44 scott_xmldir
[oracle@glasscatfish ˜]$ cd scott_xmldir
[oracle@glasscatfish scott_xmldir]$ cat list1.xml
<?xml version="1.0" encoding="UTF-8" ?>
<顧客名簿>
<顧客 id="128">
<住所>
<郵便番号>123-4567</郵便番号>
<都道府県>千葉県</都道府県>
<市町村名>浦安市</市町村名>
<町名番地>舞浜1-2-3</町名番地>
</住所>
<電話 タイプ="会社">03-1234-5678</電話>
<電話 タイプ="自宅">03-5555-6666</電話>
<電話 タイプ="携帯">090-1112-4444</電話>
<ファックス>03-8888-7777</ファックス>
<Eメール>hoge@macdeoracle.jp</Eメール>
</顧客>
<顧客 id="256">
<住所>
<郵便番号>155-5555</郵便番号>
<都道府県>東京都</都道府県>
<市町村名>世田谷区</市町村名>
<町名番地>用賀1-2-3</町名番地>
</住所>
<電話 タイプ="会社">03-7575-7575</電話>
<電話 タイプ="自宅">03-8585-8585</電話>
<電話 タイプ="携帯">090-9191-9191</電話>
<ファックス>03-4141-4141</ファックス>
<Eメール>hoge@discushamburg.jp</Eメール>
</顧客>
<顧客 id="512">
<住所>
<郵便番号>345-4567</郵便番号>
<都道府県>大阪府</都道府県>
<市町村名>中央区</市町村名>
<町名番地>難波2-2-2</町名番地>
</住所>
<電話 タイプ="会社">06-1234-5678</電話>
<電話 タイプ="自宅">06-5555-6666</電話>
<電話 タイプ="携帯">090-0606-0606</電話>
<ファックス>06-8888-7777</ファックス>
<Eメール>hoge@lampeye.jp</Eメール>
</顧客>
</顧客名簿>
[oracle@glasscatfish scott_xmldir]$ exit
exit

SYS>
SYS> create directory scott_xmldir as '/home/oracle/scott_xmldir';

ディレクトリが作成されました。

SYS> grant read on directory scott_xmldir to scott;

権限付与が成功しました。

SYS> grant write on directory scott_xmldir to scott;

権限付与が成功しました。

SYS>

SYS>
SYS>
SYS> conn scott@xe
パスワードを入力してください:
接続されました。
SCOTT>
SCOTT> declare
2 isSuccess boolean;
3 begin
4 isSuccess := dbms_xdb.createfolder('/public/scott');
5 end;
6 /

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> l
1 declare
2 r boolean;
3 begin
4 r := dbms_xdb.createresource(
5 '/public/scott/list1.xml',
6 bfilename('SCOTT_XMLDIR','list1.xml'),
7 nls_charset_id('AL32UTF8'));
8* end;
SCOTT> /

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> xquery
2 let $n := let("/public/scott/list1.xml")
3 return $n
4 /
ERROR:
ORA-19114: XQuery式を解析中にエラーが発生しました:
ORA-06550:行1、列13:
PLS-00201: 識別子SYS.DBMS_XQUERYINTを宣言してください。
ORA-06550:行1、列7:
PL/SQL: Statement ignored


SCOTT>

この日本語のメッセージでググっても、おそらく Oracle10g R2 XE上のXMLDBに関するものはヒットしないだろうということで・・・・

SCOTT> xquery
2 let $n := fn:doc("/public/scott/list1.xml")
3 return $n
4 /
ERROR:
ORA-19114: error during parsing the XQuery expression:
ORA-06550: line 1, column 13:
PLS-00201: identifier 'SYS.DBMS_XQUERYINT' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

英語メッセージに切り替え、英語のメッセージを表示させてからググってみた。
すると、ありましたよ。US OTNに。

http://forums.oracle.com/forums/message.jspa?messageID=1280038#1280038

ということで、Express Editionでは今のところこの機能は動作しないようだ。
次のリリースに期待するしかなさそうですね。



ついに、奥さんがMacBook Pro 15inchを購入、本日届いた! これで、このCentOS5+Oracle11gの環境も初期化して、初代のiMac G5どもども下取だな、そろそろ。
さてさて、LinuxのOracle11g環境を別に作らねば。。

| | | コメント (0) | トラックバック (0)

2007年10月15日 (月)

Oracle de XMLDB #2

前回、Oracle XML repositoryへXMLを格納したが、PL/SQLなどのAPIから操作するほか、Enterprise Managerからrepositoryを管理することができる。通常はこちらから管理したほうが楽でしょうね。

バックナンバー:
Oracle de XMLDB #1


以下、CentOS 5に構築したOracle11g の Enerprise Manager Database ControlをSafariから操作している様子。

Em11g_xml_resource1

Em11g_xml_resource2

Em11g_xml_resource3

| | | コメント (0) | トラックバック (0)

Oracle de XMLDB #1

前回のエントリでXML Master Professional Database認定試験向けのお勉強用環境をOracle10g/11g環境で作ろうかな。と書いたが早速作ってみた。

Oracle10g R2/Oracle11g R1をインストールすればXMLDBは標準でインストールされているので特に問題になることはないと思う。

ところで、Oracle10g R2からSQL*PlusからXQueryを直接実行できるようになっているのだが、ご存知だろうか?
この例では、Oracle XML RepositoryへXML文書を登録し、SQL*PlusからXQueryを直接発行する環境を作ってみる。

参考:
Oracle XML DB開発者ガイド 10gリリース2(10.2)- 20 Oracle XML DBリポジトリのデータへのアクセス
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス 10g リリース2(10.2)- 120 DBMS_XDB

まず、今回利用した環境の情報から。
OSは、CentOS4.4(Final) 32bit そう、今年始めに構築した、Oracle10g R2 の Linux RAC環境を利用した。 (Oracle11g R1 EEの環境もあるのだが手順は同じなので Oracle10g R2で構築した例を載せておく。)

[oracle@discus1 ˜]$ uname -svr
Linux 2.6.9-42.EL #1 Sat Aug 12 09:17:58 CDT 2006
[oracle@discus1 ˜]$ cat /etc/redhat-release
CentOS release 4.4 (Final)
[oracle@discus1 ˜]$ srvctl status database -d orcl
インスタンスorcl1はノードdiscus1で実行中です。
インスタンスorcl2はノードdiscus2で実行中です。
[oracle@discus1 ˜]$ srvctl status nodeapps -n discus1
VIPはノードで実行中です: discus1
GSDはノードで実行中です: discus1
リスナーはノードで実行中です: discus1
ONSデーモンはノードで実行中です: discus1
[oracle@discus1 ˜]$ srvctl status nodeapps -n discus2
VIPはノードで実行中です: discus2
GSDはノードで実行中です: discus2
リスナーはノードで実行中です: discus2
ONSデーモンはノードで実行中です: discus2
[oracle@discus1 ˜]$


SYS> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SYS>
SYS> select comp_name,version,status from dba_registry where comp_name like '%XML%';

COMP_NAME VERSION STATUS
-------------------------------------------------- ------------------------------ ----------
Oracle XML Database 10.2.0.1.0 VALID

SYS>


テストに利用するXMLファイル(list1.xml)を $ORACLE_HOME/scott_xmldir以下に作成

[oracle@discus1 scott_xmldir]$ ll
合計 4
-rw-r--r-- 1 oracle dba 2078 10月 13 21:28 list1.xml
[oracle@discus1 scott_xmldir]$ pwd
/u01/app/oracle/scott_xmldir/
[oracle@discus1 scott_xmldir]$ cat list1.xml
<?xml version="1.0" encoding="UTF-8"?>
<顧客名簿>
<顧客 id="128">
<住所>
<郵便番号>123-4567</郵便番号>
<都道府県>千葉県</都道府県>
<市町村名>浦安市</市町村名>
<町名番地>舞浜1-2-3</町名番地>
</住所>
<電話 タイプ="会社">03-1234-5678</電話>
<電話 タイプ="自宅">03-5555-6666</電話>
<電話 タイプ="携帯">090-1112-4444</電話>
<ファックス>03-8888-7777</ファックス>
<Eメール>hoge@macdeoracle.jp</Eメール>
</顧客>
<顧客 id="256">
<住所>
<郵便番号>155-5555</郵便番号>
<都道府県>東京都</都道府県>
<市町村名>世田谷区</市町村名>
<町名番地>用賀1-2-3</町名番地>
</住所>
<電話 タイプ="会社">03-7575-7575</電話>
<電話 タイプ="自宅">03-8585-8585</電話>
<電話 タイプ="携帯">090-9191-9191</電話>
<ファックス>03-4141-4141</ファックス>
<Eメール>hoge@discushamburg.jp</Eメール>
</顧客>
<顧客 id="512">
<住所>
<郵便番号>345-4567</郵便番号>
<都道府県>大阪府</都道府県>
<市町村名>中央区</市町村名>
<町名番地>難波2-2-2</町名番地>
</住所>
<電話 タイプ="会社">06-1234-5678</電話>
<電話 タイプ="自宅">06-5555-6666</電話>
<電話 タイプ="携帯">090-0606-0606</電話>
<ファックス>06-8888-7777</ファックス>
<Eメール>hoge@lampeye.jp</Eメール>
</顧客>
</顧客名簿>
[oracle@discus1 scott_xmldir]$


$ORACLE_HOME/scott_xmldirをdirectoryオブジェクトとして作成。今の所読み込みだけで十分だが、書き込み権限も付与しておく。

SYS> create directory scott_xmldir as '/u01/app/oracle/scott_xmldir/';

ディレクトリが作成されました。

SYS> grant read on directory scott_xmldir to scott;

権限付与が成功しました。

SYS> grant write on directory scott_xmldir to scott;

権限付与が成功しました。

SYS>

SYS>


この例では、XMLファイルをOracle XML repositoryへ登録する。/publicフォルダ以下に scott/xmlフォルダを追加作成後、/public/scott/xml以下へ対象のXMLファイルを登録する。
尚、データベースキャラクタセットは、AL32UTF8であり、登録するXMLファイルのエンコーディングは、UTF-8とした。

まず、/publicフォルダ以下に、scottフォルダを作成する。
SYS> conn scott@orcltest
パスワードを入力してください:
接続されました。

SCOTT> declare
2 r boolean;
3 begin
4 r := dbms_xdb.createfolder('/public/scott');
5 end;
6 /

PL/SQLプロシージャが正常に完了しました。

次に、/public/scottフォルダ以下に、xmlフォルダを作成する。
SCOTT> l
1 declare
2 r boolean;
3 begin
4 r := dbms_xdb.createfolder('/public/scott/xml');
5* end;
SCOTT> /

PL/SQLプロシージャが正常に完了しました。

/public/scott/xmlフォルダ直下へSCOTT_XMLDIRディレクトリオブジェクト以下にあるxmlファイル(list1.xml)を登録し、パスを/public/scott/xml/list1.xmlとする。
SCOTT> l
1 declare
2 r boolean;
3 begin
4 r := dbms_xdb.createresource(
5 '/public/scott/xml/list1.xml',
6 bfilename('SCOTT_XMLDIR','list1.xml'),
7 nls_charset_id('AL32UTF8'));
8* end;
SCOTT> /

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT>


最後に、確認の意味を含めて、XML repositoryへ登録したxmlをXQueryを利用して、SQL*Plusから直接問い合わせてみる。

SCOTT> set long 4000
SCOTT> l
1 xquery
2 let $d := fn:doc("/public/scott/xml/list1.xml")
3* return $d
SCOTT> /

Result Sequence
--------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?><顧客名簿><顧客 id="128"><住所><郵便番号>123-4567</郵便番号><都道府県>千葉県</都道府県><市町村
名>浦安市</市町村名><町名番地>舞浜1-2-3</町名番地></住所><電話 タイプ="会社">03-1234-5678</電話><電話 タイプ="自宅">03-5555-6666</電
話><電話 タイプ="携帯">090-1112-4444</電話><ファックス>03-8888-7777</ファックス><Eメール>hoge@macdeoracle.jp</Eメール></顧客><顧客 i
d="256"><住所><郵便番号>155-5555</郵便番号><都道府県>東京都</都道府県><市町村名>世田谷区</市町村名><町名番地>用賀1-2-3</町名番地></
住所><電話 タイプ="会社">03-7575-7575</電話><電話 タイプ="自宅">03-8585-8585</電話><電話 タイプ="携帯">090-9191-9191</電話><ファック
ス>03-4141-4141</ファックス><Eメール>hoge@discushamburg.jp</Eメール></顧客><顧客 id="512"><住所><郵便番号>345-4567</郵便番号><都道府
県>大阪府</都道府県><市町村名>中央区</市町村名><町名番地>難波2-2-2</町名番地></住所><電話 タイプ="会社">06-1234-5678</電話><電話 タ
イプ="自宅">06-5555-6666</電話><電話 タイプ="携帯">090-0606-0606</電話><ファックス>06-8888-7777</ファックス><Eメール>hoge@lampeye.jp
</Eメール></顧客></顧客名簿>



SCOTT>

ここまでできれば、XQuery1.0の実行は、SQL*Plusからダイレクトに行えるようになる。 簡単!。

あとは、いろいろなXQueryを試すのみ! Enjoy!

| | | コメント (0) | トラックバック (1)

2007年10月13日 (土)

DBMS_COMPARISONパッケージ で表データの比較 #6

「DBMS_COMPARISONパッケージで表データの比較」のつづき。

マニュアルは、DBMS_COMPARISONを利用するための前提が記載されているいるので、前提を満たしていないとどんなエラーになるか試してみた。

バックナンバー:
DBMS_COMPARISONパッケージ で表データの比較 #1
DBMS_COMPARISONパッケージ で表データの比較 #2
DBMS_COMPARISONパッケージ で表データの比較 #3
DBMS_COMPARISONパッケージ で表データの比較 #4
DBMS_COMPARISONパッケージ で表データの比較 #5



● もしも、2つの表に前提を満たす主キー制約が無かったら。。。。。

SCOTT> alter table emp2 drop constraint emp2_pk;

表が変更されました。

SCOTT> create table emp3 as select * from emp2;

表が作成されました。

SCOTT> begin
2 dbms_comparison.create_comparison(
3 comparison_name => '索引の無い表の比較',
4 schema_name => 'SCOTT',
5 object_name => 'EMP2',
6 dblink_name => null,
7 remote_schema_name => 'SCOTT',
8 remote_object_name => 'EMP3'
9 );
10 end;
11 /
begin
*
行1でエラーが発生しました。:
ORA-23626: 適格な索引が表SCOTT.EMP2にありません
ORA-06512: "SYS.DBMS_COMPARISON", 行4197
ORA-06512: "SYS.DBMS_COMPARISON", 行420
ORA-06512: 行2

ちなみに、ローカル表には主キー制約があり、リモート表(実際にリモートデータベーベースにある表、マテリアライズドビューである必要はない)に主キー制約が存在しない場合は、DBMS_COMPARISONパッケージは可能だった。
ただしその場合、データを比較する際リモート表が全表走査されることになるだろう(実際にトレース取ったわけではないが・・)から、主キー制約、または一意制約はあったほうがよいだろう。(この点には注意が必要だが、主キーベースのレプリケーション環境では影響はないかと。。)



そういえば、XML Master Professional Databaseが今年の12月から開始予定とのことなので、そろそろ、XML絡みのネタを増やしていこうか・・・、Oracle9i/10g さらに11gとXML DBとしての機能も強化してきたOracleなのでOracleを使ってXML Master Professional Databaseの受験対策環境作っておくのもいいなぁ・・・準備しておくか・・・

| | | コメント (0) | トラックバック (0)

DBMS_COMPARISONパッケージ で表データの比較 #5

「DBMS_COMPARISONパッケージで表データの比較」の続きです。

表の内容を比較すると比較結果がどんどん記録されていく。不要になった比較結果は削除しときましょ。

バックナンバー:
DBMS_COMPARISONパッケージ で表データの比較 #1
DBMS_COMPARISONパッケージ で表データの比較 #2
DBMS_COMPARISONパッケージ で表データの比較 #3
DBMS_COMPARISONパッケージ で表データの比較 #4



purge_comparison()drop_comparison()、関数名だけだと何を削除するのか分かりにくいな〜。ということでこれらの関数の確認も。。

● 比較結果をpurge_comparison()関数でパージする。

DBMS_COMPARISON.COMPARE()関数を実行すると、比較結果の詳細やサマリーなどが記録される。
不要になった結果はpurge_comparison()関数で、後始末。

SCOTT> select scan_id,comparison_name from user_comparison_scan order by scan_id;

SCAN_ID COMPARISON_NAME
---------- ------------------------------
1 EMP表の比較
2 EMP表の比較
3 EMP表の比較
4 EMP表の比較
5 EMP表の比較
6 EMP表の比較
7 EMP表の比較

7行が選択されました。

SCOTT> select scan_id,comparison_name from user_comparison_scan_summary order by scan_id;

SCAN_ID COMPARISON_NAME
---------- ------------------------------
1 EMP表の比較
2 EMP表の比較
3 EMP表の比較
4 EMP表の比較
5 EMP表の比較
6 EMP表の比較
7 EMP表の比較

7行が選択されました。

SCOTT> select scan_id,comparison_name from user_comparison_scan_values order by scan_id;

SCAN_ID COMPARISON_NAME
---------- ------------------------------
1 EMP表の比較
2 EMP表の比較
3 EMP表の比較
4 EMP表の比較
5 EMP表の比較
6 EMP表の比較
7 EMP表の比較

7行が選択されました。


SCOTT> select scan_id,comparison_name from user_comparison_row_dif order by scan_id;

SCAN_ID COMPARISON_NAME
---------- ------------------------------
3 EMP表の比較
4 EMP表の比較
4 EMP表の比較
6 EMP表の比較

SCOTT>

以下、指定したcomparisonに関連する比較結果全てをパージする例。
SCOTT> exec dbms_comparison.purge_comparison('EMP表の比較');

PL/SQLプロシージャが正常に完了しました。

SCOTT> select scan_id,comparison_name from user_comparison_scan order by scan_id;

レコードが選択されませんでした。

SCOTT> select scan_id,comparison_name from user_comparison_scan_summary order by scan_id;

レコードが選択されませんでした。

SCOTT> select scan_id,comparison_name from user_comparison_scan_values order by scan_id;

レコードが選択されませんでした。

SCOTT> select scan_id,comparison_name from user_comparison_row_dif order by scan_id;

レコードが選択されませんでした。

SCOTT>


● comparisonをdrop_comparison()関数で削除する。

作成したcomparisonが不要になったら、drop_comparison()関数で削除。
SCOTT> select comparison_name from user_comparison;

COMPARISON_NAME
------------------------------
EMP表の比較

SCOTT> select comparison_name,column_position from user_comparison_columns;

COMPARISON_NAME COLUMN_POSITION
------------------------------ ---------------
EMP表の比較 1
EMP表の比較 2
EMP表の比較 3
EMP表の比較 4
EMP表の比較 5
EMP表の比較 6
EMP表の比較 7
EMP表の比較 8

8行が選択されました。

SCOTT> exec dbms_comparison.drop_comparison('EMP表の比較');

PL/SQLプロシージャが正常に完了しました。

SCOTT> select comparison_name from user_comparison;

レコードが選択されませんでした。

SCOTT> select comparison_name,column_position from user_comparison_columns;

レコードが選択されませんでした。

SCOTT>

| | | コメント (0) | トラックバック (0)

2007年10月12日 (金)

DBMS_COMPARISONパッケージ で表データの比較 #4

「DBMS_COMPARISONパッケージで表データの比較」の続きです。

バックナンバー:
DBMS_COMPARISONパッケージ で表データの比較 #1
DBMS_COMPARISONパッケージ で表データの比較 #2
DBMS_COMPARISONパッケージ で表データの比較 #3




奥さんが、新しいMacBook Proを購入したので、今奥さんが使っているiMac G5とOracle Database 11g R1 + CentOS 5で遊んでいるIBM ThinkPad R52が下取り処分に。。。

あ〜〜〜、もう少しだけ遊ばせて〜〜〜! と慌てたり。。。まあ、DBMS_COMPARISONパッケージを試す程度はできそうですが。。。さて、Oracle11gで遊ぶ環境が無くなる〜。

どうしよう。。。既存の環境をつぶさなければインストールできそうにない、TurboLinux(United Linux 1.0)+Oracle9i R2/Oracle10g R1環境を潰すか。。

なんて、前置きはこれくらいにして。

● CONVERGE()関数でデータを一致させる。

EMP表の内容にEMP2表の内容を合わせるように指定して実行!。異なるデータだけが処理対象となっていることにお気づきだろうか。。
SCOTT> set serveroutput on
SCOTT> l
1 DECLARE
2 scanInfo DBMS_COMPARISON.COMPARISON_TYPE;
3 BEGIN
4 DBMS_COMPARISON.CONVERGE(
5 comparison_name => 'EMP表の比較',
6 scan_id => 2,
7 scan_info => scanInfo,
8 converge_options => DBMS_COMPARISON.CMP_CONVERGE_LOCAL_WINS

9 );
10 DBMS_OUTPUT.PUT_LINE('ScanID:'||to_char(scanInfo.scan_id));
11 DBMS_OUTPUT.PUT_LINE('Local rows merged:'||to_char(scanInfo.loc_rows_merged));
12 DBMS_OUTPUT.PUT_LINE('Remote rows merged:'||to_char(scanInfo.rmt_rows_merged));
13 DBMS_OUTPUT.PUT_LINE('Local rows deleted:'||to_char(scanInfo.loc_rows_deleted));
14 DBMS_OUTPUT.PUT_LINE('Remote rows deleted:'||to_char(scanInfo.rmt_rows_deleted));
15* END;
SCOTT> /
ScanID:2
Local rows merged:0
Remote rows merged:2
Local rows deleted:0
Remote rows deleted:1

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> select * from emp order by empno;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7000 PLECO MANAGER 7839 07-10-06 2500 30
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7788 SCOTT ANALYST 7566 87-04-19 3000 20
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7876 ADAMS CLERK 7788 87-05-23 1100 20
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
9999 DISCUS ANALYST 7839 07-10-06 3000 20

16行が選択されました。

SCOTT> select * from emp2 order by empno;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7000 PLECO MANAGER 7839 07-10-06 2500 30
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7788 SCOTT ANALYST 7566 87-04-19 3000 20
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7876 ADAMS CLERK 7788 87-05-23 1100 20
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
9999 DISCUS ANALYST 7839 07-10-06 3000 20

16行が選択されました。

SCOTT>

となっており、2表の内容は一致したようだ。(黙視しただけなので、RECHECK()関数でも確認してみることに。。。)


● RECHECK()関数で再度比較する。

前回の比較時に返されたscan_idとcomparison名を指定して再チェックするだけ。
SCOTT> l
1 BEGIN
2 DBMS_OUTPUT.PUT_LINE('======== 再比較結果 ========');
3 IF DBMS_COMPARISON.RECHECK('EMP表の比較', 2, true) THEN
4 DBMS_OUTPUT.PUT_LINE('EMP表とEMP2表の内容は同じです。');
5 ELSE
6 DBMS_OUTPUT.PUT_LINE('EMP表とEMP2表の内容に違いがあります。');
7 END IF;
8* END;
SCOTT> /
======== 再比較結果 ========
EMP表とEMP2表の内容は同じです。

PL/SQLプロシージャが正常に完了しました。

SCOTT>

2つの表の内容は一致しました!。めでたしめでたし!


ちょ〜〜〜〜〜っと待った〜〜〜〜〜っ!

マニュアルでは、RECHECK()関数は、2つの表の内容に違いが無かった場合FALSEを返すと記載されています。COMPARE()関数とは逆と記載されています。

しか〜〜〜し。Oracle Database 11g 11.1.0.6.0では、RECHECK()を実行し、2つの表の内容が同一の場合、COMPARE()関数と同様に、TRUEを返してきます。

そうなんです、マニュアルバグのようです!。
いずれ修正されると思うので現時点のマニュアルバグの証拠写真をカシャっ!

Dbms_comparison_manual_bug

以下はマニュアルからの引用


Return Values

This function returns TRUE when differences are found in the database objects being compared. This function returns FALSE when no differences are found in the database objects being compared.

となっており、違いがあれば、TRUEを、同じであれば、FALSEを返すと書かれています。皆さんご注意を。


また、RECHECK()関数は、同一か否かを判定するだけで、どのデータが違うといった情報までは取得していない。データが一致しているか一致していないかだけしか確認できない。どのデータが一致していないのかを確認するには、再度COMPARE()関数を実行する必要がある。とのこと。間違いやすいので要注意ですな〜〜。


Note:
This function does not identify new differences in the database objects that have appeared since the specified scan was run. To identify new differences, run the COMPARE function in this package.

| | | コメント (0) | トラックバック (0)

2007年10月11日 (木)

DBMS_COMPARISONパッケージ で表データの比較 #3

DBMS_COMPARISONパッケージで表データの比較の続きです。

バックナンバー:
DBMS_COMPARISONパッケージ で表データの比較 #1
DBMS_COMPARISONパッケージ で表データの比較 #2



前回は、2つの表を比較し内容が同一であることを確認した。というところまでだった。今回は、emp/emp2の内容が異なっている場合の例を。

● まず、emp表、emp2表で内容の一致しないデータを準備しておく。

SCOTT> 
SCOTT> insert into emp values(9999,'DISCUS','ANALYST',7839,sysdate,3000,null,20);

1行が作成されました。

SCOTT> insert into emp2 values(8888,'NEON','CLERK',7839,sysdate,1300,null,20);

1行が作成されました。

SCOTT> insert into emp values(7000,'PLECO','MANAGER',7839,sysdate,2500,null,30);

1行が作成されました。

SCOTT> insert into emp2 values(7000,'PLEGO','MANAGER',7839,sysdate,2500,null,30);

1行が作成されました。

SCOTT> commit;

コミットが完了しました。

SCOTT>

● COMPARE関数で比較してみる。

SCOTT> l
1 DECLARE
2 isSame BOOLEAN;
3 scanInfo DBMS_COMPARISON.COMPARISON_TYPE;
4 BEGIN
5 isSame := DBMS_COMPARISON.COMPARE(
6 comparison_name => 'EMP表の比較'
7 ,scan_info => scanInfo
8 ,perform_row_dif => true
9 );
10 DBMS_OUTPUT.PUT_LINE('========= 結果 =======');
11 DBMS_OUTPUT.PUT_LINE('scan_id='||TO_CHAR(scanInfo.scan_id));
12 IF isSame THEN
13 DBMS_OUTPUT.PUT_LINE('EMP表とEMP2表の内容は同じです。');
14 ELSE
15 DBMS_OUTPUT.PUT_LINE('EMP表とEMP2表の内容に違いがあります。');
16 END IF;
17* END;
SCOTT> /
========= 結果 =======
scan_id=2
EMP表とEMP2表の内容に違いがあります。

PL/SQLプロシージャが正常に完了しました。

SCOTT>

● user_comparison_scan_summaryビューや、user_comparison_row_difビューなどで比較結果を確認。

尚、2票間に同一キーを持つデータは存在するがキー以外の列値が異なっている場合、どの列値が異なっているか? というところまで確認することはできない。
SCOTT> l
1 select
2 c.comparison_name,
3 s.scan_id,
4 s.current_dif_count
5 from
6 user_comparison c join user_comparison_scan_summary s
7 on c.comparison_name = s.comparison_name
8 where
9* s.scan_id = 2
SCOTT> /

COMPARISON_NAM SCAN_ID CURRENT_DIF_COUNT
-------------- ---------- -----------------
EMP表の比較 2 3

SCOTT>
SCOTT> l
1 select
2 s.root_scan_id as scan_id,
3 s.comparison_name,
4 d.index_value,
5 s.status,
6 case
7 when local_rowid is not null
8 and remote_rowid is not null then
9 'ローカル表、リモート表に同一キーを持つ行が存在しますが、キー以外で列値に違いがあります。'
10 when local_rowid is null
11 and remote_rowid is not null then
12 'ローカル表に存在しない行がリモート表に存在します。'
13 when local_rowid is not null
14 and remote_rowid is null then
15 'ローカル表に存在する行がリモート表に存在しません。'
16 end as description
17 from
18 user_comparison_scan_summary s join user_comparison_row_dif d
19 on s.scan_id = d.scan_id
20 where
21 s.root_scan_id = 2
22 and s.parent_scan_id is not null
23 order by
24* d.index_value
SCOTT> /

SCAN_ID COMPARISON_NAME INDEX_VAL STATUS DESCRIPTION
---------- -------------------- --------- ---------------- ---------------------------------------------------------------------------
2 EMP表の比較 7000 ROW DIF ローカル表、リモート表に同一キーを持つ行が存在しますが、キー以外で列値に違いがあります。
2 EMP表の比較 8888 ROW DIF ローカル表に存在しない行がリモート表に存在します。
2 EMP表の比較 9999 ROW DIF ローカル表に存在する行がリモート表に存在しません。

SCOTT>

今日はここまで。
次回は、2つの表の内容を一致させてから再度比較してみる。

| | | コメント (0) | トラックバック (0)

2007年10月10日 (水)

Dashboard de Aquarium - 祝! 10000アクセス突破!

Dashboard de Aauarium v1.0を公開してから半年になりますが、当該エントリのアクセスが、

10000アクセスを突破。

アクセスしてくださった方々に感謝! 

(AppleのWidget downloadサイトへのアクセス数は把握できないので私のブログ上のアクセス数の累計です。)

そろそろ、次のバージョンをどのようにするか考えておきますか。。。

Dbms_comparison001

| | | コメント (0) | トラックバック (0)

DBMS_COMPARISONパッケージ で表データの比較 #2

DBMS_COMPARISONパッケージで表データの比較の続きです。

バックナンバー:
DBMS_COMPARISONパッケージ で表データの比較 #1



DBMS_COMPARISONパッケージを利用し2つの表を比較!。(今回は、同一データベース、同一スキーマ内でテーブルの内容を比較してみることにする。)


● 表データを比較する手順

COMPARISONを作成する。

(比較仕様を作成する。 とでも書いたほうがわかりやすいか?。。。)

・作成したCOMPARISONを元に比較する

(比較仕様を元に比較を実行する。 とでも書いたほうがわかりやすいか?。。。)




では、比較実験開始!

emp表を複製してemp2表を作成する。(まずは、表、索引まで完全に複製して比較。)

SCOTT> create table emp2 as select * from emp;

表が作成されました。

SCOTT>
SCOTT> alter table emp2 add constraint emp2_pk primary key (empno);

表が変更されました。

SCOTT>
SCOTT> select * from emp order by empno;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 NULL 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 NULL 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 NULL 30
7782 CLARK MANAGER 7839 81-06-09 2450 NULL 10
7788 SCOTT ANALYST 7566 87-04-19 3000 NULL 20
7839 KING PRESIDENT NULL 81-11-17 5000 NULL 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7876 ADAMS CLERK 7788 87-05-23 1100 NULL 20
7900 JAMES CLERK 7698 81-12-03 950 NULL 30
7902 FORD ANALYST 7566 81-12-03 3000 NULL 20
7934 MILLER CLERK 7782 82-01-23 1300 NULL 10

14行が選択されました。

SCOTT> select * from emp2 order by empno;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 NULL 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 NULL 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 NULL 30
7782 CLARK MANAGER 7839 81-06-09 2450 NULL 10
7788 SCOTT ANALYST 7566 87-04-19 3000 NULL 20
7839 KING PRESIDENT NULL 81-11-17 5000 NULL 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7876 ADAMS CLERK 7788 87-05-23 1100 NULL 20
7900 JAMES CLERK 7698 81-12-03 950 NULL 30
7902 FORD ANALYST 7566 81-12-03 3000 NULL 20
7934 MILLER CLERK 7782 82-01-23 1300 NULL 10

14行が選択されました。

SCOTT>


create_comparison関数でcomparisonを作成する。
2つの表(empとemp2)は、どちらも同一データベースのSCOTTスキーマに存在するため、dblink_name引数にはnullを指定する。

SCOTT> l
1 begin
2 dbms_comparison.create_comparison(
3 comparison_name => 'EMP表の比較'
4 ,schema_name => 'SCOTT'
5 ,object_name => 'EMP'
6 ,dblink_name => null
7 ,remote_schema_name => 'SCOTT'
8 ,remote_object_name => 'EMP2'
9 );
10* end;
SCOTT> /

PL/SQLプロシージャが正常に完了しました。

SCOTT>

作成されたcomparisonを確認するには、user_comparisonビュー/user_comparison_columnsビュー問い合わせる

SCOTT> l
1 select
2 comparison_name
3 ,scan_mode
4 ,schema_name||'.'||object_name||'(type='||object_type||')' as local
5 ,remote_schema_name||'.'||remote_object_name||'(type='||remote_object_type||')' as remote
6 ,dblink_name
7 ,last_update_time
8 from
9 user_comparison
10 where
11* comparison_name = 'EMP表の比較'
SCOTT> /

COMPARISON_NAME SCAN_MODE LOCAL REMOTE DBLINK_NAME LAST_UPDATE_TIME
--------------- --------- -------------------------- -------------------------- ----------- ------------------------------
EMP表の比較 FULL SCOTT.EMP(type=TABLE) SCOTT.EMP2(type=TABLE) NULL 07-10-06 15:58:36.665370

SCOTT>
SCOTT> select * from user_comparison_columns order by column_position;

COMPARISON_NAME COLUMN_POSITION COLUMN_NAME I
------------------------------ --------------- ------------------------------ -
EMP表の比較 1 EMPNO Y
EMP表の比較 2 ENAME N
EMP表の比較 3 JOB N
EMP表の比較 4 MGR N
EMP表の比較 5 HIREDATE N
EMP表の比較 6 SAL N
EMP表の比較 7 COMM N
EMP表の比較 8 DEPTNO N

8行が選択されました。

SCOTT>

compare関数を利用して比較する。

事前に作成されたcomparisonを元に、compare関数を利用して比較を行う。この時、比較処理事に採版されるscan_idを記録しておくとよいだろう。
scan_idは、内容に相違がある場合、その詳細をディクショナリビューから問い合わせたり、再比較する際に利用する。

SCOTT> set serveroutput on format wrapped
SCOTT> l
1 DECLARE
2 isSame BOOLEAN;
3 scanInfo DBMS_COMPARISON.COMPARISON_TYPE;
4 BEGIN
5 isSame := DBMS_COMPARISON.COMPARE(
6 comparison_name => 'EMP表の比較'
7 ,scan_info => scanInfo
8 ,perform_row_dif => true
9 );
10 DBMS_OUTPUT.PUT_LINE('========= 結果 =======');
11 DBMS_OUTPUT.PUT_LINE('scan_id='||TO_CHAR(scanInfo.scan_id));
12 IF isSame THEN
13 DBMS_OUTPUT.PUT_LINE('EMP表とEMP2表の内容は同じです。');
14 ELSE
15 DBMS_OUTPUT.PUT_LINE('EMP表とEMP2表の内容に違いがあります。');
16 END IF;
17* END;
SCOTT> /
========= 結果 =======
scan_id=1
EMP表とEMP2表の内容は同じです。

PL/SQLプロシージャが正常に完了しました。

SCOTT>

ということで、次回は表の内容が異なっている場合はどうなるかという例を。

| | | コメント (0) | トラックバック (0)

2007年10月 9日 (火)

MacOSXのX11 から Oracle Database 11g - 番外編 - 自動起動・停止

インストール、構成関連は前回で終わりとしていたが、自動起動、停止に関するエントリをアップし忘れていたので追記しておく。


まあ、自動起動、停止は、Oracleから提供されている dbstart/dbshutスクリプトを起動スクリプトから実行すれば良いだけなのと、マニュアルにも記載されているし、ググれば山ほどヒットするので細かい解説はしないのであしからず。

● Oracle Database 11g になっても、わすれちゃならねぇ、oratab編集!

[oracle@glasscatfish ˜]$ cat /etc/oratab
#



# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.

# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
lampsys:/u01/app/oracle/product/11.1.0/lampeye:Y
[oracle@glasscatfish ˜]$


● Oracleの起動スクリプトする、CentOS5では以下のようにした。(ORACLE_OWNER/ORACLE_HOMEはご自分で設定したユーザ名とパスを指定してくださいね。)

[root@glasscatfish init.d]# vi oracle
[root@glasscatfish init.d]# cat oracle
#!/bin/bash
# chkconfig: 35 80 30
# description: oracle database startup/shutdown script
#

. /etc/rc.d/init.d/functions

ORACLE_OWNER="oracle"
ORACLE_HOME="/u01/app/oracle/product/11.1.0/lampeye"


case "$1" in
start)
echo -n $"Starting Oracle Database 11g:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
echo "OK"
;;
stop)
echo -n $"Stopping Oracle Database 11g:"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut ORACLE_HOME"
echo "OK"
;;
*)
echo $"Usage: $0 {start|stop}"
esac
[root@glasscatfish init.d]#
[root@glasscatfish init.d]# chmod 750 oracle
[root@glasscatfish init.d]# chkconfig --add oracle
[root@glasscatfish init.d]# chkconfig --list | grep oracle
oracle 0:off 1:off 2:off 3:on 4:off 5:on 6:off
[root@glasscatfish init.d]#

あとは、CentOSを起動/停止し、 $ORACLE_HOME/startup.logや $ORACLE_HOME/shutdown.log/startup.logの内容及なども含め、正しく起動、停止しているか確認すればOK。

| | | コメント (0) | トラックバック (0)

2007年10月 8日 (月)

DBMS_COMPARISONパッケージ で表データの比較 #1

Oracle Database 11gで新たに追加されたDBMS_COMPARISONパッケージ
このパッケージは2つのTable/Single-table view/Materialized view(シノニムも可)を比較したり、データを一致させたりするための機能を提供するパッケージだ。
レプリケーション関連のマニュアルへのリンクもあるのでレプリケーション環境を意識した機能ではあるようだが、単に2つの表の内容を比較したり一致させることにも利用できるのでレプリケーション環境以外でも利用できる。

ただし、マニュアルに記載されているように利用できるデータ型や索引などの制限があるので、利用に際して事前調査は必要でしょうね。


参考:
Oracle Database PL/SQL Packages and Types Reference 11g Release 1 (11.1.) 31 DBMS_COMPARISON

ということで、早速試してみる。


環境は、先日作成したIBM Thinkpad R52 のCentOS 5上に構築したOracle Database 11g R1 11.1.0.6.0 for Linux (x86)を利用した。)

例によって、MacOSXのTerminalからssh経由で利用した。
(CentOS5/Oracle11gともエンコーディングにUTF-8を利用しているため、TerminalのエンコーティングもUTF-8に設定した。


Dbms_comparison001

まずは、Oracle Database 11gから新規追加されたDBMS_COMPARISONパッケージ関連のディクショナリービューの確認。(尚、DBA_*ビューも追加されている。)

[oracle@glasscatfish ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 月 10月 8 08:50:38 2007

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

> conn scott/tiger
接続されました。
SCOTT>
SCOTT>
SCOTT> desc user_comparison_scan
名前 NULL? 型
----------------------------------------- -------- ----------------------------
COMPARISON_NAME NOT NULL VARCHAR2(30)
SCAN_ID NOT NULL NUMBER
PARENT_SCAN_ID NUMBER
STATUS VARCHAR2(16)
COUNT_ROWS NUMBER
SCAN_NULLS VARCHAR2(1)
LAST_UPDATE_TIME TIMESTAMP(6)


SCOTT> desc user_comparison_scan_summary
名前 NULL? 型
----------------------------------------- -------- ----------------------------
COMPARISON_NAME NOT NULL VARCHAR2(30)
SCAN_ID NOT NULL NUMBER
PARENT_SCAN_ID NUMBER
ROOT_SCAN_ID NUMBER
STATUS VARCHAR2(16)
CURRENT_DIF_COUNT NUMBER
INITIAL_DIF_COUNT NUMBER
COUNT_ROWS NUMBER
SCAN_NULLS VARCHAR2(1)
LAST_UPDATE_TIME TIMESTAMP(6)

SCOTT> desc user_comparison_scan_values
名前 NULL? 型
----------------------------------------- -------- ----------------------------
COMPARISON_NAME NOT NULL VARCHAR2(30)
SCAN_ID NOT NULL NUMBER
COLUMN_POSITION NOT NULL NUMBER
MIN_VALUE VARCHAR2(4000)
MAX_VALUE VARCHAR2(4000)
LAST_UPDATE_TIME TIMESTAMP(6)

SCOTT> desc user_comparison_row_dif
名前 NULL? 型
----------------------------------------- -------- ----------------------------
COMPARISON_NAME NOT NULL VARCHAR2(30)
SCAN_ID NOT NULL NUMBER
LOCAL_ROWID ROWID
REMOTE_ROWID ROWID
INDEX_VALUE VARCHAR2(4000)
STATUS VARCHAR2(3)
LAST_UPDATE_TIME TIMESTAMP(6)

SCOTT>
SCOTT> desc user_comparison
名前 NULL? 型
----------------------------------------- -------- ----------------------------
COMPARISON_NAME NOT NULL VARCHAR2(30)
COMPARISON_MODE VARCHAR2(5)
SCHEMA_NAME VARCHAR2(30)
OBJECT_NAME VARCHAR2(30)
OBJECT_TYPE VARCHAR2(17)
REMOTE_SCHEMA_NAME VARCHAR2(30)
REMOTE_OBJECT_NAME VARCHAR2(30)
REMOTE_OBJECT_TYPE VARCHAR2(17)
DBLINK_NAME VARCHAR2(128)
SCAN_MODE VARCHAR2(9)
SCAN_PERCENT NUMBER
CYCLIC_INDEX_VALUE VARCHAR2(4000)
NULL_VALUE VARCHAR2(4000)
LOCAL_CONVERGE_TAG RAW(2000)
REMOTE_CONVERGE_TAG RAW(2000)
MAX_NUM_BUCKETS NUMBER
MIN_ROWS_IN_BUCKET NUMBER
LAST_UPDATE_TIME TIMESTAMP(6)

SCOTT>
SCOTT> desc user_comparison_columns
名前 NULL? 型
----------------------------------------- -------- ----------------------------
COMPARISON_NAME NOT NULL VARCHAR2(30)
COLUMN_POSITION NOT NULL NUMBER
COLUMN_NAME NOT NULL VARCHAR2(30)
INDEX_COLUMN VARCHAR2(1)


DBMS_COMPARISIONパッケージを利用するには、EXECUTEオブジェクト権限、及び、EXECUTE_CATALOG_ROLEロール(データディクショナリ内のオブジェクトに対するEXECUTE/SELECT権限)を実行するユーザへ付与する必要がある

SCOTT> conn / as sysdba
接続されました。
SYS> grant execute on dbms_comparison to scott;

権限付与が成功しました。

SYS> grant execute_catalog_role to scott;

権限付与が成功しました。

SYS> conn scott/tiger
接続されました。
SCOTT> desc dbms_comparison
FUNCTION COMPARE RETURNS BOOLEAN
引数名 タイプ In/Out Default?
------------------------------ ----------------------- ------ --------
COMPARISON_NAME VARCHAR2 IN
SCAN_INFO RECORD OUT
SCAN_ID NUMBER OUT
LOC_ROWS_MERGED NUMBER OUT
RMT_ROWS_MERGED NUMBER OUT
LOC_ROWS_DELETED NUMBER OUT
RMT_ROWS_DELETED NUMBER OUT
MIN_VALUE VARCHAR2 IN DEFAULT
MAX_VALUE VARCHAR2 IN DEFAULT
PERFORM_ROW_DIF BOOLEAN IN DEFAULT

・・・・・・・中略・・・・・・・

FUNCTION RECHECK RETURNS BOOLEAN
引数名 タイプ In/Out Default?
------------------------------ ----------------------- ------ --------
COMPARISON_NAME VARCHAR2 IN
SCAN_ID NUMBER IN
PERFORM_ROW_DIF BOOLEAN IN DEFAULT

SCOTT>

これでDBMS_COMPARISONパッケージを利用する準備は整った。というところで本日は終わり。

次回へ続く。

| | | コメント (0) | トラックバック (0)

2007年10月 6日 (土)

OSC (Open Source Conference) 2007 Tokyo/Fall #2

OSC 2007 Tokyo/Fall の2日目です。

実は、megawattさんとdrmarさんからビール蔵元ツア−へも誘われていたのだが、身重のウチの奥さんが少々安静にしているようにとのドクターからのお達し。ということで、あまり離れるわけにもいかず、当初の予定通り。ということで、今日は、2007-10-06 (土) Ruby Hot Topics 2007のだけ。

私は、Rubyも、Ruby on Railsも全くコーディング経験はないのだが、とにかく気になるんですよね。
奥さんが、C++より先に、Rubyやってたというのも多少なりとも影響はしているのだが。。

Rubyを知らないので、コードとか新機能とかの話はよくわからないので書かないが、とにかく遊んでみたいという気持ちが強くなってきているんですよね〜。(いろんなのに興味持ち過ぎ!・・・・・か・・・・)
で、今日のセミナーの感想を一言で表すと!


       わくわく感!

以上

Cimg7134

| | | コメント (0) | トラックバック (0)

2007年10月 5日 (金)

OSC (Open Source Conference) 2007 Tokyo/Fall #1

今日は、OSC (Open Source Conference) 2007 Tokyo/Fallに来ています。

OSCに来ると思うんですが、Mac使っている方が多いです〜。

入り口付近には、ずらりとならぶ、各ユーザグループやNPO法人などのブースがあり、その奥には、あの100ドルPCも。
Cimg7111

Cimg7116

2007-10-05 (金) 地域の自立・再生と地球環境を守るためのOSS活用提案
や、
2007-10-05 (金) 山形県立寒河江工業高校におけるLinux、オープンソースの取り組み
生まれは東京だが小学から高校までは山形(新庄)だったこともあり、田舎の経済や産業の現状を見ると、上記セミナーのタイトルにはひかれたのだが。。。参加したセミナーは

2007-10-05 (金) 地域の自立・再生と地球環境を守るためのOSS活用提案
OpenPNEの話題も出ていたが、そういえば、日本DEC同窓会のSNSもOpenPNEだな。

新庄市は財政状態が厳しいというのはニュースなどで見聞きしているが、この際いろいろなシステムにOSSを利用してしていくのもよいかもしれない。新しい市長さんへも言っとくか〜。。住民が減少傾向にあるのに道路ばかり作ってないで、新たな産業などへも目を向けて、それらを上手く活用するとか。
Cimg7112

2007-10-05 (金) オープンソースCMSの発展系、最新Plone3.0によるサイト構築
個人的には、「オープンソースCMSの発展系、最新Plone3.0によるサイト構築」が面白かったな〜。以前、仕事ではXOOPSをかなり使っていたが、Ploneもいいかも。
そういえば、Spring 8もPloneだとか。
以前からブログだけは拝見していたが本田氏のプレゼンでした。
Cimg7114

2007-10-05 (金) Heartbeatで簡単・手軽にクラスタリング!
Cimg7117
ということに。。。
ついでに、初めてカーネル読書会に参加しようと思っていたが、前日の無理がたたり、「Heartbeatで簡単・手軽にクラスタリング!」のあたりで強烈な睡魔が・・・。ということで早々に撤収。

受付で、アンケートと引き換えに抽選を。。。あ!   Asianuxのポロシャツが!!!。

明日も、興味のあるセミナーがあるのでちょっとだけ行く予定。

| | | コメント (0) | トラックバック (0)

MacOSXのX11 から Oracle Database 11g #7

MacOSXのX11 から Oracle Database 11g その7回目。
Enterprise Manager 11g Database Controlを起動してみる。

バックナンバー
MacOSXのX11 から Oracle Database 11g #1
MacOSXのX11 から Oracle Database 11g #2
MacOSXのX11 から Oracle Database 11g #3
MacOSXのX11 から Oracle Database 11g #4
MacOSXのX11 から Oracle Database 11g #5
MacOSXのX11 から Oracle Database 11g #6

Oracle10gのEnterprise Managerは、Safariなんかに最適化してませんなどと表示されていたが、Enterprise Manager 11gでは今のところem10gに類似する現象にはお目にかかっていない。。問題なさそう・・・かな・・。

Ora11g_em1

Ora11g_em2

Ora11g_em3

Ora11g_em4

Ora11g_em5

Ora11g_em6

Ora11g_em7

ということで、
Oracle11gのお遊び環境として利用しているThink Padが下取りに出されるまでに、Oracle11gの新機能で遊んでおきたいので、Oracle Database 11gのインストール絡みのエントリはこれでおしまい。

| | | コメント (0) | トラックバック (0)

2007年10月 4日 (木)

Oracle Database 11g - for Intel Mac

http://www.oracle.com/technology/support/metalink/index.html

によれば、Intel Mac 向け、Oracle Database 10g R2 と Oracle Database 11g R1のステータスが追加されていますね。 期待していますよ。オラクルさん。

Oracle11g_for_intel_mac_status

| | | コメント (0) | トラックバック (0)

MacOSXのX11 から Oracle Database 11g #6

MacOSXのX11 から Oracle Database 11g その6回目。
インストール後の作業。

バックナンバー
MacOSXのX11 から Oracle Database 11g #1
MacOSXのX11 から Oracle Database 11g #2
MacOSXのX11 から Oracle Database 11g #3
MacOSXのX11 から Oracle Database 11g #4
MacOSXのX11 から Oracle Database 11g #5

オラクル所有者の環境変数の<詳細はマニュアルを参照のこと。

今回設定した環境変数は以下を。

[oracle@glasscatfish ˜]$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# User specific aliases and functions

export TMP=/tmp
export TMP_DIR=/tmp

# for oracle11g
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/lampeye
export ORACLE_SID=lampsys
export ORA_NLS10=$ORACLE_HOME/nls/data
export NLS_LANG=japanese_japan.AL32UTF8
export CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/jlib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin:.
[oracle@glasscatfish ˜]$

一旦、停止後、Net Serviceも含めて手動での起動確認。

G5Server:˜ oracle$ 
G5Server:˜ oracle$
G5Server:˜ oracle$ ssh oracle@glasscatfish

oracle@glasscatfish's password:
Last login: Sun Sep 30 14:44:03 2007 from 192.168.1.19
[oracle@glasscatfish ˜]$ onsctl start
onsctl: ons started
[oracle@glasscatfish ˜]$ lsnrctl start

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 30-9月 -2007 14:47:05

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

/u01/app/oracle/product/11.1.0/lampeye/bin/tnslsnrを起動しています。お待ちください...

TNSLSNR for Linux: Version 11.1.0.6.0 - Production
システム・パラメータ・ファイルは/u01/app/oracle/product/11.1.0/lampeye/network/admin/listener.oraです。
ログ・メッセージを/u01/app/oracle/diag/tnslsnr/glasscatfish/listener/alert/log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=glasscatfish.macdeoracle.jp)(PORT=1521)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=glasscatfish.macdeoracle.jp)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 11.1.0.6.0 - Production
開始日 30-9月 -2007 14:47:05
稼働時間 0 日 0 時間 0 分 0 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル /u01/app/oracle/product/11.1.0/lampeye/network/admin/listener.ora
ログ・ファイル /u01/app/oracle/diag/tnslsnr/glasscatfish/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=glasscatfish.macdeoracle.jp)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。
[oracle@glasscatfish ˜]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on 日 9月 30 14:47:09 2007

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

SQL> conn / as sysdba
アイドル・インスタンスに接続しました。
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 514748416 bytes
Fixed Size 1300940 bytes
Variable Size 234882612 bytes
Database Buffers 272629760 bytes
Redo Buffers 5935104 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>


以下のようなエラーが発生する場合には、SELinuxを無効又は、Permissiveにすることを忘れている場合、KNOWN ISSUEじゃ! ちなみに、今回は、SELinuxを無効にしたが、マニュアルには、Permissiveに変更するよう記載されているので、本番環境では、Permissiveにしておくべきでしょうね。
http://www.oracle-base.com/articles/11g/OracleDB11gR1InstallationOnEnterpriseLinux4and5.php


[oracle@glasscatfish ˜]$ sqlplus /nolog
sqlplus: error while loading shared libraries: /u01/app/oracle/product/11.1.0/lampeye/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied


さて、次回は、EMを軽く操作してみましょうか。。

| | | コメント (0) | トラックバック (0)

iPod touchからも読まれてる!

出荷がはじまり、iPod Touch関連のエントリを目にするようになりました。早速、iPod touchで当ブログを見てくれた方がおられたようですね。
(☆〜が、どうしようと迷っている自分。。。いつ日本で発売されるのかもわからないiPhoneを待つのか〜〜と自問自答。)

iPhoneから読まれてる!でも書いたので

今回は、User-Agentの比較でもしておこうか。

iPhoneのUser-Agent
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420 (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3

iPod touchのUser-Agent
Mozilla/5.0 (iPod; U; CPU like Mac OS X; ja-jp) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A110a Safari/419.3


| | | コメント (0) | トラックバック (0)

2007年10月 3日 (水)

MacOSXのX11 から Oracle Database 11g #5

MacOSXのX11 から Oracle Database 11g その5回目、いよいよMacOSXのxtermからssh経由でOracle Database 11gのインストールのつづきをQuickTimeムービーでどうぞ。

バックナンバー
MacOSXのX11 から Oracle Database 11g #1
MacOSXのX11 から Oracle Database 11g #2
MacOSXのX11 から Oracle Database 11g #3
MacOSXのX11 から Oracle Database 11g #4

Oracle11gになっても、rootユーザでのshellスクリプト実行は必須ですな〜! (^^;;;

また、事前チェックでスワップ領域の警告がでたのだが、今回のインストールでは問題ないのでそのまま進めた。

(再生にはQuickTimeが必要です。)

約13MBでサウンドトラックなし。
oracle11gx11macosx


とCentOS5 へのOracle Database 11gのインストールは、予想通り順調ですね〜、次回へつづく。

| | | コメント (0) | トラックバック (0)

MacOSXのX11 から Oracle Database 11g #4

MacOSXのX11 から Oracle Database 11g その4回目、いよいよMacOSXのxtermからssh経由でOracle Database 11gのインストール。

バックナンバー
MacOSXのX11 から Oracle Database 11g #1
MacOSXのX11 から Oracle Database 11g #2
MacOSXのX11 から Oracle Database 11g #3

以下、MacOSXのX11、xtermからssh接続にて、CentOS 5上のOUI(Oracle Universal Installer)を起動してインストールしたスクリーンショットをどうぞ!
(カスタムインストールでOracle Database 11g R1 EEをインストールした様子です。)

まず、X11のxtermを起動し、SSH接続してOUIを起動。
(尚、LANG=ja_JP.UTF-8、NLS_LANG=japanese_japan.AL32UTF8のままでもOUIは文字化けしません。ただ、MacOSXの付属のX11のxtermでは文字化けしちゃいますけどね。TerminalはUTF-8に対応しているんだが。まあ、気になる方は、LANG=en_US.UTF-8、NLS_LANG=american_america.AL32UTF8などにして文字化け回避すればいいんじゃないだろうか。今回は、OUIで文字化けしなければ問題ないのでそのまま実行しちゃいます。)

Oui0001

xtermでは文字化けしてますが、OUIでは問題なし!
Oui0002


ということで、つづきはムービーで公開予定。
(ダウントードサイズが大きめのQuickTimeにするかYouTubeにするか検討中。いまのところ別エントリで公開予定)

| | | コメント (0) | トラックバック (0)

2007年10月 2日 (火)

MacOSXのX11 から Oracle Database 11g #3

MacOSXのX11 から Oracle Database 11g その3回目です。

バックナンバー
MacOSXのX11 から Oracle Database 11g #1
MacOSXのX11 から Oracle Database 11g #2

インストレーションガイドは一度は読んでおきましょうね。

では、お役即のインストーレーション前の準備作業から。
インストレーションガイドに示された順に行ったので、ガイドを読み進みながらやればいいと思いますよ。)

特に細かい解説はしないが、各作業に関連するマニュアルのリンクを載せているのでそちらも参照のこと。

● Disk Space Requirements -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Disk Space Requirements

[root@glasscatfish ˜]# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
35G 8.3G 25G 26% /
/dev/sda1 99M 11M 83M 12% /boot
tmpfs 1010M 0 1010M 0% /dev/shm


● Memory Requirements -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Memory Requirements

[root@glasscatfish ˜]# cat /proc/meminfo
MemTotal: 2066544 kB
・・・中略・・・
SwapTotal: 2031608 kB
・・・中略・・・
[root@glasscatfish ˜]# cat /proc/cpuinfo
・・・中略・・・
model name : Intel(R) Pentium(R) M processor 1.73GHz
・・・中略・・・

[root@glasscatfish ˜]#


● Operating System Requirements -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Operating System Requirements

● Kernel Reauirements -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Kernel Reauirements


今回は、前述のマニュアルには以下のような NOTEがある。まあ、お遊び環境なので Red Hat Enterprise Linux 5.0と互換の高いCentOS 5なら問題ないだろう。(ちなみに、Oracle10g R2をCentOS4.4へインストールした際もRea Hat Enterprise Linux 4.0へのインストール手順と変るところは無かった。)

Note:
Only the distributions and versions listed in the earlier itemized list are supported. Do not install the software on other versions of Linux.

[root@glasscatfish ˜]# cat /proc/version
Linux version 2.6.18-8.el5 (mockbuild@builder4.centos.org) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Thu Mar 15 19:57:35 EDT 2007
[root@glasscatfish ˜]#
[root@glasscatfish ˜]# uname -a
Linux glasscatfish 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 i686 i386 GNU/Linux
[root@glasscatfish ˜]#


● Package Requirements -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Package Requirements

● Compiler Requirements -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Compiler Requirements


注)libaio-devel-0.3.106-3.2、sysstat-7.0.0-3.el5、unixODBC-2.2.11-7.1、unixODBC-devel-2.2.11-7.1は、別途追加インストールした。
[root@glasscatfish ˜]# rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125-3.el5
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
gcc-4.1.1-52.el5
gcc-c++-4.1.1-52.el5
libaio-devel-0.3.106-3.2
libaio-0.3.106-3.2
libgcc-4.1.1-52.el5
libstdc++-4.1.1-52.el5
libstdc++-devel-4.1.1-52.el5
make-3.81-1.1
sysstat-7.0.0-3.el5
unixODBC-2.2.11-7.1
unixODBC-devel-2.2.11-7.1
[root@glasscatfish ˜]#


● Configuring Name Resolution -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Configuring Name Resolution

[root@glasscatfish ˜]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

192.168.1.7 glasscatfish.macdeoracle.jp glasscatfish
[root@glasscatfish ˜]#
[root@glasscatfish ˜]# hostname
glasscatfish.macdeoracle.jp
[root@glasscatfish ˜]#


● Creating Required Operationg System Groups and Users -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Creating Required Operationg System Groups and Users


グループは、oinstallとdbaを作成し、oracle所有者は、oracleとし、プライマリグループは、oinstall セカンダリグループは dba というお約束の構成にした。(今回は、ASMを利用しないので asmadminグループは作成しない。)
[root@glasscatfish ˜]# cat /etc/group | grep -E '(oinstall|dba)'
oinstall:x:501:oracle
dba:x:502:oracle
[root@glasscatfish ˜]#
[root@glasscatfish ˜]# cat /etc/passwd | grep oracle
oracle:x:501:501:oracle owner:/home/oracle:/bin/bash
[root@glasscatfish ˜]#

● Verifying that the User nobody Exists -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Verifying that the User nobody Exists

[root@glasscatfish ˜]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
[root@glasscatfish ˜]#


● Configuring Kernel Parameters -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Configuring Kernel Parameters

[root@glasscatfish ˜]# /sbin/sysctl -a | grep -E '(sem|shmall|shmmax|shmmni|file-max|ip_local_port_range|mem_default|mem_max|vmem_default|vmen_max)'
net.ipv4.ip_local_port_range = 32768 61000
net.core.optmem_max = 10240
net.core.rmem_default = 109568
net.core.wmem_default = 109568
net.core.rmem_max = 131071
net.core.wmem_max = 131071
kernel.sem = 250 32000 32 128
kernel.shmmni = 4096
kernel.shmall = 268435456
kernel.shmmax = 4294967295
fs.file-max = 205074
[root@glasscatfish ˜]#
[root@glasscatfish ˜]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
kernel.sem = 250 32000 100 128
fs.file-max = 65536
[root@glasscatfish ˜]#


● Setting Shell Limits for the oracle User -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Setting Shell Limits for the oracle User

[root@glasscatfish ˜]# tail -6 /etc/security/limits.conf

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
# End of file
[root@glasscatfish ˜]#
[root@glasscatfish ˜]# vi /etc/pam.d/login
[root@glasscatfish ˜]# tail -3 /etc/pam.d/login
#for oracle11g
session required /lib/security/pam_limits.so
session required /pam_limits.so
[root@glasscatfish ˜]#
[root@glasscatfish ˜]# vi /etc/profile
[root@glasscatfish ˜]# tail -14 /etc/profile
fi
done

unset i
unset pathmunge

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384
fi
fi
[root@glasscatfish ˜]#


● Creating an Oracle Base Directory -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Creating an Oracle Base Directory


Oracle Base directoryもいつもの、 /u01/app とした。尚、お遊び環境なので他のディレクトリの作成はOUIにお任せすることにした。


最後に、
● Configuring the oracle Users's Environment -
  Oracle® Database Installation Guide 11g Release 1 (11.1) for Linux - Configuring the oracle Users's Environment


Oracle所有者の環境変数などもいつもの同じなので特に解説するまでもないと思うので、マニュアルを参照してくださいね。

尚、今回作成するデータベースの SIDは、lampeye にするつもりだったのだが、打ち間違えて、lampsys になってしまった。(^^;;;
お遊び環境なので作り直しはせず、lampsys のままに・・・・・・。(本番環境作るときはタイプミスに注意しましょうね。。)

尚、今回は、MacOSXからxtermを利用するので、MacOSXからCentOS 5へXサーバーへのアクセスを許可しておく必要がある。お忘れなく!

例)IPアドレスが192.168.1.19へXサーバーへのアクセスを許可する場合。

[root@glasscatfish ˜]# xhost +192.168.1.19
192.168.1.19 being added to access control list
[root@glasscatfish ˜]#

ということで、 Oracle Database インストール前の準備はこんなところ、Oracle10g R2のインストール前作業と大きく変わるところはない。

次回はいよいよ、インストール。11gのインストーラーはどんな感じなのかなぁ・・・・・。

| | | コメント (0) | トラックバック (0)

2007年10月 1日 (月)

MacOSXのX11 から Oracle Database 11g #2

さて、前回からのつづきです。

CentOS 5をダウンロードし、CD6枚を作成し、あっという間にインストール終了。
MacOSXでCDを作成する方法は、「Mac De Oracle - 10万円 de RAC #9」などを参考に。

(CentOSのインストール方法は、さて前回紹介した書籍やネットをググって見てくださいね。)

CentOSのインストールについて解説するつもりはないが、インストール後にCentOS 5での準備については少々書いておく。

Oracle Universal Installer (以下、OUI)は、MacOSXのxtermからssh接続して実行するのでまずはssh接続の確認。

G5Server:˜ oracle$ ssh -Y oracle@glasscatfish
The authenticity of host 'glasscatfish (192.168.1.7)' can't be established.
RSA key fingerprint is 13:86:62:9a:95:2c:d7:98:11:aa:3b:f1:e2:35:05:b3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'glasscatfish,192.168.1.7' (RSA) to the list of known hosts.
oracle@glasscatfish's password:
Last login: Sat Sep 29 10:48:25 2007 from 192.168.1.13
[oracle@glasscatfish ˜]$

ついでに、VNCでの接続も確認しておく。(MacOSXからCentOSのGnome Desktopでいろいろとやる事もあだろうし。)
CentOS側では、メニューの「システム」->「設定」->「リモートデスクトップ」でVNCによるリモートデスクトップが利用できるようになっている。


Remote6 Remote7

MacOSXからはChiken of the VNCを利用し接続している。

Remote1 Remote2

Remote3

VNC接続に必要なポートを空けて必要があるのでFirewallの設定もお忘れなく。

Remote5

それと、Oracle Database 11gのインストール後に関するエントリにも書くつもりだが、SELinuxはPermissive又は無効にしておく必要がある。今回は無効にした。
(Oracle10gの時もそうだったな。)
尚、マニュアルには、Permissiveへ変更するよう記載されているので本番環境ではPermissiveにするべきでしょうね。

http://www.oracle-base.com/articles/11g/OracleDB11gR1InstallationOnEnterpriseLinux4and5.php
どのようなエラーになるのかは、Oracle Database 11gのインストール後に関するエントリで書く予定。


Remote4


しかし、Linuxのインストールや設定はバージョンアップ毎に楽になっているのがわかるよな〜。ほんと。

| | | コメント (0) | トラックバック (0)

2007年9月30日 (日)

MacOSXのX11 から Oracle Database 11g #1

いや〜、Oracle10gのころは各プラットフォームのOracle Databaseが次々にOTN USからダウンロードできたのになんか、Linux X86版リリース後、なかなか次のがないな〜。軸足がLinuxに置かれたのはなんとなく理解できるが・・・・。

しかたないので、Oracle Database 11g for Linux x86を CentOS 5.0へインストールして遊ぶことにした。

え、MacOSXとは無関係じゃん?!   

はい。それはそうなんですが、無理矢理絡めるのが Mac De Oracle流!


そう、 Oracle Database 11gのインストール作業はすべて、MacOSX X11のxtermからSSH接続して行うことにする。

CentOS 5は、Red Had Enterprise Linux 5と互換があるので、インストールには問題はないだろう。(Oracle10gをCentOS 4.4へインストールした際も全く問題なかったしね。)

では、まずは、利用する環境から。

● H/W - IBM (レノボ) ThinkPad R52 / CPU Pentium M 1.73Ghz / メモリ:2GB / DISK:40GB

今回利用しているノートPCは、妻が仕事で利用していたものなのだが、仕事も無事おわりMacがメインのウチでは邪魔なので、いずれ下取りに出すことが確定している。ただ、下取りに出すまで間、Oracle Database 11gのサーバーにして遊んでおこうか! というのが事の発端なのですがね。。・・・

● OS - CentOS 5 - i386

● Oracle Database 11g R1 EE for Linux X86

● そして、忘れちゃならねぇ、Mac - Apple PowerMac G5 Dual 2.7Ghz - MacOSX 10.4.10 Server
うちは未だに、IntelMacが無いのだが、LeopardがリリースされてMacBookなんか登場したら考えよ。・・・・・・・

参考
Oracle Database 11g マニュアル(英語)

CentOSが始めての方は、これなんかいいんじゃないかな。

あとは、これとか

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年9月28日 (金)

"日本語"のデータベースオブジェクト名 #2

ということで、前回のつづきというか、予告通り、"日本語"(マルチバイト文字)をデータベースオブジェクト名として定義しているデータベースで起こりうる問題点について。

"日本語"(マルチバイト文字)で 表名、列名、いないと思うけど(笑)ストアドプロシージャ名などを定義している方々は注意しておいたほうがよいだろう。

Oracleで許可されているデータベースオブジェクト名のサイズは、マニュアルにも記載されているように、データベース名とデータベースリンクを除き、30バイトまでと規定されていることを思い出してほしい。

日本語:Oracle Database SQLリファレンス 10g リリース2(10.2) - スキーマ・オブジェクトのネーミング規則

英語:Oracle® Database SQL Reference 10g Release 2 (10.2) - Schema Object Names and Qualifiers

例えば、データベースキャラクタセットが、JA16SJISである場合、テーブル名や列名を日本語(マルチバイト文字)で定義すると利用できる文字数は最大15文字までである。(半角英数字であれば、30文字)

以下、データベースキャラクタセット:JA16SJIS環境下でマルチバイト/シングルバイトでテーブル名を定義した場合の例

SCOTT> select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';

PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET JA16SJISTILDE

SCOTT>
SCOTT>
SCOTT> create table z12345678901234567890123456789 (a number);

表が作成されました。

●マルチバイト文字で15文字(30バイト)なのでOK!

SCOTT> create table "Z12345678901234" (a number);

表が作成されました。

SCOTT> create table z12345678901234567890123456789x (a number);
create table z12345678901234567890123456789x (a number)
*
行1でエラーが発生しました。:
ORA-00972: 識別子が長すぎます。

●マルチバイト文字で16文字(32バイト)なのでNG!

SCOTT> create table "Z123456789012345" (a number);
create table "Z123456789012345" (a number)
*
行1でエラーが発生しました。:
ORA-00972: 識別子が長すぎます。


SCOTT>
SCOTT> select table_name,lengthb(table_name) from user_tables;

TABLE_NAME LENGTHB(TABLE_NAME)
------------------------------ -------------------
Z12345678901234567890123456789 30
Z12345678901234 30

SCOTT>


前述のようなJA16SJISをデータベースキャラクタセットとするデータベースを、Unicodeのキャラクタセットである AL32UTF8 をデータベースキャラクタセットとするデータベースへ移行しようとした場合、どうなるか想像できますか?

想像できますよね? 

そう、単純には移行できないのですよ。JA16SJISでは2バイトだった文字がAL32UTF8では3バイトになる訳ですから。

マルチバイト1文字のバイト数の増加によりデータ量も増加するので、DISK容量の見直しも必要になるのですが、一番問題になるのが、日本語でデータベースオブジェクト名を定義しているという点でしょう。

もし、表名や列名を日本語(マルチバイト文字)11文字以上で定義しているとしたら、データベースキャラクタセットが AL32UTF8 であるデータベース上では、DDL全てがエラーになるはずです。
それらを修正するとなると、SQL/DDL文。その他プログラムに至まで、その影響は広範囲に渡るのではないでしょうか?


将来的なことも考慮してUnicode環境へ移行したいということであれば、コストを掛けて移行する価値はあると思います。その際にはシングルバイト文字で各名称を定義したほうがよいでしょうね。日本語の表名や列名の方が、直感的にわかりやすいからと日本語でテーブル名や列名を定義し、たった10文字でわかりやすい名称を定義することはかなり難しいと思いますから。

A:「--------」
B:「え、10文字でも定義できますよって!? 」
B:「もしや、"T123456789"とかいうテーブル名にでもしようと考えていますか?」
B:「それとも、名称を省略しまくって10文字以内の略名にしようと考えているのでしょうか?」
B:「それが、直感的に見てわかりやすい名称でしょうか?」
B:「見て、直感的に理解しやすいから日本語名称でテーブル名を定義したいのではないですか?」
な〜〜〜〜んて、やりとりが聞こえてきそう。。。

私が関わったところではそんな面倒なところは無かったので幸せだったりするが・・・・・

以下、データベースキャラクタセット:AL32UTF8環境でマルチバイト/シングルバイト、それぞれでテーブル名を定義した場合の例

SCOTT> select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';

PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET AL32UTF8

SCOTT>
SCOTT> create table z12345678901234567890123456789 (a number);

表が作成されました。

●マルチバイト文字で15文字(45バイト)!、当然サイズ超過!


SCOTT> create table "Z1234567891234" (a number);
create table "Z1234567891234" (a number)
*
行1でエラーが発生しました。:
ORA-00972: 識別子が長すぎます。

●マルチバイト文字で10文字。(30バイト)

SCOTT> create table "Z123456789" (a number);

表が作成されました。

●シングルバイト文字で31文字(31バイト)なので当然エラー!

SCOTT> create table z12345678901234567890123456789x (a number);
create table z12345678901234567890123456789 (a number)
*
行1でエラーが発生しました。:
ORA-00972: 識別子が長すぎます。


SCOTT>


SCOTT> select table_name,lengthb(table_name) from user_tables;

TABLE_NAME LENGTHB(TABLE_NAME)
------------------------------------------------------------ -------------------
Z123456789 30
Z12345678901234567890123456789 30

SCOTT>

| | | コメント (0) | トラックバック (0)

2007年9月27日 (木)

"日本語"のデータベースオブジェクト名 #1

Oracle10gのグローバリゼーションガイドには、新たに構築するデータベースでは、データベースキャラクタセットとして AL32UTF8 を推奨している。
Oracle Database グローバリゼーション・サポート・ガイド
10g リリース2(10.2)- データベース・キャラクタ・セットに関する指示書

ちなみに、Oracle製品間であっても、こんな注意点もある。
Oracle Content Management SDK(Oracle CM SDK)

とにかく、データベースキャラクタセットを選択する際には、関連するプロダクトの制限などもよ〜〜く調査して、方針を決めないといけないだろうね。あとで苦労しないためにも。

次回は、データベースキャラクタセット絡みで注意しないとならない点を書こうかな。
特に、日本語(マルチバイト文字)で表名、列名、その他のデータベースオブジェクト名を定義しているようなところでは注意しておいたほうがよい点について書いてみようかと。

そういえば、"日本語" de ストアドなんてお遊びもやってましたねぇ。(^^;;

| | | コメント (0) | トラックバック (0)

2007年9月23日 (日)

SQL*Loader で BLOBロード

少々前に、大量のBLOBデータをデータベースへロードするためのプログラムをコーディングしている方がいたのだが、そのプログラムの仕様を聞いてみたら、SQL*Loaderでも対応可能な内容だった。SQL*LoaderでBLOBデータをローディングできることは知らなかったのだ。知っていたらもっと楽だったろうに。


今回の例ではOracle10g R1を利用しているのだが、Oracle10g R2でも使い方は同じ。

● 参考:
・Oracle Database ユーティリティ 10g リリース1(10.1)
・Oracle Database ユーティリティ 10g リリース2(10.2)LOBFILEからのLOBデータロード
・Oracle Database ユーティリティ 10g リリース2(10.2)EXPRESSIONパラメータ

ということで、前述の話に比べると少々単純なのだがロードの例を一つ。

● まずは準備。

BLOBを格納する表のキーはユニークな数値なので、シーケンスを利用する。え!? SQL*Loaderでシーケンスが利用できるのか?
できるんです。EXPRESSIONパラメータを利用すれば!(EXPRESSIONパラメータの利用例は随分前にOTN-JのCode Tipsへも投稿してあったっけ。OTN-JのCode Tipsを参照するにはOTN-Jへのユーザ登録(無料)必要です。)

> conn scott/tiger
接続されました。
SCOTT>
SCOTT>
SCOTT> create sequence sq_blob_key
2 start with 1
3 increment by 1
4 maxvalue 999999
5 nocycle
6 nocache;

順序が作成されました。

BLOBデータを登録する表の定義は以下。
(blob用表領域は他のデーブルデータとは別表領域にしている)

SCOTT> l
1 create table blobtab
2 (
3 blob_id number primary key,
4 blob_type varchar(4),
5 content blob
6 )
7 lob(content) store as
8 (
9 tablespace blobspace
10 nocache logging
11* )
SCOTT> /

表が作成されました。

SCOTT>


● SQL*Loaderの制御ファイルとBLOBとして登録するファイルは同一ディレクトリ上へ配置。

ちなみに、Linux/Unix系OSでは、hostコマンドまたは、! を利用すればSQL*Plusからshellコマンドなとを直接実行できる。
SCOTT>  
SCOTT> !ls | grep -E '¥.(ctl|jpg|zip|png|gif)$'
blobload.ctl
discus.gif
generic_connectivity.zip
image001.png
neontetra.jpg

SCOTT>


● SQL*Loaderの制御ファイルの内容

ポイントは、シーケンスを利用するために、expressionパラメータで sq_blob_key.nextval と設定している点と、ex_fname FILLER以降の定義(赤字部分)。
SCOTT> !cat blobload.ctl
LOAD DATA
INFILE 'blobload.dat'
INTO TABLE blobtab
FIELDS TERMINATED BY ','
(
blob_id expression "sq_blob_key.nextval",
blob_type,
ext_fname FILLER CHAR(80),
content LOBFILE(ext_fname) TERMINATED BY EOF
)


● SQL*Loaderの制御ファイルのINFILEパラメータで指定するデータファイルの内容

この例では同一ディレクトリに配置した gif/zip/png/jpgを登録対象とした。
拡張子、ファイル名の順にカンマ区切りでデータファイルを作成。(awkを使えば簡単ですしね)

SCOTT> !ls | grep -E '¥.(zip|jpg|png|gif)$' | awk '{print substr($1,index($1,".")+1)","$1","}' > blobload.dat
SCOTT> !cat blobload.dat
gif,discus.gif,
zip,generic_connectivity.zip,
png,image001.png,
jpg,neontetra.jpg,

SCOTT>
SCOTT>


● 準備完了!

準備が整った。今回はSQL*Loaderの制御ファイル、データファイル、BLOBとして登録するファイルを同一ディレクトリに配置した。
SCOTT> !ls | grep -E '¥.(ctl|dat|jpg|zip|png|gif)$'
blobload.ctl
blobload.dat
discus.gif
generic_connectivity.zip
image001.png
neontetra.jpg

SCOTT>


● SQL*Loaderの実行

SCOTT> !sqlldr userid=scott/tiger@xtiger control=blobload.ctl log=blobload.log

SQL*Loader: Release 10.1.0.3.0 - Production on 土 9月 22 17:12:16 2007

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

コミット・ポイントに達しました。 - 論理レコード件数4

SCOTT>


● SQL*Loaderのログを確認!

SCOTT> !cat blobload.log

SQL*Loader: Release 10.1.0.3.0 - Production on 土 9月 22 17:12:16 2007

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

制御ファイル: blobload.ctl
データ・ファイルblobload.dat
不良ファイル: blobload.bad
廃棄ファイル: 指定なし

(すべて廃棄できます)

ロード数: ALL
スキップ数: 0
許容エラー数: 50
バインド配列: 64行、最大256000バイト
継続文字: 指定なし
使用パス: 従来型

表BLOBTAB、 ロード済 すべての論理レコードから
この表に対する有効な挿入オプション: INSERT

Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
BLOB_ID EXPRESSION
列のSQL文字列 : "sq_blob_key.nextval"
BLOB_TYPE FIRST * , CHARACTER
EXT_FNAME NEXT 80 , CHARACTER
(FILLERフィールド)
CONTENT DERIVED * EOF CHARACTER
動的LOBFILE - ファイル名EXT_FNAME


表BLOBTAB:
4行のロードに成功しました。
0行はデータ・エラーのためロードされませんでした。
0行はWHEN句のエラーのためロードされませんでした。
0行はすべてのフィールドがNULLのためロードされませんでした。

バインド配列に割り当てられた領域: 21760バイト(64行)
読取りバッファのバイト数: 1048576

スキップされた論理レコードの合計: 0
読み込まれた論理レコードの合計: 4
拒否された論理レコードの合計: 0
廃棄された論理レコードの合計: 0

実行開始土 9月 22 17:12:16 2007
実行終了土 9月 22 17:12:17 2007

実行時間: 00: 00: 00.80
CPUタイム : 00: 00: 00.06

SCOTT>


● 内容確認。(登録ファイルのサイズとBLOBサイズが同じであることを確認)

SCOTT> select
2 blob_id,
3 blob_type,
4 lengthb(content)
5 from
6 blobtab
7 order by
8 blob_id;

BLOB_ID BLOB LENGTHB(CONTENT)
---------- ---- ----------------
1 gif 9675
2 zip 20070
3 png 2327573
4 jpg 6492

SCOTT>
SCOTT> !ls -l | grep -E '¥.(jpg|zip|png|gif)$'
-rw-r--r-- 1 oracle oinstall 9675 Dec 31 1997 discus.gif
-rw-r--r-- 1 oracle oinstall 20070 Nov 17 2005 generic_connectivity.zip
-rw-r--r-- 1 oracle oinstall 2327573 Jul 21 16:21 image001.png
-rw-r--r-- 1 oracle oinstall 6492 May 4 1999 neontetra.jpg

SCOTT>

| | | コメント (0) | トラックバック (0)

2007年9月22日 (土)

iPhoneから読まれてる!

アクセスログを見ていて気付いたのだが、iPhoneから当ブログが読まれているのね。

User-Agentに以下のようなログが。。。

Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420 (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3

あ〜〜〜、いいな〜〜〜、ほしいな〜〜〜〜、☆〜〜〜。 なんとか日本でも発売できるようにしてください!!!

それまで、リコールで電池交換の済んだ、Nokia 702NKで辛抱しとくか・・・・・・。

| | | コメント (0) | トラックバック (0)

2007年9月17日 (月)

iMovie'08 で YouTube

先日のGoogleプロダクトセミナー#5でも紹介されていた、iMovie'08とYouTubeの連携を試してみた。Googleアカウントを持っている方や、既にYouTubeアカウントを取得済みの方は簡単なので試してみるといいですよ。

Apple Store(Japan)

2007/9/22更新
YouTubeへムービーをアップロードしたついでにGoogle Mapsで撮影場所をマーク!。マークをクリックすると新庄祭り(宵祭り)の映像が吹き出し表示されます。!


大きな地図で見る

では、iMovie'08で編集したムービーをYouTubeへアップロードするまでの手順を。

完成したムービーをYouTubeへ公開するため、メニューの「共有」->「YouTube...」を選択する。
Youtube_imovie02

iMovie'08からYouTubeへムービーをアップロードする際、YouTubeの既存アカウントが登録されていない場合、以下のようなダイアログが表示され、アカウント部分には何も表示されていない。次に、アカウントを追加するため「追加...」ボタンをクリックする。
Youtube_imovie03

「追加...」ボタンをクリックすると以下のようなダイアログが現れるので、「サインイン」ボタンをクリックする。
Youtube_imovie04

「サインイン」ボタンをクリックすると、Safariが起動し、YouTubeのアカウント作成/ログインページが表示される。
YouTubeのアカウントが無ければここで新規に作成し、既存アカウントがあればログインする。
(尚、Googleアカウントを持っている場合には、Googleアカウントでログインできる。YouTubeアカウントが無い場合は作成する。以後、Googleアカウントでログインするだけで利用できるようになる。)

尚、以下のスナップショットでは英語のページが表示されているが、右上にあるリンク「Site:」をクリックすると表示される国旗から「日本の国旗」をクリックすれば日本語表示に切り替わりますよ。

Youtube_imovie05

私の場合、Googleアカウントログインし、新規にYouTubeアカウントを作成した。(以後、Googleアカウントでログインすればアップロードなどの機能が利用できる。)
Youtube_imovie06

YouTubeへログインすると、iMovieを使って動画をアップロードするための許可をするかを尋ねられるので、「許可」ボタンをクリックする。
Youtube_imovie07
Youtube_imovie09

iMovieを使って動画のアップロードすることを許可すると、表示されていたiMovie'08のダイアログは次のように「サインインを確認」ボタンが操作不可から操作可能な状態へ変わる。この状態で、「終了」ボタンをクリックする。
Youtube_imovie10

すると、アップロードするムーブーに関する情報を入力するダイアログが表示される。このダイアログで公開するムービーのカテゴリ、タイトル、説明、タグ、サイズ等を設定する。設定が済んだら、「次へ」ボタンをクリックする。
Youtube_imovie11

次に、YouTubeの利用条件が表示される。公開する場合は、「公開」ボタンをクリックする。
Youtube_imovie12

「公開」ボタンをクリックすると、iMovie'08は、該当ムービーをYouTubeへアップロードし始める。あとはアップロードが完了するのを待つのみだ。
尚、ムービーのアップロード完了後、アップロードした動画をYouTubeで閲覧できるようになるまでには暫く時間がかかる。

Youtube_imovie13 Youtube_imovie15 Youtube_imovie16
Youtube_imovie17_3


はいできあがり!
アップロードしたムービーは以前QuicTimeムービーとして載せたiMovieで作成した新庄祭り。

| | | コメント (0) | トラックバック (0)

2007年9月16日 (日)

MERGE文 #2 - 同一表でマージ?!

merge文を利用したついでに、merge文のTipsも1つ紹介しておきましょう。(Oracle9iでmerge文が追加された際、OTN-Jでも同じ話題があったので投稿したネタですが使えるTipsなのでね。。今そのスレッドの日付を見たら、なんと、2002年。。。時の経つのは早いもので。。。)

ということで、今回はMERGE文のTipsを一つ。

この内容は、2002年にOracle9iでmerge文がサポートされた頃にOTN-Jのフォーラムに投稿した内容ですが、「同一表を使ってMERGE文を実行する」というTipsです。

MERGE文ばOracle9iから登場するということで、リリース直後からMERGE文についてはいろいろと実験をしていて、通常2つの表を使うMERGE文を1つの表だけで行えないのか? とあれやこれや試し、dual表を上手に利用すれば実現可能であることがわかっていた。ほぼその頃にOTN-Jのフォーラムに投稿された内容に。。

単一の表だけでMERGE文を実行できるか?  というスレッド

があったのでレスを付けたのが2002年。

投稿したのはWindowsで実験したログだったが、MERGE文を試していた環境は日本ではリリースされなかった? Oracle9i R2 Developer Preview for MacOSX Server (Jaguar)上だったんですよ〜。マニアック過ぎるけど。。。。

例では、1つの表に対して、データが存在していなければデータ登録、存在していれば更新するという処理をMERGE文だけで行っています。
通常2つの表を利用するMERGE文ですが、dual表をダミーとして利用すれば、1つの表に対してMERGE文を実行できるというわけです。
(MERGE文の用途は結構広いので、知っていて損はないと思いますよ〜。)
ただし、内部では複雑なことをやっているようなので、事前にBUG情報などをチェックしておくこともよいかもしれません。(不具合により意図した動作をしない場合を想定して、代替案を考えなくてはなりませんからね。)

ということで、2002年に投稿した内容より。

Oracle9i 9.0.1.3.0 EE for windowsで試したログ

SQL> set linesize 132
SQL> set pagesize 500
SQL> column create_timestamp format a30
SQL> column update_timestamp format a30
SQL> column id format a4
SQL> column data format a4

SQL> create table sample_table
2 (
3 id varchar2(10) primary key,
4 data varchar2(40),
5 create_timestamp timestamp,
6 update_timestamp timestamp
7 );

表が作成されました。

SQL> create table sample_table_temp
2 (
3 id varchar2(10) primary key,
4 data varchar2(40),
5 create_timestamp timestamp,
6 update_timestamp timestamp
7 );

表が作成されました。

SQL> insert into sample_table values('A001','HOGE',systimestamp,null);

1行が作成されました。

SQL> insert into sample_table values('A002','SOLE',systimestamp,null);

1行が作成されました。

SQL> insert into sample_table values('A003','DOLE',systimestamp,null);

1行が作成されました。

SQL> insert into sample_table values('A004','KOLE',systimestamp,null);

1行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> insert into sample_table_temp values('A003','どれ',systimestamp,null);

1行が作成されました。

SQL> insert into sample_table_temp values('A002','それ',systimestamp,null);

1行が作成されました。

SQL> insert into sample_table_temp values('B001','なに',systimestamp,null);

1行が作成されました。

SQL> insert into sample_table_temp values('B002','ほれ',systimestamp,null);

1行が作成されました。

SQL> commit;

コミットが完了しました。



※まずは、2つの表の単純なマージでMERGE文の感覚を掴む!

SQL> merge into sample_table
2 using sample_table_temp
3 on (sample_table.id = sample_table_temp.id)
4 when matched then
5 update set
6 sample_table.data = sample_table_temp.data,
7 sample_table.update_timestamp = systimestamp
8 when not matched then
9 insert values
10 (
11 sample_table_temp.id,
12 sample_table_temp.data,
13 systimestamp,
14 null
15 );

4行がマージされました。

SQL> select * from sample_table;

ID DATA CREATE_TIMESTAMP UPDATE_TIMESTAMP
---- ---- ------------------------------ ------------------------------
A001 HOGE 02-05-23 13:24:59.000001
A002 それ 02-05-23 13:25:59.000001 02-05-23 13:40:59.000000
A003 どれ 02-05-23 13:26:20.000001 02-05-23 13:40:59.000000
A004 KOLE 02-05-23 13:26:57.000000
B002 ほれ 02-05-23 13:40:59.000000
B001 なに 02-05-23 13:40:59.000000

6行が選択されました。

SQL> commit;


SQL> select * from sample_table;

ID DATA CREATE_TIMESTAMP UPDATE_TIMESTAMP
---- ---- ------------------------------ ------------------------------
A001 HOGE 02-05-23 13:24:59.000001
A002 SOLE 02-05-23 13:25:59.000001
A003 DOLE 02-05-23 13:26:20.000001
A004 KOLE 02-05-23 13:26:57.000000


SQL> select * from sample_table_temp;

ID DATA CREATE_TIMESTAMP UPDATE_TIMESTAMP
---- ---- ------------------------------ ------------------------------
A003 どれ 02-05-23 13:27:40.000001
A002 それ 02-05-23 13:28:04.000001
B001 なに 02-05-23 13:28:28.000001
B002 ほれ 02-05-23 13:28:56.000001



※本題、dual表をダミーとして同一表でMERGE文を利用する。以下の例では、同一キーがないため、挿入されます。
SQL> merge into sample_table src
2 using ( select 'C001' id from dual ) dummy
3 on ( src.id = dummy.id )
4 when matched then
5 update set
6 data = 'だ!',
7 update_timestamp = systimestamp
8 when not matched then
9 insert values
10 (
11 'C001',
12 'だ〜',
13 systimestamp,
14 null
15 );


1行がマージされました。

SQL> select * from sample_table;

ID DATA CREATE_TIMESTAMP UPDATE_TIMESTAMP
---- ---- ------------------------------ ------------------------------
A001 HOGE 02-05-23 13:24:59.000001
A002 それ 02-05-23 13:25:59.000001 02-05-23 13:40:59.000000
A003 どれ 02-05-23 13:26:20.000001 02-05-23 13:40:59.000000
A004 KOLE 02-05-23 13:26:57.000000
B002 ほれ 02-05-23 13:40:59.000000
B001 あ! 02-05-23 13:40:59.000000 02-05-23 14:06:28.000000
C001 だ〜 02-05-23 14:37:08.000001

7行が選択されました。


※さらに同一文を実行すると、同一キーがあるため更新されます。
SQL> merge into sample_table src
2 using ( select 'C001' id from dual ) dummy
3 on ( src.id = dummy.id )
4 when matched then
5 update set
6 data = 'だ!',
7 update_timestamp = systimestamp
8 when not matched then
9 insert values
10 (
11 'C001',
12 'だ〜',
13 systimestamp,
14 null
15 );

1行がマージされました。

SQL> select * from sample_table;

ID DATA CREATE_TIMESTAMP UPDATE_TIMESTAMP
---- ---- ------------------------------ ------------------------------
A001 HOGE 02-05-23 13:24:59.000001
A002 それ 02-05-23 13:25:59.000001 02-05-23 13:40:59.000000
A003 どれ 02-05-23 13:26:20.000001 02-05-23 13:40:59.000000
A004 KOLE 02-05-23 13:26:57.000000
B002 ほれ 02-05-23 13:40:59.000000
B001 あ! 02-05-23 13:40:59.000000 02-05-23 14:06:28.000000
C001 だ! 02-05-23 14:37:08.000001 02-05-23 14:37:30.000000

7行が選択されました。

| | | コメント (0) | トラックバック (0)

2007年9月15日 (土)

MERGE文 #1 - 重複行の削除

ははは、久々のOracleネタです。

最近、OTN-Jのフォーラムを閲覧したり返信したりする回数を控えている。Feedの概要だけ眺めている事が多くなってきていることも影響しているが、興味をそそる内容のものが少ないことや、本家US OTNのフォーラムOracle Aceの方々のブログのほうが面白いのもその理由の一つ)

で、しばらく振りで、面白そうなネタだったのでレスを付けた。
ちょいと前のネタになるが、

定義の同じ2つの表のデータを纏めて表示したい。ただし、重複データを除く。また、重複していた件数も取得したい。。。。

というスレッド。

ただ質問内容を読むと、最近よくある実行環境(Oracleのバージョンなど)を記述せず、●●したいというタイプの質問。
(単に書き忘れかもしれないが、問題が発生している環境やOracleのバージョンを書かずに意図した答えを待ってるなんて時間がもったいないじゃん。そこんとこをちゃんと公開していれば、もっと早く意図した解答得られたと思うが。。)
そして、最後まで、実行環境に関する情報は未提示のままスレッドは終わるのであった〜〜(笑)

ということで質問内容など詳細は下記URLで
http://otn.oracle.co.jp/forum/message.jspa?messageID=35016369&tstart=15

私がレスした内容は以下のようなもの。


(質問内容のカラム名が ”日本語”だったので例題も引用識別子で囲んだ日本語の表/列名にしてあります。私は実際の開発では使いませんけどね、日本語オブジェクト名なんて。。


主キー制約や一意制約、その他の制約などが提示されていないので勝手に作ってありますが、merge文を使えば出来ますよ。
尚、Oracle10gを利用していものと仮定していますので、Oracle9i以前である場合、merge文でdeleteを実施することはできません。

また、暗黙カーソルを利用していますので、sql%rowcount属性で重複行数(マージした行数)を取得しています。
(明示カーソルにした場合は、カーソル名%rowcount)

他の方法もあると思いますので、あとは処理速度等比較し、よい方を採用すれば良いと思います。

詳細は、SQLや、PL/SQLリファレンスマニュアルの merge文及び、カーソル属性あたりを確認してみてください。

SCOTT> create table "テーブルA"
2 ("商品コード" char(5) not null,
3 "送品年月日" date not null,
4 "個数" number(4) not null
5 );

表が作成されました。

SCOTT> create table "テーブルB" as select * from "テーブルA";

表が作成されました。

SCOTT>

データの登録・・・・中略・・・・

SCOTT> alter session set nls_date_format = 'yyyy/mm/dd';

セッションが変更されました。

SCOTT> select * from "テーブルA";

商品コード 送品年月日 個数
-------- ---------- ----------
00001 2007/07/18 5
00002 2007/07/18 6
00003 2007/07/19 7
00004 2007/07/18 5
00005 2007/07/20 4
00001 2007/07/19 8
00002 2007/07/19 2
00003 2007/07/20 0

8行が選択されました。

SCOTT> select * from "テーブルB";

商品コード 送品年月日 個数
-------- ---------- ----------
00001 2007/08/18 5
00002 2007/08/18 6
00003 2007/07/19 9
00004 2007/08/18 5
00005 2007/08/20 4
00001 2007/07/19 10
00002 2007/08/19 2
00003 2007/08/20 0

8行が選択されました。


SCOTT> set serveroutput on
SCOTT> l
1 begin
2 merge
2 into "テーブルA" dest
3 using "テーブルB" src
4 on (
5 dest."商品コード"=src."商品コード"
6 and dest."送品年月日"=src."送品年月日"
7 )
8 when matched then update set dest."個数"=-1
9 delete where dest."個数"=-1;
10 dbms_output.put_line(sql%rowcount);
11* end;
SCOTT> /

2

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> select * from "テーブルA";

商品コード 送品年月日 個数
-------- ---------- ----------
00001 2007/07/18 5
00002 2007/07/18 6
00004 2007/07/18 5
00005 2007/07/20 4
00002 2007/07/19 2
00003 2007/07/20 0

6行が選択されました。

SCOTT>

マニュアルにもしっかり記述されているが、merge文のdelete句を利用する場合のポイントは、マージ条件に一致し、update句で更新対象となったデータがdelete句の処理対象となるという点だ。delete句がupdate句とは個別に実行されるわけではない。
前述の例では、update句でマージ条件に一致したデータ(この場合は重複しているデータ)の”個数”を-1に変更し、delete句で "個数” = -1となったデータ(重複したデータ)を削除している。
このことを理解していないと意図した結果を得られないので要注意。(一度理解してしまえば間違ることもなくなると思うが。。。)

merge文を利用したついでに、merge文のTipsも1つ紹介しておきましょう。(Oracle9iでmerge文が追加された際、OTN-Jでも同じ話題があったので投稿したネタですが使えるTipsなのでね。。
今そのスレッドの日付を見たら、なんと、2002年。。。時の経つのは早いもので。。。)

では、次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年9月13日 (木)

MySQL Users Conference Japan 2007 #2

MySQL Users Conference Japan 2007の最終日です。

コンファレンスの内容などは、他方々のブログ等のエントリで十分なので特に書く事もないのだが、例によって参加したセッションの一こまを。

● パネルディスカッション: MySQL の独自性と優位点

Kaj Arno, VP Community, MySQL AB
Patrick Bolduan, MTV Japan (Customer)
Kai Seidler, XAMPP (Community Member)
Marten Mickos, CEO, MySQL AB
Michael "Monty" Widenius, MySQL Fellow and Co-founder, MySQL AB
Brian Aker, Director of Architecture, MySQL AB

Cimg6581

● MySQL の Plugin API 詳細解説(ストレージエンジン自作入門)

Brian Aker  - Director of Architecture, MySQL AB
Cimg6582

● MySQL Cluster 入門

Stewart Smith - Cluster Developer, MySQL AB
Cimg6585

● MySQL Cluster の詳細解説

Stewart Smith - Cluster Developer, MySQL AB
Cimg6586

● MySQL 5.1の詳細解説

Brian Aker - Stewart Smith
Cimg6587

● MySQL テクニカルケーススタディ(海外事例解説)

Jimmy Guerrero - Product Manager for MySQL Cluster, MySQL AB
Cimg6588

● レセプション

今日はこの後、しっかりと夕食を食べることになっているので、軽く摘んでおきました。(^^
ワインやビールもありましたが何せ車なのでウーロンだけ〜。
レセプションの最後に抽選があったんですけど、当たっちゃいました。くじ運悪い私が!。
頂いたものは後日、ブログ de ノベルティへ。

Cimg6594

20070912001 20070912002 20070912003

スーツよりジーンズな方が多いのは、それだけで楽しかったりして。

あ、忘れるところだったが、Q&Aで、MySQLの storage engineとしてDB2を利用できるようにするという話題に関しても少々触れていたましたねぇ。今後どうなるんでしょうねぇ。



2007/9/13追記
セッションで使用したプレゼン内容は、あとで公開されるようなことを言っていましたね。そういえば。
ということで、セッションの資料が公開されたらリンクを追加する予定。

以下のエントリは詳細なメモが記載されてますね (^^;。
http://d.hatena.ne.jp/akiyan/20070911

従業員用食堂か〜〜、気付かなかったよ〜。 1200円も払ってまずい煮込みハンバーグ+マッシュポテトだったよ。(><)
http://nonn-et-twk.net/twk/node/93

| | | コメント (0) | トラックバック (0)

2007年9月12日 (水)

Google プロダクトセミナー #5

え〜。またまたまた、Oracle以外のネタです。 m(_ _)m
MySQL users conference Japan 2007の帰りに、銀座のアップルストアへ寄り道。iPod touch以外のiPodの実物を体感。 


そのついでに、Google プロダクトセミター #5へも参加。え〜〜っと今回のノベルティは前回と同じでした。

内容は、YouTube 、iLife '08の iMovieとYouTubeの連携、それに、Adsence + iWeb。
YouTubeは、アカウントは取得済みなので、iMovieから直接アップロードを試してみるつもりだ。(今週末かな。。)

| | | コメント (0) | トラックバック (0)

2007年9月11日 (火)

MySQL Users Conference Japan 2007 #1

え〜〜っ。またまた、オラクル以外のネタ。 MySQL Users Conference Japan 2007に来ています。
(Generic ConnectivitiyネタでもMySQLはやってますが、なにせ、4.x及び、4.1なのでね。。。いずれ、5.x系のMySQLと10g R1 又は、11g R1でGeneric Connectivityネタもやりたいし。。。MacOSX版のOracle11gがリリースされればの話ですが。。)

Mysqlucjapan2007

Cimg6560

ということで、本日参加したセッションは、

● MySQL高可用性ソリューションの概要

Overview of MySQL HA solutions
- Jimmy Guerrero (Product Manager for MySQL Cluster, MySQL AB)

● 社内外の開発者が参加するMySQLの開発モデル

MySQL architecture of Participation
- Kaj Arno (VP Community Relations, MySQL AB)

Cimg6564 Cimg6565

● MySQLパフォーマンスチューニング&ベンチマーク

Performance Tuning and Benchmarks
- Colin Charles (Community Relations Manager, APAC at MySQL AB)

Cimg6566

● Web 2.0に向けたMySQLアーキテクチャ

Web 2.0 and emerging web technologies
- Brian Aker (Director of architecture. MySQL AB)

Cimg6568

ちなみに、Brian Akerさんは、Mac使ってプレゼンしてましたね〜。

それに、ランチビュッフェも頂きました。。
Cimg6563 Cimg6562


MySQL 5.1.xのパーティショニングのタイプもOracleと同じようなタイプをサポートしているようなのでコンポジットパーティションで組み合わせる事ができるパーティショニングタイプなんかも調べておこうか。 そういえば、Oracle11gでは、コンポジットパーティションで利用できるパーティションタイプの組み合わせがかなり増えていたなぁ。

明日も楽しみじゃ。

| | | コメント (0) | トラックバック (0)

2007年9月 6日 (木)

つい買ってしまった。ビクターエブリオ 最終回

つい買ってしまった。ビクターエブリオの最終回

iMovie'08 version 7.0.1から、Victor Everio GZ-MG130から直接映像を取込めるようになったのが確認できた次いでに、簡単なサンプルムービーを編集してみた。

素材は先月の24〜26日に行われた新庄祭りの宵祭り。

プロジェクトに利用するムービークリップを取込んで!
Newmake01

トランジッションやタイトルを追加!
Newmake02

一通り完成したら、通しで確認!
Newmake03

最後に余計なシーンをカットして、ムービー全体の時間調整などを行ったらQuicktimeムービーに書き出しで終わり!
Newmake04

できあがったムービー(8.5MBあります)

| | | コメント (0) | トラックバック (0)

iPod Touchか〜

いや〜、かなり噂はあったけど、やはりでちゃいましたね。 iPod touch!

日本じゃいつiPhoneが登場するのかさっぱりわからないので、それまでは、なんちゃってiPhoneで マルチタッチを体感するというのもいいかな〜。
あ〜〜、Apple Storeでクリックしそうになってしまう〜〜、でも iPhoneが日本に登場したらあら機能が重複してしまう部分があるし、、、、、

あ、そういえば、私のiPodは、まだまだ現役の初代iPod! なのだ〜〜〜。

やはり、iPhoneが☆〜〜〜〜!

iPod Touch いつまでクリックを我慢できるか〜〜〜。 ==> 俺。

Apple Store(Japan)


では、改めて、Multi-Touchのデモ画像など
Multi-TouchのタブレットMacなんてのが登場したらこんな感じの操作感なんでしょうねぇ。

| | | コメント (0) | トラックバック (0)

2007年9月 5日 (水)

つい買ってしまった。ビクターエブリオ #2

つい買ってしまった。ビクターエブリオの続きです。

前回は、Victor Everio GZ-MG130をつい勢いて買ってしまったが、自分のPowerBook G4 1Ghz 17inchでは、iLife '06のiMovie HD version 6.0.3しか利用できず、仕方なく面倒な手順を繰り返し、、iMovie HD version 6.0.3に撮影した16:9サイズのムービーを取込むことができた。
というところまでだった。

そのムービーの一部は以前のエントリでも公開しています!


はっきり言って、あんな面倒な操作を行わなくてもビデオカメラから撮影した映像を取込みたいわけです。 はい。

そんなもやもやした気分が続いていたのだが、タイミングよく、と言うか運良く、先日、iLife '08 を購入していたことを思い出し、その最新版、iMovie '08 version 7.0.1を妻と共有しているPowerMac G5 Dual2.7Ghz MacOSX Server 10.4.10へインストールしていろいろと試していた。
UIが随分変わったな〜〜と、何気なく、Victor EverioをUSB接続してみると....

なんと!、Victor Everio GZ-MG130でもUSB接続すれば撮影した映像(もちろん、16:9サイズも)がDVストリームとして簡単に読み込めるじゃありませんか!!!!

  

iMovie'06 version 6.0.3の場合と比べると随分楽ですよ!。

まず、iMovie'08 version 7.0.1を起動
iMovie HDまでとはアイコンが変わっています!
New01

16:9サイズのワイド画面でプロジェクトを作成する。ウィンドウ自体もiMovie HDのころとは随分違います!
New02

USBケーブルでVictor Everio GZ-MG130をMacに接続すると!
お!〜〜〜〜〜。ビデオカメラを認識してくれました。やった〜!

New03

取込むムービークリップを選択して、「完了」ボタンをクリックすれば取り込み開始!
New04 New05

New06 New07

サムネールが作成されて、準備完了! 
iMovieHDで Eveiroの映像を取込む作業と時間と比べたらどんでもなく簡単に行えますね。

New08

New09

iLife'08 - iMovieが利用できるマシンスペックなら新しいiMovieを利用したほうが楽でいいですね。おすすめです!

尚、新しいiMovieの操作に慣れるのに私の場合は、1〜2時間程度でした。ということで、次回サンプルムービーの作成へつづく。

iLife '08

iLife '08ファミリーパック

| | | コメント (0) | トラックバック (0)

2007年9月 4日 (火)

Google プロダクトセミナー #4

今日は、奥さんが Apple Store GinzaでOne to One - iWeb'08入門を受講するということで、セミナーが終わる少々前に銀座までお迎え。
待っている時間がもったいないので、同じく、Apple Store Ginzaの3Fで行われた第四回 Google プロダクトセミナーへ 。

(そういえば、第三回目は、日にちを間違えて参加できなかったんだっけ。)

本日は、
iGoogle 関連で、ガジェットが紹介されてましたが、まあ、いわゆるPortletですね。
(ポートレットの動的な配置機能など、2000年ころにいじっていたコンピュータアソシエイツ社の Jasmin Portal ii(後にCleverpath portalと改名。今は販売してないんだろうな〜製品一覧にもないようだし。)で見慣れていたことも影響しているのだろうが、Jasmin Portal iiの開発に関わっていた方も Googleに移っていたりして。。。なんて感じるくらい雰囲気が似てる。。)

それと、iLife'08のiWebとGoogleのコラボのお話など。


そして、恒例のノベルティも頂きました。
ノベルティは ブログ de ノベルティへ載せる予定。

| | | コメント (0) | トラックバック (0)

つい買ってしまった。ビクターエブリオ #1

Macオンリーのネタ &  備忘録

今年は新しい家族が増えることもあり、義妹からビデオカメラを借りてばかりいられないだろうということを話していたのだが、そんな時に限って、「ジャパネットたかた」で放送されたりするんですよね。

で、つい買ってしまったんです、ビクター ハードディスクムービー Everio(エブリオ)! GZ-MG130

しかも、いつもなら機能や、MacOSXの対応はどうだとかしっかり下調べしてから購入する私が、なんの下調べもなしに。。。。
まあ、田舎の祭りの画像を試し取りのネタにしたかった事もあり少々焦っていたのも理由ですが。

で、案の定。私の環境では幾つかの問題が・・・・。

とは言っても動作しないとかという問題ではなく、操作手順が非常に面倒だったということ。
ということでその手順を備忘録として残しておく事にする。

前置きはこれくらいにして、まずは、気付いた問題点から。

https://www.japanet.co.jp/shopping/internet/InetGoodsList.do;jsessionid=GchcxQ5JbcPnbs5l6QFzqTrLCQCYV84jn0sspX7gFVhmvy2TYGST!-383270109!-2008547804

ジャパネットで購入したVictor GZ-MG130は、2007/9/3現在、このモデルの詳細はメーカーのページには記載されていないが、どうも、GZ-MG77の上位機種のように見える。(あくまで私の想像。)
なので、GZ-MG77と同様に、iLife'06までのiMovieとのDV接続によるムービーの直接取込みや編集は行えない。

● 問題1 - iLife '06のiMoveとMPEG2

iLife '06のiMoveは、MPGEG2ファイルを直接取込むことができない。DVストリームに変換する必要がある。

この問題は、Everioのページにも記載されており、pixelaからmpeg2をDVストリームに変換するソフトが有償で提供されている。(他にもSharewareで提供されているものもあるが。。。)
iLife '06のままの私のPowerBookでは、前述のソフトを利用してiMovieで扱えるデータ形式にした。

Pixela - Capty MPEG Edit EX

● 問題2 - 16:9

Everio GZ-MG130で、16:9サイズで撮影した映像を、PixelaのCapty MPEG Edit EXを利用しDVストリームに変換した場合、16:9のサイズが4:3で表示されてしまい縦長の映像となってしまう。

この問題には、QuickTime Playerで開いたDVストリーム形式のムービー(縦長の映像になってしまう)を再度DVストリーム形式16:9サイズで書き出すことで対応できた。

この変換操作を行った後で、やっと、iLife '06のiMovieで取り扱える形式のDVストリーム形式のムービーファイルになる。
Victor Everio GZ-MG130の16:9サイズの映像をiLife'06のiMovieへ取込むにはカメラから直接取込む場合の3倍程度の手間と時間が必要になるということは覚悟しておいてほうがいいですね。
(別エントリではもっと楽な方法を紹介しますが、iLife'06のiMovieユーザは、この面倒な操作から逃げることはできないようです。はい。)

では、iLife'06のiMovoieでVictor Everioで撮影したムービーを取込むまでの手順を以下に示します。

● Everio GZ-MG130の接続と .MODファイルのコピー

Everioが外部ハードディスクとしてMacにマウントされたら、SD_VIDEOのPRGnnn以下のフォルダにある .MODファイルをローカルディスク(適当なフォルダを作成して .MODファイルをドラッグ&ドロップ)にコピーする。
Old01


● MPEG2 -> DVストリーム

pixela : Capty MPEG Edit EXを起動して、Everioからコピーした MPEG2形式のムービー(.MOD)ファイルをDVストリーム形式のムービー(.dv)ファイルとして書き出す。

Old04

う〜〜〜ん。ユーザーインターフェースは、Windowsチックだねぇ〜
Old05

.MODファイルを中央上部にあるモニターウィンドウへドラッグ&ドロップする。
次に取込まれたムービーの先頭フレーム選択してIN/OUT点パネルの「IN」ボタンクリック(又は、先頭フレームをIN/OUT点パネルの開始点パネルへドラッグ&ドロップ
さらに、ムービーの最終フレームを選択して「OUT」ボタンクリック(又は、最終フレームをIN/OUT点パネルの最終点パネルへドラッグ&ドロップする。

Old07 Old08

IN/OUT点パネルに開始フレームと最終フレームを設定したら、IN/OUT点パネルの「設定」ボタンをクリックする。すると、指定範囲のフレームが左上のトリミングウィンドウに表示される。
Old09

メニュー->ファイル->ファイル作成を選択して、DVストリーム形式ファイルを作成する。
尚、ムービー全体がトリミング対象に...というダイアログがでるが 「OK」ボタンをクリック。(このダイアログはかなり、うざったい。)

次に、「作成」ダイアログが表示されるので、DVストリームを選択して、「実行」ボタンをクリック。
あとは処理が終わるのをじっと待つ!

Old10 Old11_3

Old12 Old13

処理が終わると、DVストリーム形式(.dv)ファイルが作成されているはずだ。
Old14


Everioで16:9で撮影したムービーをCapty MPEG Edit ExでDVストリーム変換した場合、4:3サイズとして縦長の映像となってしまう。
以下、iLife'06のiMoveを起動し、16:9のDVワイドスクリーンでプロジェクトを作成後、Capty MPEG Edit ExでDVストリームへ変換しただけのムービーを取込んだところ。
本来16:9であるサイズが、4:3として表示され縦長になっているのがお分かりだろうか?

Old15

Old16

Old17_2

前述の問題は、Capty MPEG Edit EXで DVストリームへ変換後、QuickTimeプレーヤを起動し、16:9のDVストリームファイルへ再書き出しすれば回避できる。

まずは、Capty MPEG Edit EXで DVストリームへ変換後の .dvファイルをQuickTimeプレーヤーで開く。
Old19

「メニュー」->「ファイル」->「書き出し」を選択。
Old20

「書き出し」ポップポップアップメニュー ->「ムービーからDVストリーム」を選択し、オプションボタンをクリックして、「アスペクト比」を16:9に設定する。
Old21 Old22

あとは処理が終わるのをじっと待つ!
Old23 Old24


そして、最終変換後の .DVファイルを先ほど作成した iLife'06のiMovieプロジェクトへ取込む。

やっとできた〜〜〜〜!!

Old26


ということで、 iLife'06までのiMovieと Victor Everio GZ-MG130で 16:9のワイドスクリーンムービーを編集しようとするかなり面倒な操作と、数倍の時間がかかるということはお分かり頂けたかと思います。
iLife'06までのiMovieを利用するマシンスペックしかないMacをお持ちの方はこんな方法しかないと思います。

次回は、iLife '08iMovie'08 Version 7.0.1と Victor Everio GZ-MG130で同じ映像を編集したらどうなるか! 
というエントリにする予定。
Oracle無関係なネタ連ちゃんですが、Macネタも大切なので・・・・Macフリークには。。。 m(_ _)m

| | | コメント (0) | トラックバック (0)

2007年8月31日 (金)

ブログタイトルのルーツ

今頃気付いたのだが、Cube de Zopeからリンクされてたんですねぇ。うれしいですねぇ。

実は、このブログのタイトルを "Mac De Oracle" としたのは、mooyaさんのCube de Zopeを読んでいたこともあり、MacでOracleの話題を中心としたブログを書こうと決めた時に浮かんだブログ名が、"Mac De Oracle"だったのですよ。

| | | コメント (0) | トラックバック (0)

2007年8月30日 (木)

Oracle de Fizzbuzz #2

前回はOracle上にFizzbuzz用基本的な環境を作成したところまでだった。
今回は、幾つかの前提を設け、なるべくこちらの意図した解答を引き出す工夫も含めて..

事前にnullを設定した10行を登録した表を用意しておき、SQL文だけでFizzbuzzを解かせるなんてのもおもしろそう。

SYS> create table fizzbuzz.x (x number(1));

表が作成されました。

SYS> l
1 begin
2 for i in 1..10 loop
3 insert into fizzbuzz.x values(null);
4 end loop;
5* end;
SYS> /

PL/SQLプロシージャが正常に完了しました。

SYS> commit;

コミットが完了しました。

SYS> set null NULLだ!
SYS> select * from fizzbuzz.x;

X
----------
NULLだ!
NULLだ!
NULLだ!
NULLだ!
NULLだ!
NULLだ!
NULLだ!
NULLだ!
NULLだ!
NULLだ!

10行が選択されました。

上記のような前提なら、以下のような答えを期待しちゃう。ポイントは直積するか、という点と、rownum疑似列を使っうかどうか、ってところ。。

FIZZBUZZ> l
1 select
2 case 0
3 when mod(rownum,15) then 'fizzbuzz'
4 when mod(rownum,3) then 'fizz'
5 when mod(rownum,5) then 'buzz'
6 else to_char(rownum)
7 end as results
8 from
9* x a cross join x b
FIZZBUZZ>

事前にデータを準備せず、100行の生成もSQLで行うことを期待するのであれば、オラクルだと Oracle9i以降であれば、cube又はrollup、Oracle10g以降であれば階層問合せのいずれかというところか。
case式の変わりに、decodeを利用したり、with句を利用しないで単純に副問い合せにしたりといういくつかのバリエーションはあるとおもうが・・・・・。
(いまさら、Oracle8iを利用することもないだろうから。。。まだ、利用している方、すみません。。。)

部分的cubeがいくつの小計を計算するかさえ知っていれば。。。以下のようなクエリで実現できる。以下の方法であれば、cubeがサポートされたOracle9i以降で実行できるクエリ版、fizzbuzzが作れる。

日本語のマニュアルはこちら
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19217-02/aggreg.htm#sthref1627

英語版のマニュアルはこちら
http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/aggreg.htm#sthref1627

FIZZBUZZ> edit
file afiedt.bufが書き込まれました。

1 with
2 t as (
3 select 1 from dual group by cube(1,1,1,1)
4 )
5 select
6 case 0
7 when mod(rownum,15) then 'fizzbuzz'
8 when mod(rownum,3) then 'fizz'
9 when mod(rownum,5) then 'buzz'
10 else to_char(rownum)
11 end as results
12 from
13 t a cross join t b
14 where
15* rownum <= 100
尚、cubeがサポートされてないリリースだと、、ちと面倒だが、、、Oracle9i以降であれば使える方法ですよん。

階層問い合せで行う方法もあるが、個人的にはcubeを使ったクエリのほうが好き。以下の例で利用している階層問合せは、Oracle9iでは1行しか返してこないので将来的にもそのような挙動をするのか多少不安だし。。

FIZZBUZZ> l
1 with
2 t as
3 (
4 select level
5 from dual
6 connect by level <= 10
7 )
8 select
9 case 0
10 when mod(rownum,15) then 'fizzbuzz'
11 when mod(rownum,3) then 'fizz'
12 when mod(rownum,5) then 'buzz'
13 else to_char(rownum)
14 end as results
15 from
16* t a cross join t b
FIZZBUZZ>


といったところだろうか。

| | | コメント (0) | トラックバック (0)

2007年8月29日 (水)

Oracle de Fizzbuzz #1 - いまごろ・・・ですが・・

え〜〜っと、前回のエントリで予告していたとおり、あの話題。
今頃。。。という感じのネタですが、少々視点を変えて、fizzbuzzをOracle上で解かせるための簡単な環境作りを中心に。


では、早速、環境作りから。

Oracleではプロファイルによるリソース制限を設定することができる。この機能はOracle7のころから提供されている。(使っている方はどれだけいるか定かでないが。。。)
この機能を利用すれば、セッション単位で、CPU利用時間や、接続時間、アイドル時間などを制限することが可能だ。

ここまで書けば、なにを言いたいか想像できると思う。 

そう、プロファイルを利用すれば、fizzbuzz問題の解答時間制限を設定できるんです!

以下のように、プロファイルで connect_time(接続時間)制限を2分と設定しておけば、接続から2分強経過した時点でオラクルとのセッションが強制的にdisconnectされる。

fizzbuzzユーザに接続して、2分程度でfizzbuzzを解いてみて!? という環境が簡単に作れるわけです。

この制限は、SQL*Plusから接続しても、
iSQL*Plusから接続しても、Oracle SQL Developer、JDeveloperから接続しても同じなので、

例えば、

Linux/MacOSX/Windowのクライアントを用意しておき、
好きなクライアントからSQL*Plusを利用して、SQL又は、PL/SQLでfizzbuzzを解いて! とか

Linux/MacOSXのクライアントからSQL*plusを利用して、SQL又は、PL/SQLでfizzbuzz解いて! 
ただし、editコマンドで起動するのはvi  とか

前提条件を絞って、SQLだけで、fizzbuzz解いて! とか、 

データベースサーバーとして、Oracle9iを用意しておいて、SQLだけで、fizzbuzz解いて! とか

nullカラムで且つ、10行登録されている表を使って、fizzbuzz解いて!

ということを制限時間内に行わせてみる環境が作れるわけです。

(こんなこと考えていると、PL/SQL で Python Challengeをやっていたことを思いだす。。。。。)

注)
コネクションプーリングしているユーザにconnect_timeとか、idle_timeなんて制限付けたりしないでくださいね!。
そんなことする方は居ないと思うけど。。念のため。

以下、fizzbuzzというプロファイルを作成(接続時間制限2分)、fizzbuzzユーザを作成し、fizzbuzzプロファイルを設定。
最後に、初期化パラメータ、 resource_limitをtrueにしてあげれば、準備完了。 という例です。


尚、作成するユーザには、必要最小限のシステム権限やオブジェクト権限だけを付与おくといいですね。例えば、表やシーケンスを作成できないようにしておくとか。

SYS> show parameter resource_limit 

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
SYS>
SYS> create profile fizzbuzz limit connect_time 2;

プロファイルが作成されました。

SYS> select * from dba_profiles where profile='FIZZBUZZ';

PROFILE RESOURCE_NAME RESOURCE LIMIT
---------- -------------------------------- -------- ----------
FIZZBUZZ COMPOSITE_LIMIT KERNEL DEFAULT
FIZZBUZZ SESSIONS_PER_USER KERNEL DEFAULT
FIZZBUZZ CPU_PER_SESSION KERNEL DEFAULT
FIZZBUZZ CPU_PER_CALL KERNEL DEFAULT
FIZZBUZZ LOGICAL_READS_PER_SESSION KERNEL DEFAULT
FIZZBUZZ LOGICAL_READS_PER_CALL KERNEL DEFAULT
FIZZBUZZ IDLE_TIME KERNEL DEFAULT
FIZZBUZZ CONNECT_TIME KERNEL 2
FIZZBUZZ PRIVATE_SGA KERNEL DEFAULT
FIZZBUZZ FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
FIZZBUZZ PASSWORD_LIFE_TIME PASSWORD DEFAULT
FIZZBUZZ PASSWORD_REUSE_TIME PASSWORD DEFAULT
FIZZBUZZ PASSWORD_REUSE_MAX PASSWORD DEFAULT
FIZZBUZZ PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
FIZZBUZZ PASSWORD_LOCK_TIME PASSWORD DEFAULT
FIZZBUZZ PASSWORD_GRACE_TIME PASSWORD DEFAULT

16行が選択されました。

SYS>
SYS> create user fizzbuzz identified by jazz
2 default tablespace users
3 temporary tablespace temp
4 quota unlimited on users
5 profile fizzbuzz;

ユーザーが作成されました。

SYS> grant create session,create procedure to fizzbuzz;

権限付与が成功しました。

SYS>
SYS> alter system set resource_limit = true scope=both;

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

SYS>


fizzbuzzユーザにconnectして、モタモタしていると・・・・・・。Oracleさんからdisconnectされちゃいます!

FIZZBUZZ> select 'Zzzzzz......' from dual:
select 'Zzzzzz......' from dual
*
行1でエラーが発生しました。:
ORA-02399: 最大接続時間を超えました。ログオフ中です。


FIZZBUZZ>

もし、他の前提条件なしで、Oracle9i以降の環境を利用してfizzbuzz解いて! といきなり言われたとしたら、私なら、linuxのクライアントから以下のような無名PL/SQLブロックだけで解くだろうな〜。
(無難な方法だし、1分もかからないでできるだろう。。ただ、SQLだけで、Oracle9iという前提だと、1分強かもしれないな〜。まず、どうんな方法で100行準備するかを決めなきゃならないからね)

FIZZBUZZ> set serveroutput on 
FIZZBUZZ> l
1 begin
2 for i in 1..100 loop
3 dbms_output.put_line(
4 case when mod(i,15)=0 then 'fizzbuzz'
5 when mod(i,3)=0 then 'fizz'
6 when mod(i,5)=0 then 'buzz'
7 else to_char(i)
8 end
9 );
10 end loop;
11* end;
FIZZBUZZ> /
1
2
fizz
4
・・・・中略・・・・
98
fizz
buzz

PL/SQLプロシージャが正常に完了しました。

FIZZBUZZ>
経過: 00:00:00.05

次回は、幾つかの前提条件を設けて、Oracle de fizzbuzz する予定(そんなにfizzbuzzネタで引っ張るつもりはないですよ。w)

| | | コメント (0) | トラックバック (0)

2007年8月24日 (金)

JJUG : クロスコミュニティー IDEバトル?

少々、おそくなったが、
先日、JJUG主催の「クロスコニュニティ IDE」に参加してきた。
このセミナー申し込みが多かったらしく、抽選でした。うちは奥さんと二人個別に申し込んでいたのだが、当選したのは私だけ!。

奥さんも当選していたら会場にいたJDeveloperファン?は、もう少し増えてたかも。。(笑い)

私の場合、無償になる以前からJDeveloperを仕事で利用していたこともあり、考えてみると、


JDeveloper > Eclipse > NetBeans


という順で、利用経験が少なくなって行く。。

そういえば、無償になる前のJDeveloperは、ソースネクストから1980円で発売されていたこともあり、ある人からプレゼントに使った分の残りが少しあるから、私と奥さんの分を貰ったこともあったっけ。

前置きはこれくらいにして、セミナーの内容は、ストリーミングで配信されるようなのでそちらを見て頂いた方がよさそう。
http://ustream.tv/yoichiro/videos/T0rVTPSassJOp6yi2bLenA
http://ustream.tv/yoichiro/videos/G1IWObKZ9majKs2sdEiHdg

私個人の感想としては、前日、睡眠時間4時間(仕事ではなく、単に熱帯夜で、寝苦しくて。。。)の影響と祭り見物のための移動準備の疲れか?、Eclipseの時は、目は開いていたもののセミナー内容の記憶はほとんどなし。。。 (^^;;;

後半、ようやく、覚醒してきたところが、デモがうまくいかなかった、NetBeansのあたり。
(実は、Rubyでも遊びたくて、NetBeansインストールしてあるんですよ、Macに。)

佐藤直樹さんは、やはり、プレゼン慣れしていますな〜。

Jdev_netb

うちの奥さんは? といえば、プロジェクトの標準で、Eclipseを利用していることが多いのだが、最近、自宅のMacでは、JDeveloper11gを起動してあそんでいる姿を多く目にする。。。
本人曰く、Eclipseは仕事で十分使っているから、自分の趣味?で調べもしたり確かめたりするのにまで、Eclipseは使いたくないらしい。

ということで、今日からお祭り見物だ〜。

| | | コメント (0) | トラックバック (0)

2007年8月19日 (日)

PL/SQL de Conditional Compile #5

さて、PL/SQL条件付きコンパイルもネタが無くなってきたので、最後に、DBMS_DB_VERSIONパッケージを利用して、各リリース毎にコードを切り替えてみよう!
ということで、Oracle database 10g以前のリリースとOracle databse 11g以降のリリースでコードを切り替える例。

● 条件付きコンパイルが無い場合、Oracle11gより前のリリースで以下ようなコードを書いてしまったら....

当然コンパイルエラー!
FUNCTION CONDITIONAL_COMP_SAMPLE3 RETURN NUMBER
IS
vSeq# NUMBER;
BEGIN
vSeq# := mySeq.NEXTVAL;
RETURN vSeq#;
END CONDITIONAL_COMP_SAMPLE3;
/

警告: ファンクションが変更されましたが、コンパイル・エラーがあります。

SCOTT> show errors
FUNCTION CONDITIONAL_COMP_SAMPLE3のエラーです。

LINE/COL ERROR
-------- -----------------------------------------------------------------
9/5 PL/SQL: Statement ignored
9/20 PLS-00357:
表またはビュー、シーケンス参照MYSEQ.NEXTVALは、このコンテキストで
は使用できません。

SCOTT>

● しかし、DBMS_DB_VERSIONパッケージでリリース毎にコードを選択し切り替えたら・・・・便利ですよね。

CREATE OR REPLACE FUNCTION CONDITIONAL_COMP_SAMPLE3 RETURN NUMBER 
IS
vSeq# NUMBER;
BEGIN

$IF DBMS_DB_VERSION.Ver_LE_10 $THEN
SELECT mySeq.NEXTVAL INTO vSeq# FROM DUAL;
$ELSE
vSeq# := mySeq.NEXTVAL;
$END

RETURN vSeq#;

END CONDITIONAL_COMP_SAMPLE3;

DBMS_DB_VERSIONパッケージをリリース番号でどのようにソースコードが変化するか確認。
● Oracle database 10g以前のバージョンでコンパイルした場合

SCOTT> 
SCOTT> set serveroutput on
SCOTT> exec dbms_preprocessor.print_post_processed_source('FUNCTION','SCOTT','CONDITIONAL_COMP_SAMPLE3');
FUNCTION CONDITIONAL_COMP_SAMPLE3 RETURN NUMBER
IS
vSeq# NUMBER;
BEGIN
SELECT mySeq.NEXTVAL INTO vSeq# FROM DUAL;
RETURN vSeq#;
END CONDITIONAL_COMP_SAMPLE3;

PL/SQLプロシージャが正常に完了しました。


● Oracle database 11g以降でコンパイルした場合

SCOTT> exec dbms_preprocessor.print_post_processed_source('FUNCTION','SCOTT','CONDITIONAL_COMP_SAMPLE3');
FUNCTION CONDITIONAL_COMP_SAMPLE3 RETURN NUMBER
IS
vSeq# NUMBER;
BEGIN
vSeq# := mySeq.NEXTVAL;
RETURN vSeq#;
END CONDITIONAL_COMP_SAMPLE3;

PL/SQLプロシージャが正常に完了しました。

SCOTT>


● 各リリース毎のDBMS_DB_VERSIONパッケージの違い
参考 http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_dbver.htm

● 10.2:
package DBMS_DB_Version is 
Version constant pls_integer := 10;
Release constant pls_integer := 2;
Ver_LE_9_1 constant boolean := false;
Ver_LE_9_2 constant boolean := false;
Ver_LE_9 constant boolean := false;
Ver_LE_10_1 constant boolean := false;
Ver_LE_10_2 constant boolean := true;
Ver_LE_10 constant boolean := true;
end DBMS_DB_Version;
● 10.1:
package DBMS_DB_Version is 
Version constant pls_integer := 10;
Release constant pls_integer := 1;
Ver_LE_9_1 constant boolean := false;
Ver_LE_9_2 constant boolean := false;
Ver_LE_9 constant boolean := false;
Ver_LE_10_1 constant boolean := true;
Ver_LE_10 constant boolean := true;
end DBMS_DB_Version;
● 9.2:
package DBMS_DB_Version is 
version constant pls_integer := 9;
release constant pls_integer := 2;
Ver_LE_9_1 constant boolean := false;
Ver_LE_9_2 constant boolean := true;
Ver_LE_9 constant boolean := true;
end DBMS_DB_Version;




PL/SQL de Conditional Compile #1
PL/SQL de Conditional Compile #2
PL/SQL de Conditional Compile #3
PL/SQL de Conditional Compile #4

| | | コメント (0) | トラックバック (0)

2007年8月18日 (土)

まだ、まだ、まだ、Dashboard de Aqauarium !

いや〜〜〜、ほんとうに、皆さんありがとうございます。 
ついにMac ココフラッシュのデイリーランキングとマンスリーランキングの両方で、
しかも同時にTop1に!!

これまた、前回同様、めったにあることではないでしょうから、記念写真を。
今回は、Dashboard de Aauarium v1.0もいっしょに!

Dashboard_de_aquarium_madamada

Apple(US)の、Dashboard de Aauariumもなんとか、Top30以内にランキング残っているし。...

http://www.apple.com/downloads/dashboard/justforfun/dashboarddeaquarium.html

| | | コメント (0) | トラックバック (0)

PL/SQL de Conditional Compile #4

PL/SQLの条件付きコンパイルのつづきです。

今回は、エラーディレクティブ($ERROR)を利用して、ちょっとした物忘れ対策を!

どのような物忘れ対策かというと、コード中に書かなければならないロジックがあるが、今は書かずに後で追加しようとコメントでメモを残しておいた。
だが〜〜、うっかりミスで、コーディングしないまま、結合テストに〜〜〜〜〜!。あ〜〜〜、大変だ〜!!!! 

なんてことを、防止できるかも・・・・・・・・。しれないという使い方!。

たとえば、以下のように、後でコードを追加しようとストアドファンクションをロジックなして仮に作成しておいたとする。
後でロジックを追加するというこを、すっかり忘れてしまっていると、テスト段階になって、あれ? 結果が帰ってこない!!! ソースを見ると。
あ〜〜〜〜、忘れてた〜〜〜 (^^;;;;;;;

なんてことに・・・・ コンパイルが通ってしまうので、実行してみないと気付かない。。なんてことになっちゃいます。

SCOTT> l
1 create or replace
2 FUNCTION CONDITIONAL_COMP_SAMPLE2
3 RETURN TIMESTAMP
4 IS
5 vNow TIMESTAMP;
6 BEGIN
7 -- TODO - 結合テストまでに、ここにロジック書かなきゃ!
8 RETURN vNow;
9* END CONDITIONAL_COMP_SAMPLE2;
10 /

ファンクションが作成されました。

SCOTT> set null 'NULL!'
SCOTT> select conditional_comp_sample2 from dual;

CONDITIONAL_COMP_SAMPLE2
---------------------------------------------------------------------------
NULL!

SCOTT>

しかし、$ERRORディレクティブを利用して、コンパイルエラーになるようにしておけば。。。。
さらに、エラーメッセージには、やることを思い出させてくれるようなコメントを設定しておけば、これまた、物忘れの激しい方でもなんとかなるかもしれません。

SCOTT> l
1 CREATE OR REPLACE
2 FUNCTION CONDITIONAL_COMP_SAMPLE2
3 RETURN TIMESTAMP
4 IS
5 vNow TIMESTAMP;
6 BEGIN
7
8 -- TODO - 結合テストまでに、ここにロジック書かなきゃ!
9 $ERROR
10 '結合テストまでに、ここにロジック書かなきゃ!'
11 $END
12
13
14 RETURN vNow;
15
16* END CONDITIONAL_COMP_SAMPLE2;
SCOTT> /

警告: ファンクションが変更されましたが、コンパイル・エラーがあります。

SCOTT> show errors
FUNCTION CONDITIONAL_COMP_SAMPLE2のエラーです。

LINE/COL ERROR
-------- -----------------------------------------------------------------
7/3 PLS-00179: $ERROR: 結合テストまでに、ここにロジック書かなきゃ!
SCOTT>

応用編としては、上記のように、単純に、コンパイルエラーにはせず、前々回のエントリで利用したPLSQL_DEBUG初期化パラメータ等と組み合わせ、デバッグ時はコンパイル正常に行わせるという使い方も考えられます。


参考
http://www.oracle.com/technology/oramag/oracle/06-jul/o46plsql.html
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/fundamentals.htm#BEIJFDHG

| | | コメント (0) | トラックバック (0)

2007年8月17日 (金)

PL/SQL de Conditional Compile #3

PL/SQL条件付きコンパイルの続きです。

前回までのおさらい。

初期化パラメータをセッション単位で変更してコンパイルしていたが、Oracle10g R1 10.1.0.4.0以降及び、Oracle9i R2 9.2.0.6.0以降へバックポートされた条件付きコンパイル機能では一部利用できない初期化パラメータがあり、全リリースで共通のソースコードを利用するには、各リリースで利用できる初期化パラメータ PLSQL_DEBUG を利用するようにした。というところまでだった。

今回はいままでとは異なる方法で条件付きコンパイルを行ってみることにする。

その方法とは、初期化パラメータを利用せずパッケージの仕様部で宣言した定数を利用する方法だ。
この方法であれば、リリース毎にいくつかの制限のある初期化パラメータを利用せずに条件コンパイルが可能だ。

但し、その都度、パッケージ定数を変更するという手間はかかる。
実際に利用する際には、定数を変更する為のスクリプトを事前に用意しておき、そのスクリプトを実行するだけで行えるようにすると良いだろう。
また、パッケージをどのスキーマに定義するか、という点なども、よ〜〜〜く検討した上で利用した方が良いだろう。
ルール無しで利用した場合、後々混乱の原因になる可能性があるということは容易に想像できると思う。

● 条件コンパイルのフラグだけを定義したパッケージを作成する

以下の例では、C_DEBUG_ON定数だけを定義し、値はfalseとした。
CREATE OR REPLACE PACKAGE MyPROPERTIES AS

C_DEBUG_ON CONSTANT BOOLEAN := false;

END MyPROPERTIES;

● 以下、条件コンパイルのサンプルコード

以前作成したコードとの違いは、初期化パラメータではなく、前述したパッケージのC_DEBUG_ON定数を参照している点である。
CREATE OR REPLACE FUNCTION CONDITIONAL_COMPILATION_SAMPLE
RETURN TIMESTAMP
IS
vNow TIMESTAMP;
BEGIN
$IF myproperties.c_debug_on $THEN
DBMS_OUTPUT.ENABLE(20000);
DBMS_OUTPUT.PUT_LINE('======= start =====');
$END

SELECT SYSTIMESTAMP INTO vNow FROM dual;

$IF myproperties.c_debug_on $THEN
DBMS_OUTPUT.PUT_LINE('======= end =======');
$END

RETURN vNow;

END CONDITIONAL_COMPILATION_SAMPLE;

● MYPROPERTIES.C_DEBUG_ON=falseで上記サンプルコードをコンパイルし実行した例

Conditional_compilation137 Conditional_compilation138 Conditional_compilation139Conditional_compilation1310


● MYPROPERTIES.C_DEBG_ON=trueで、上記サンプルコードをコンパイルし実行した例

Conditional_compilation131 Conditional_compilation132Conditional_compilation133
Conditional_compilation134 Conditional_compilation135 Conditional_compilation136

| | | コメント (0) | トラックバック (0)

Oracle database 11g for MacOSX ?

先日リリースされたOracle database 11g R1 のUnix/Linux系のgeneral Oracle Database 11g documentation のAdministrator Guilde等で、MacOSXに関する記述のあることに気付いた!。


general Oracle Database 11g documentation


あたらしいオンラインドキュメントは、以前のリリースに比べてかなり使い易くなっていて、左側のペイン上部に検索ボックが用意されドキュメント内の検索も簡単にできる。
さらに、ドキュメントに対してコメントできたりと、Web2.0の要素を取り込んだオンラインドキュメントに進化している。

いいですね〜。気付いた方がコメントで、マニュアルバグを指摘できるようになったわけですから。
(コメントスパム対策は大変そうだが。。。)

Oracledatabase11g_macosx_man

前置きはこれくらいにして、本題に戻ると、検索ボックスに Mac と入力して検索してみるとMacOSXに関する記述がOracle database 11g のマニュアル内で多数ヒットする。
Oracle database 10g R2はリリースされていないが、Oracle database 11g R1はリリースされるということと考えてもよさそうな感じですね〜〜。:-)
期待してます。オラクルさん。

ということで、Oracle database 11gのドキュメント内でMacOSXに関して記述されている箇所のリンクを幾つか載せておく。

http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/tuning.htm#insertedID6

http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/toc.htm#BEGIN

http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/strt_stp.htm#CFAHCEFC

http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/appd_mac.htm#UNXAR012

| | | コメント (0) | トラックバック (0)

2007年8月16日 (木)

PL/SQL de Conditional Compile #2



とにかく、熱過ぎる! 沖縄の方が気温が低いってどうよ!? 避暑のために、石垣島なんていいかも。
午前10時の気温。東京:摂氏34.6度、沖縄:摂氏29.9度
沖縄のほうが気温が低い!(爆笑)

http://www.weather-eye.com/amedas_graph/index.html

yanokami (矢野顕子 × レイ・ハラカミ) - yanokami - EP - You Showed Me yanokami (矢野顕子 × レイ・ハラカミ) - yanokami - EP - You Showed Me



さて、PL/SQL条件付きコンパイルの続きです。

前回は、本機能が正式にサポートされているOracle10g R2 10.2.0.2.0で行ったが、今回は、バックポートされた Oracle10g R1 10.1.0.4.0で行う。
PL/SQL条件付きコンパイル機能は、前回も書いたように、Oracle10g R1 10.1.0.4.0以降、Oracle9i R2 9.2.0.6.0以降へバックポートされている。

但し、Oracle10g R1 10.1.0.4.0以降及び、Oracle9i R2 9.2.0.6.0以降へバックポートされたPL/SQL条件付きコンパイルでは幾つかの制限があり、Oracle10g R2 からサポートされている同機能と比べて利用できない機能などが存在するので注意が必要だ。
ちなみに、前回のエントリで紹介したPLSQL_CCFLAG初期化パラメータは、パックポートされたOracle10g R1 10.1.0.4.0及び、Oracle9i R2 9.2.0.6.0以降では利用できないと記載されている。

参考:plsql_conditional_compilation.pdfのFunctionality restrictions in 10.1 and 9.2 (P.61)


では、前述の制限を踏まえつつ、以下、Oracle10g 10.1.0.4.0でのテストを!

環境:Oracle10g R1 10.1.0.4.0 for Linux x86
 (TurboLinux Enterprise Server 8 SP3- powered by United Linux 1.0)

前回の例では、ユーザ定義フラグとして、独自に DEBUGONブラグをPLSQL_CCFLAGS初期化パラメータで設定していたが、前述の制限の通り、ハックポートされた機能では利用できない。

そのため、バックポートされた条件付きコンパイルでも利用できるよう、PLSQL_DEBUG初期化パラメータを利用することにした。
このパラメータを利用すれば、Oracle10g R2/R1(10.1.0.4.0以降)/Oracle9i R2(9.2.0.6.0以降)それにOracle11gでも利用できるコードにすることができる。

注)初期化パラメータをしなくても各リリースでソースコードを共有できる方法がある。
但し、初期化パラメータを利用する方法に比べ、いちいちコードに手を加えなければならないなど、イマイチな感じはある。(別途掲載予定)

Conditional_compilation_sql_develop

● まずは、PLSQL関連の初期化パラメータの確認から。

PL/SQL関連の隠しパラメータが幾つかあるが、ここで大切なのは、_plsql_conditional_compilationという初期化パラメータでこれがTRUEであれば、PL/SQLの条件コンパイルが機能する。
また、Oracle10g R2には存在していた、PLSQL_CCFLAGS初期化パラメータが存在していないことも確認できる。前述した通り、今回は、PLSQL_DEBUG初期化パラメータを利用して条件コンパイルを行うことにする。

SYS> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Prod
PL/SQL Release 10.1.0.4.0 - Production
CORE 10.1.0.4.0 Production
TNS for Linux: Version 10.1.0.4.0 - Production
NLSRTL Version 10.1.0.4.0 - Production

SYS> l
1 select
2 a.ksppinm,
3 b.ksppstvl,
4 b.ksppstdf
5 from
6 x$ksppi a join x$ksppcv b
7 on a.indx = b.indx
8 and a.ksppinm like '%plsql%'
9 order by
10* a.ksppinm
SYS> /

KSPPINM KSPPSTVL KSPPSTDF
---------------------------------- ------------------------------ ------------------------------
_plsql_anon_block_code_type INTERPRETED TRUE
_plsql_conditional_compilation TRUE FALSE
_plsql_dump_buffer_events TRUE
plsql_code_type INTERPRETED TRUE
plsql_compiler_flags INTERPRETED, NON_DEBUG TRUE
plsql_debug FALSE TRUE
plsql_native_library_dir TRUE
plsql_native_library_subdir_count 0 TRUE
plsql_optimize_level 2 TRUE
plsql_v2_compatibility FALSE TRUE
plsql_warnings DISABLE:ALL TRUE

11行が選択されました。

SYS>

● 前回のコードから変更したコードは赤字部分

SCOTT> l
1 create or replace
2 FUNCTION CONDITIONAL_COMPILATION_SAMPLE
3 RETURN TIMESTAMP
4 IS
5 vNow TIMESTAMP;
6 BEGIN
7 $IF $$PLSQL_DEBUG $THEN
8 DBMS_OUTPUT.ENABLE(20000);
9 DBMS_OUTPUT.PUT_LINE('======= start =====');
10 $END
11 SELECT SYSTIMESTAMP INTO vNow FROM dual;
12 $IF $$PLSQL_DEBUG $THEN
13 DBMS_OUTPUT.PUT_LINE('======= end =======');
14 $END
15 RETURN vNow;
16* END CONDITIONAL_COMPILATION_SAMPLE;
17 /

ファンクションが作成されました。

● では、PLSQL_DEBUG=falseとして確認!

SCOTT> set serveroutput on
SCOTT> alter session set plsql_debug=false;

セッションが変更されました。

SCOTT> alter function conditional_compilation_sample compile;

ファンクションが変更されました。

SCOTT> exec dbms_preprocessor.print_post_processed_source('FUNCTION','SCOTT','CONDITIONAL_COMPILATION_SAMPLE');
FUNCTION CONDITIONAL_COMPILATION_SAMPLE
RETURN TIMESTAMP
IS
vNow TIMESTAMP;
BEGIN
SELECT SYSTIMESTAMP INTO vNow FROM dual;
RETURN vNow;
END CONDITIONAL_COMPILATION_SAMPLE;

PL/SQLプロシージャが正常に完了しました。


SCOTT> select conditional_compilation_sample from dual;

CONDITIONAL_COMPILATION_SAMPLE
---------------------------------------------------------------------------
07-08-13 22:53:14.161995000


● 次に、PLSQL_DEBUG=trueとして確認!

SCOTT> alter session set plsql_debug=true;

セッションが変更されました。

SCOTT> alter function conditional_compilation_sample compile;

ファンクションが変更されました。

SCOTT> exec dbms_preprocessor.print_post_processed_source('FUNCTION','SCOTT','CONDITIONAL_COMPILATION_SAMPLE');
FUNCTION CONDITIONAL_COMPILATION_SAMPLE
RETURN TIMESTAMP
IS
vNow TIMESTAMP;
BEGIN
DBMS_OUTPUT.ENABLE(20000);
DBMS_OUTPUT.PUT_LINE('======= start =====');
SELECT SYSTIMESTAMP INTO vNow FROM dual;
DBMS_OUTPUT.PUT_LINE('======= end =======');
RETURN vNow;
END CONDITIONAL_COMPILATION_SAMPLE;

PL/SQLプロシージャが正常に完了しました。

SCOTT> select conditional_compilation_sample from dual;

CONDITIONAL_COMPILATION_SAMPLE
---------------------------------------------------------------------------
07-08-13 22:54:01.071903000

======= start =====
======= end =======
SCOTT>
SCOTT>


次回は、初期化パラメータを利用しない場合コードの例を載せる予定。

| | | コメント (0) | トラックバック (0)

2007年8月15日 (水)

PL/SQL de Conditional Compile #1

PL/SQLで条件付きコンパイル? 耳慣れないのも方も多いかもしれない。 C/C++では、おなじみの#ifdefなどのディレクティブ!

そう、それです! プリプロセッサといえば分かり易いでしょうか。 
Oracle10g R2以降で、正式に、PL/SQLのプリプロセッサが実装されています。(正式にと書いたのには理由があります、実は、この条件付きコンパイルは、Oracle10g R1 10.1.0.4以降、Oracle9i R2 9.2.0.6.0以降にバックポートされています。) 

マニュアルでは、 conditional compilation (条件付きコンパイル)として解説されています。

PL/SQLの条件付きコンパイル、マニュアルには記載はされているものの、この機能を解説している日本語のサイトはほとんど見た事がありませんし、実際の所、私もまだ本格的に利用したことはありません。しかし、うまく使えばそれなりの効果は期待できそうですね。

では、早速、条件付きコンパイルの例を。

● 正式に機能追加されたリリースである、Oracle10g R2で試す。

SYS> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Prod
PL/SQL Release 10.2.0.2.0 - Production
CORE 10.2.0.2.0 Production
TNS for 32-bit Windows: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production

初期化パラメータにいくつかのPL/SQLコンパイル用パラメータが追加されている。 (Oracle10g R1や、Oracle9i R2と比較するわかりやすいかも。。) 以下は、初期化パラメータの幾つかをリストしたもの。詳細はマニュアル参照のこと。
SYS> show parameter plsql

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
plsql_ccflags string
plsql_code_type string INTERPRETED
plsql_compiler_flags string INTERPRETED, NON_DEBUG
plsql_debug boolean FALSE
plsql_native_library_dir string
plsql_native_library_subdir_count integer 0
plsql_optimize_level integer 2
plsql_v2_compatibility boolean FALSE
plsql_warnings string DISABLE:ALL


● 条件付きコンパイル、PLSQL_CCFLAG初期化パラメータで独自フラグを利用する例

以下は、PLSQL_CCFLAG初期化パラメータで、DEBUGONという独自のフラグを設定し、条件付きコンパイルを行う例で、選択ディレクティブである$IF - $THENを利用してデバッグ用ログの表示コードを制御しています。

PLSQL_CCFLAGで、debugonフラグをtrueに設定すれば、DBMS_OUTPUT.PUT_LINE()でデバッグ用ログを表示するコードがコンパイルされ、false又はフラグが設定されていなければ、表示しないコードでコンパイルされます。

SCOTT> l
1 create or replace
2 FUNCTION CONDITIONAL_COMPILATION_SAMPLE
3 RETURN TIMESTAMP
4 IS
5 vNow TIMESTAMP;
6 BEGIN
7 $IF $$DEBUGON $THEN
8 DBMS_OUTPUT.ENABLE(20000);
9 DBMS_OUTPUT.PUT_LINE('======= start =====');
10 $END
11 SELECT SYSTIMESTAMP INTO vNow FROM dual;
12 $IF $$DEBUGON $THEN
13 DBMS_OUTPUT.PUT_LINE('======= end =======');
14 $END
15 RETURN vNow;
16* END CONDITIONAL_COMPILATION_SAMPLE;
17 /

ファンクションが作成されました。


● dbms_preprocessorパッケージによる条件付きコンパイル後のソースの確認

dbms_preprocessorパッケージのprint_post_processed_source()プロシージャを利用すると、条件付きコンパイル後のソースを確認することができる。(all_sourceビューには、条件付きコンパイル前のソースが格納されているため、条件付きコンパイル後のソースとは異なってしまう。)
DBMS_PREPROCESSORパッケージに関する詳細は、マニュアルを参照のこと。

SCOTT> set serveroutput on
SCOTT> exec dbms_preprocessor.print_post_processed_source('FUNCTION','SCOTT','CONDITIONAL_COMPILATION_SAMPLE');
FUNCTION CONDITIONAL_COMPILATION_SAMPLE
RETURN TIMESTAMP
IS
vNow TIMESTAMP;
BEGIN
SELECT SYSTIMESTAMP INTO vNow FROM dual;
RETURN vNow;
END CONDITIONAL_COMPILATION_SAMPLE;

PL/SQLプロシージャが正常に完了しました。

上記のコードは、PLSQL_CCFLAG初期化パラメータにdebugonフラグが未定義又は、falseで定義された場合のコードである。


● 実行してみると、デバッグ用ログは表示されていない。(当然!)

SCOTT> set serveroutput on
SCOTT> select conditional_compilation_sample from dual;

CONDITIONAL_COMPILATION_SAMPLE
---------------------------------------------------------------------------
07-08-13 18:20:39.234000000

SCOTT> set serveroutput off

● PLSQL_CCFLAG初期化パラメータに debugonフラグをtrueで設定してみると・・・。

SCOTT> 
SCOTT> alter session set plsql_ccflags='debugon:true';

セッションが変更されました。

SCOTT> l
1 create or replace
2 FUNCTION CONDITIONAL_COMPILATION_SAMPLE
3 RETURN TIMESTAMP
4 IS
5 vNow TIMESTAMP;
6 BEGIN
7 $IF $$DEBUGON $THEN
8 DBMS_OUTPUT.ENABLE(20000);
9 DBMS_OUTPUT.PUT_LINE('======= start =====');
10 $END
11 SELECT SYSTIMESTAMP INTO vNow FROM dual;
12 $IF $$DEBUGON $THEN
13 DBMS_OUTPUT.PUT_LINE('======= end =======');
14 $END
15 RETURN vNow;
16* END CONDITIONAL_COMPILATION_SAMPLE;
17 /

ファンクションが作成されました。


SCOTT> exec dbms_preprocessor.print_post_processed_source('FUNCTION','SCOTT','CONDITIONAL_COMPILATION_SAMPLE');
FUNCTION CONDITIONAL_COMPILATION_SAMPLE
RETURN TIMESTAMP
IS
vNow TIMESTAMP;
BEGIN
DBMS_OUTPUT.ENABLE(20000);
DBMS_OUTPUT.PUT_LINE('======= start =====');
SELECT SYSTIMESTAMP INTO vNow FROM dual;
DBMS_OUTPUT.PUT_LINE('======= end =======');
RETURN vNow;
END CONDITIONAL_COMPILATION_SAMPLE;

PL/SQLプロシージャが正常に完了しました。

SCOTT>
SCOTT> set serveroutput on
SCOTT> select conditional_compilation_sample from dual;

CONDITIONAL_COMPILATION_SAMPLE
---------------------------------------------------------------------------
07-08-13 18:26:13.906000000

======= start =====
======= end =======
SCOTT>
ということで、デバッグ用ログが表示されるコードでコンパイルされています!。

次回は、Oracle10g R1 10.1.0.4.0で試す予定。
Conditional_compilation_sql_develop

| | | コメント (0) | トラックバック (0)

2007年8月11日 (土)

まだまだ、Dashborad de Aquarium!

まだ、Dashboard de Aquarium v1.0ネタで引っ張るのか〜〜! 
というつもりはないのですが、Appleのサイトデザインが変わった影響か、公開してから3ヶ月経過した時点で、該当エントリの日別アクセスが最高値に!。
そのおかげで、ココフラッシュ (Macカテゴリ)で、デイリー(数週間前のもの)と月間(今日のもの)で

なんと、 1位に!
アクセスして頂いた皆様、感謝です!

これまた、めったにあることじゃないでしょうから、 記念撮影(お約束!)。

● デイリーランキング 1位の記念撮影
Dairy_ranking_mac

● 月間ランキング 1位の記念撮影
Monthly_ranking_mac

| | | コメント (0) | トラックバック (0)

2007年8月 6日 (月)

Leopard is UNIX 03 certified

Leopard is UNIX 03 certifiedというスレッドをUS OTNのAppleフォーラムで読んだのだが、よいニュースかも。。
Oracleさん、がんばってくれるかな?
でも、インテルベースか〜。 そうなったらPowerMacからIntelMacへ買い替えるかな〜。

http://www.opengroup.org/openbrand/register/xy.htm
http://www.opengroup.org/openbrand/certificates/1190p.pdf

http://arstechnica.com/journals/apple.ars/2007/08/01/mac-os-x-leopard-receives-unix-03-certification

| | | コメント (0) | トラックバック (0)

2007年8月 5日 (日)

Estimate of rollback completion time

さて、前回、おおよそのロールバック完了時刻を見積もる関数でも作ってみるか! なんて言っていたが実際に作ってみた。

尚、今回は、Oracle SQL Developer 1.2 for MacOSXからWindows XP professional上のOracle10g R2 EEへ接続。

Estimate_rollback_complete1 Estimate_rollback_complete2 Estimate_rollback_complete3

● 準備

まずは、テーブルの作成から。
SCOTT> 
SCOTT> desc test
名前 NULL? 型
----------------------------------------- -------- ----------------------------
DATA VARCHAR2(4000)

SCOTT>
SCOTT>
SCOTT>

● データの登録

ロールバックに長時間を要するデータを登録する。(更新でも削除でも構わないが、この例ではINSERT文で。)
SCOTT> begin 
2 for i in 1..400000 loop
3 insert into test values(lpad('x',4000,'x'));
4 end loop;
5 end;
6 /

PL/SQLプロシージャが正常に完了しました。

経過: 00:05:30.06

SCOTT>
SCOTT>

● ロールバック!

準備が整ったので、早速、ロールバック!!
SCOTT>
SCOTT> rollback;

以下、ロールバック処理中に別途起動した、SQL*plusより実行

========以下、ロールバック中、別途起動したSQL*plusから実行した内容==============

● おおよそのロールバック完了時刻を確認する。

自作関数estimateRollbackCompleteTime()を以下のようにスカラ関数として実行すれば、おおよそのロールバック完了日時を確認できる。尚、関数の引数は、ロールバック完了時刻を見積もりたいセッションのSIDとSERIAL#で事前にv$session、v$transactionを問い合わせて確認しておく。

尚、今回は、dbms_lockパッケージの実行権限と、select any dictionaryシステム権限をSCOTTユーザへ付与し、estimateRollbackCompleteTime()関数を作成してある。

SCOTT> select estimateRollbackCompleteTime(146,91) as "Estimate Time",sysdate as now from dual;
Estimate Time NOW
------------------- -------------------
2007/08/02 16:29:46 2007/08/02 16:21:16

SCOTT>


● 以下、UNDOブロックのモニタリング。

ロールバックが進み、used_ublkの値が減少していくことが確認できる。ロールバックの完了時刻は、前述の自作関数で求めたおおよそのロールバック完了時間に近い。
環境などにも影響sれるのだが、予想時間を超えることもあるし、短くなる場合もあるので何度か実行してみるといいですね。または、関数を改造して、見積もりのベースとしている30秒間の処理件数を1分間の処理件数に変更するなどして、精度を高めることは可能かもしれない。
ただ、いつ終わるか分からないロールバック処理時間のおおよその時間を知るにはこのままでも十分なのではないかと思う。

SYSTEM> r
1 select
2 s.sid,
3 s.serial#,
4 s.username,
5 t.used_ublk
6 ,to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') as time
7 from
8 v$session s join v$transaction t
9 on t.addr = s.taddr
10 where
11* s.username = 'SCOTT'

SID SERIAL# USERNAME USED_UBLK TIME
---------- ---------- ---------- ---------- -------------------
146 91 SCOTT 1813 2007/08/02 16:19:13

経過: 00:00:00.01

SYSTEM> /

SID SERIAL# USERNAME USED_UBLK TIME
---------- ---------- ---------- ---------- -------------------
146 91 SCOTT 1594 2007/08/02 16:24:21

経過: 00:00:00.00
SYSTEM> /

SID SERIAL# USERNAME USED_UBLK TIME
---------- ---------- ---------- ---------- -------------------
146 91 SCOTT 882 2007/08/02 16:26:45

経過: 00:00:00.01
SYSTEM> /

SID SERIAL# USERNAME USED_UBLK TIME
---------- ---------- ---------- ---------- -------------------
146 91 SCOTT 747 2007/08/02 16:27:10

経過: 00:00:00.01
SYSTEM> /

SID SERIAL# USERNAME USED_UBLK TIME
---------- ---------- ---------- ---------- -------------------
146 91 SCOTT 668 2007/08/02 16:27:24

経過: 00:00:00.01
SYSTEM> /

SID SERIAL# USERNAME USED_UBLK TIME
---------- ---------- ---------- ---------- -------------------
146 91 SCOTT 28 2007/08/02 16:29:23

経過: 00:00:00.01
SYSTEM> /

レコードが選択されませんでした。

SYSTEM> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') as now from dual;

NOW
-------------------
2007/08/02 16:29:30

経過: 00:00:00.01
SYSTEM>

ということで、今回は、たまたま、見積もり時刻より早めに終わったようですね。ラッキー!

===========ロールバック中に別途起動したSQL*Plusでのログ、ここまで==============

ロールバックが完了しました。

経過: 00:14:34.83
SCOTT>


以下、ロールバック完了時間の見積もり関数の例。
内容は単純で、2点間のused_ublk数の残量から単位時間あたりのロールバック処理時間をもとめ、その時点のused_ublk数を元にロールバックが完了するおおよその日時を算出しているだけ。FORループを利用しているのは、単に、明示カーソルのオープン/フェッチ/クローズと例外処理を書かずにすむから。特に必要性がなければ、このプログラミングスタイルが個人的には好き。(この辺りは、好みの問題だけど。)

CREATE OR REPLACE FUNCTION estimateRollbackCompleteTime
(
iSid IN NUMBER,
iSerial# IN NUMBER
)
RETURN DATE IS
C_INTERVAL CONSTANT PLS_INTEGER := 30;

vStartTimestamp TIMESTAMP;
vEndTimestamp TIMESTAMP;
vStartUsedUndoBlocks NUMBER;
vEndUsedUndoBlocks NUMBER;
vEstimatedSecs NUMBER;
vIsFound BOOLEAN;

CURSOR csr_undoblocks
(
pSid IN NUMBER,
pSerial# IN NUMBER
) IS
SELECT
s.username,
t.used_ublk,
SYSTIMESTAMP AS now
FROM
v$session s JOIN v$transaction t
ON t.addr = s.taddr
WHERE
s.sid = pSid
AND s.serial# = pSerial#;
BEGIN
vIsFound := FALSE;
FOR rUndoBlocks IN csr_undoBlocks(iSid, iSerial#) LOOP
vStartTimeStamp := rUndoBlocks.now;
vStartUsedUndoBlocks := rUndoBlocks.used_ublk;
vIsFound := TRUE;
END LOOP;

IF NOT vIsFound THEN
RETURN NULL;
ELSE
vIsFound := FALSE;
END IF;

DBMS_LOCK.SLEEP(C_INTERVAL);

FOR rUndoBlocks IN csr_undoBlocks(iSid, iSerial#) LOOP
vEndTimestamp := rUndoBlocks.now;
vEndUsedUndoBlocks := rUndoBlocks.used_ublk;
vIsFound := TRUE;
END LOOP;

IF NOT vIsFound
OR (vStartUsedUndoBlocks - vEndUsedUndoBlocks) <= 0
THEN
RETURN NULL;
ELSE
vEstimatedSecs :=
CEIL(vEndUsedUndoBlocks / (vStartUsedUndoBlocks - vEndUsedUndoBlocks)) * C_INTERVAL;
RETURN SYSDATE + NUMTODSINTERVAL(vEstimatedSecs, 'SECOND');
END IF;
END;

| | | コメント (0) | トラックバック (0)

2007年7月30日 (月)

Mash up Caravan in Tokyo

『Mash up Caravan in 東京』に行ってきた。
今回、Mash up award 3rdに参加するとか決めているわけではないのだが、なんとなく気になったので、ウチの奥さん共々、Sun Microsystemsさんの神宮前オフィスへ。(神宮前にもオフィスあったんですね。。知らなかった。。)

APIを提供される企業より各APIの特徴などが紹介された。
http://www.tkrb.jp/
http://gainer.cc/
http://lab.nissan-carwings.com/CWC/
http://apiblog.kakaku.com/
http://labs.ecnavi.jp/developer/buzzurl/api/
http://blog.ajiyoshi.org/
http://www.mashupedia.jp/

私が面白そうだと感じたのは、http://www.placeengine.com/ですね。MacOSX向けのクライアントもあるようなのでね。
話が脱線しますが、最近、プレゼンでMacを利用する方多いですね。:-)

以下、配られたノベルティと共に、さりげなく? (笑)
Mash up Award 3rdのハガキ大のパンフレット(8枚)が。。。。はい、友人にも配っておきますよ。
Cimg5612

そして、最後に、抽選で、ノベルティが!!!!。。。と、、いつものように、くじ運は悪い・・・・。

| | | コメント (0) | トラックバック (0)

iPhone ☆〜

http://oracleappslab.com/2007/07/27/my-iphone-review/
あ〜〜、どうでもいいけど、やはく、日本でも使えるようにしてほしいなぁ〜。

| | | コメント (0) | トラックバック (0)

2007年7月22日 (日)

Cola + iTunes : 当選!

いや〜。くじ運が悪い私でも、当たるもんです。 

今日、スーパーで108円で買ったColaで、見事当選! しかも1回目で!

Cola_itunes_gotit

Cola_itunes_1credit

| | | コメント (0) | トラックバック (0)

Glossitope

前回のエントリの勢いで、GlossitopeをPowerMac G5 Dual 2.7GhzのMacOSX 10.4.10にインストールしてみた。

Konfabulator(現Yahoo Widgets)から始まったWidgetsブーム?!ですが、Javaでもってとこですかね。

次回は、Dashboard de AquariumをWidgetコンテナへも移植してみますかね。。な〜〜んて。
(まあ、気まぐれですから、どうするかは気分しだいですけど。)

前置きはこれくらいにして、早速インストール。

● まず、Java SE 6.0 R1 Developer Previewをインストール


Glossitope0

Java SE 6.0 R1 Developer Previewは、Java SE 5.0を置き換えたりしないのでご安心を。
Glossitope1

● Glossitopeをダウンロード

今回は、Exterm versionをダウンロードしてみた。
Glossitope_buffered.jnlp がダウンロードされる

Glossitope2

● ダウンロードした Glossitope_buffered.jnlpをダブルクリックしてインストール開始

Glossitope3

Glossitope4

「Trust」ボタンをクリックして。
Glossitope5

お好きな場所に保存する。
Glossitope6

● Glossttopeの起動

Glossitope Bufferedというアプリケーションをダブルクリックして起動。
Glossitope7

Desklets(WidgetsのことをGlossitopeではDeskletsというらしい)をダウンロードするので「Yes」をクリック
Glossitope8

● 起動した!

Glossitope9

● ダブルクリックで広げると、

あら、DashboardのWidgetsにも似た、カレンダーや、目玉オヤジも!
Glossitope11

● 設定ダイアログは開発途上のようで、イマイチ。。。。(^^;;;;

Glossitope12

● Deskletsの管理

×ボタンをクリックするとDeskletsをunloadできる。
Glossitope13

Dashboardとちがって、Deskletsがバラバラになるアニメーションで消えていく
Glossitope14

ということで動きました. (^^;;;;

| | | コメント (0) | トラックバック (0)

2007年7月21日 (土)

Dashcode Developer Beta - July 15, 2007.

そういえば、Dashcode Beta版の使用期限って、7月15日までだったことを思い出した。。(^^;;
TIgerでの正式版は出ないとも聞いているので、なんとなく残念な感じもする。便利な開発ツールですし。
まぁ、Leopardがリリースされたら移行すれば済むことなんだけど。。手に入るのはまだ先だろうし。それまではDashcodeに頼らずに作ろうかな。。。作りたいWidgetもあるし。。。

 Please note that the December 2006 beta of Dashcode compatible   
with Mac OS X 10.4 Tiger will cease to function on July 15, 2007.

Dashcode_beta_20070715

なんて思っていたタイミングで、Glossitopeのことを、今月の2時間で学ぶ Java Hot Topic (7月号)で知り、むくむくと制作意欲が。。。Glossitopeは、JavaVM上で動作するWidgetコンテナで、Java SE 6.0のスクリプトサポートを利用するか、javascript, Python, JRubyなど複数のスクリプト言語で記述することができるとのこと。

MacOSXでもOK。デモもMacOSXでしたし。
Glossitope のデモムービー

--追記
あ、忘れてました、Glossitopeは、Java SE 6.0が必要とのこと。

| | | コメント (0) | トラックバック (0)

2007年7月11日 (水)

Virtual Index

個人的にはOracle9iのころも含めて実践では利用した事は無い機能なのだが、Oracle ACEの一人である、Chris Foot氏が、dbazineでVirtual Indexについて書いていたので試してみることにした。


注)仮想索引は、今のところマニュアルに記載されていない隠し機能の一つなので、利用する際は、your own risk! ですよ。
  

まずは、準備から。dbazine.comの記事でも利用されている、HRスキーマ(サンプルスキーマ)を利用し試してみた。

SYS> 
SYS> select count(*) from hr.departments;

COUNT(*)
----------
27

SYS> select count(*) from hr.employees;

COUNT(*)
----------
107

SYS> create table scott.departments as select * from hr.departments;

表が作成されました。

SYS> create table scott.employees as select * from hr.employees;

表が作成されました。

SYS> conn scott/tiger
接続されました。


SCOTT> insert into employees select * from employees;

107行が作成されました。


....中略....


SCOTT> r
1* insert into employees select * from employees

109568行が作成されました。

SCOTT> commit;

コミットが完了しました。

SCOTT>

SCOTT> alter table departments add constraint pk_departments primary key (department_id);

表が変更されました。

SCOTT> exec dbms_stats.gather_schema_stats(ownname=>'SCOTT',cascade=>true);

PL/SQLプロシージャが正常に完了しました。


SCOTT> alter session set optimizer_mode = 'FIRST_ROWS';

セッションが変更されました。

SCOTT> l
1 select
2 employee_id,
3 e.department_id,
4 d.department_name
5 from
6 employees e join departments d
7 on e.department_id = d.department_id
8 where
9* employee_id = 203
SCOTT> /

実行計画
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=2011 Card=1481 Bytes=35544)
1 0 NESTED LOOPS (Cost=2011 Card=1481 Bytes=35544)
2 1 TABLE ACCESS (FULL) OF 'EMPLOYEES' (TABLE) (Cost=514 Card=1494 Bytes=11952)
3 1 TABLE ACCESS (BY INDEX ROWID) OF 'DEPARTMENTS' (TABLE) (Cost=1 Card=1 Bytes=16)
4 3 INDEX (UNIQUE SCAN) OF 'PK_DEPARTMENTS' (INDEX (UNIQUE)) (Cost=0 Card=1)


SCOTT>

empoyees表のemployee_id列に索引がないので、FULLスキャンになっているようですね。

ということで、準備完了!

● 早速、仮想索引 (virtual index)を作成してみる! create index文に、 nosegment句を付けるだけ。


  ついでに統計情報も取得する。

SCOTT> create index empid_v_idx on employees(employee_id) nosegment;

索引が作成されました。

SCOTT> exec dbms_stats.gather_index_stats(ownname=>'SCOTT',indname=>'EMPID_V_IDX');

PL/SQLプロシージャが正常に完了しました。

● 実行計画を確認してみる。


おやおや、変化しないですねぇ。って当然です。Virtual Indexは今のところ隠し機能なので、
_use_nosegment_indexes という隠しパラメータを true にセットしないと機能しません。

SCOTT> set autot trace exp
SCOTT> l
1 select
2 employee_id,
3 e.department_id,
4 d.department_name
5 from
6 employees e join departments d
7 on e.department_id = d.department_id
8 where
9* employee_id = 203
SCOTT> /

実行計画
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=2902 Card=2365 Bytes=56760)
1 0 NESTED LOOPS (Cost=2902 Card=2365 Bytes=56760)
2 1 TABLE ACCESS (FULL) OF 'EMPLOYEES' (TABLE) (Cost=513 Card=2384 Bytes=19072)
3 1 TABLE ACCESS (BY INDEX ROWID) OF 'DEPARTMENTS' (TABLE) (Cost=1 Card=1 Bytes=16)
4 3 INDEX (UNIQUE SCAN) OF 'PK_DEPARTMENTS' (INDEX (UNIQUE)) (Cost=0 Card=1)


SCOTT>


● _use_nosegment_indexesパラメータをtrueに設定して再チャレンジ。


おお〜〜〜。employee_id列に非ユニーク索引を作成すれば、このクエリは早くなりそうですね。

SCOTT> alter session set "_use_nosegment_indexes" = true;

セッションが変更されました。

SCOTT> l
1 select
2 employee_id,
3 e.department_id,
4 d.department_name
5 from
6 employees e join departments d
7 on e.department_id = d.department_id
8 where
9* employee_id = 203
SCOTT> /

実行計画
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=273 Card=2365 Bytes=56760)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPLOYEES' (TABLE) (Cost=10 Card=88 Bytes=704)
2 1 NESTED LOOPS (Cost=273 Card=2365 Bytes=56760)
3 2 TABLE ACCESS (FULL) OF 'DEPARTMENTS' (TABLE) (Cost=3 Card=27 Bytes=432)
4 2 INDEX (RANGE SCAN) OF 'EMPID_V_IDX' (INDEX) (Cost=1 Card=2384)

SCOTT>


● では、本当の索引を作成したらどうなのでしょうね。


おお〜〜〜。Cost=3042もある〜〜〜。 Virtual Indexの時は、Cost=273なのに〜〜。
だから、隠し機能なんですかね????。 
単純な問合せでは、Virtual Indexとの差はあまりなかったのですが。。。

SCOTT> drop index empid_v_idx;

索引が削除されました。

SCOTT> alter session set "_use_nosegment_indexes" = false;

セッションが変更されました。

SCOTT> create index empid_idx on employees(employee_id);

索引が作成されました。

SCOTT> exec dbms_stats.gather_index_stats(ownname=>'SCOTT',indname=>'EMPID_IDX');

PL/SQLプロシージャが正常に完了しました。

SCOTT> l
1 select
2 employee_id,
3 e.department_id,
4 d.department_name
5 from
6 employees e join departments d
7 on e.department_id = d.department_id
8 where
9* employee_id = 203
SCOTT> /

実行計画
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=FIRST_ROWS (Cost=3042 Card=1657 Bytes=39768)
1 0 NESTED LOOPS (Cost=3042 Card=1657 Bytes=39768)
2 1 TABLE ACCESS (BY INDEX ROWID) OF 'EMPLOYEES' (TABLE) (Cost=1365 Card=1673 Bytes=13384)
3 2 INDEX (RANGE SCAN) OF 'EMPID_IDX' (INDEX) (Cost=4 Card=1673)
4 1 TABLE ACCESS (BY INDEX ROWID) OF 'DEPARTMENTS' (TABLE) (Cost=1 Card=1 Bytes=16)
5 4 INDEX (UNIQUE SCAN) OF 'PK_DEPARTMENTS' (INDEX (UNIQUE)) (Cost=0 Card=1)

SCOTT>


● なぜ? 実行計画に差がでてしまうのだろうか???? (だから隠し機能のままなのか???) 疑問。。。


推測なので、間違っているかもしれないという前提ですが、以下のログを見てもらいたい。
user_objectsには索引として存在しているが、 user_indexesには存在しない。
user_indexesに存在しないということは、dbms_statsパッケージでアナライズしたVirtual Indexの統計情報はどこに格納されるのか???
それがポイントになりそうな気がします。

統計情報の格納場所が無い = 統計情報が無い = 統計情報の欠落 = コストベース・オプティマイザは、統計情報のデフォルト値を利用して実行計画を立てる!
 
ということになるのではないか? と思った次第。従って、実体のある索引とはかけ離れたCostが算出されてしまう。 
これは私個人の推測に過ぎません。なにせ、隠し機能なので、マニュアルにも解説は無いので・・・。

このようなことを踏まえた上で、開発環境で、試してみる程度なら楽しいかもしれませんね。。(趣味の世界の話になっちゃいますけどね。。笑)

今回は、Oracle10g R1を利用した結果なので、Oracle10g R2でも試してみましょうかね。気が向いた時にでも。

SCOTT> l
1 select
2 object_name
3 ,object_type
4 from
5 user_objects
6 where
7* object_type = 'INDEX' and object_name = 'EMPID_V_IDX'
SCOTT> /

OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------
EMPID_V_IDX INDEX

SCOTT> l
1 select
2 index_name
3 ,table_name
4 ,index_type
5 ,uniqueness
6 ,initial_extent
7 ,last_analyzed
8 ,status
9 from
10 user_indexes
11 where
12* index_name = 'EMPID_V_IDX'
SCOTT> /

レコードが選択されませんでした。

SCOTT>

| | | コメント (1) | トラックバック (0)

2007年7月 8日 (日)

Stored Procedure で host command #3

前回からの続きです。
さて、前回は、javaクラスをOracle Databaseへデプロイしたところまでだった。

ということで、デプロイしたクラスとメソッドを確認しておきましょう! (以下の例は、 user_java_methodsビューを問い合わせたもの)

このマニュアルも参考になるのでリンクしておきます。

SQL> conn scott/tiger
SQL> select name,method_name,accessibility,is_static,return_class from user_java_methods;

NAME METHOD_NAM ACCESSIBILITY IS_STA RETURN_CLA
---------------------------------------- ---------- ------------------ ------ ----------
jp/macdeoracle/CommandOutputReader $init$ NO -
jp/macdeoracle/CommandOutputReader <init> PUBLIC NO -
jp/macdeoracle/CommandOutputReader run PUBLIC NO -
jp/macdeoracle/HostCommandExecuter <clinit> YES -
jp/macdeoracle/HostCommandExecuter exec PRIVATE YES -
jp/macdeoracle/HostCommandExecuter ls PUBLIC YES -
jp/macdeoracle/HostCommandExecuter main PUBLIC YES -
jp/macdeoracle/HostCommandExecuter <init> PUBLIC NO -

8行が選択されました。

SQL>

● 次にjavaストアドプロシージャのコール仕様を作成する

language java以降がポイントですよ。実行するstatic methodを指定します。
SQL> create or replace procedure ls(directory IN VARCHAR2)
2 as language java
3 name 'jp.macdeoracle.HostCommandExecuter.ls(java.lang.String)';
4 /

プロシージャが作成されました。

では、実行してみると・・・・・。
あれれ、権限が足りないとでますね。。。。。

SQL>
SQL> exec ls('c:¥temp');
BEGIN ls; END;

*
行1でエラーが発生しました。:
ORA-29532: 不明なJava例外でJavaコールが終了しました: java.security.AccessControlException: the Permission (java.io.FilePermission <<ALL
FILES>> execute) has not been granted to SCOTT. The PL/SQL to grant this is dbms_java.grant_permission( 'SCOTT',
'SYS:java.io.FilePermission', '<<ALL FILES>>', 'execute' )
ORA-06512: "SCOTT.LS", 行1
ORA-06512: 行1


● エラーメッセージの指示通りに、 dbms_java.grant_permissionを実行してみることに。。
  user_java_policyを確認してみると権限は付与されたようですね。。。

SQL> conn / as sysdba
SQL> execute dbms_java.grant_permission('SCOTT','SYS:java.io.FilePermission','<<ALL FILES>>','execute');

PL/SQLプロシージャが正常に完了しました。

SQL>
SQL> conn scott/tiger
SQL> select action,type_name,name,enabled from user_java_policy;


ACTION TYPE_NAME NAME ENABLED
---------- ---------------------------------------- ---------------------------------------- ----------------
read java.io.FilePermission <<ALL FILES>> ENABLED
java.lang.RuntimePermission accessClassInPackage.* ENABLED
java.lang.RuntimePermission defineClassInPackage.* ENABLED
java.lang.RuntimePermission getProtectionDomain ENABLED
java.lang.RuntimePermission stopThread ENABLED
connect, java.net.SocketPermission * ENABLED
resolve
java.lang.RuntimePermission createSecurityManager ENABLED
java.lang.RuntimePermission exitVM ENABLED
java.lang.RuntimePermission loadLibrary.* ENABLED
java.lang.RuntimePermission modifyThread ENABLED
java.lang.RuntimePermission modifyThreadGroup ENABLED
java.lang.RuntimePermission preferences ENABLED
read java.util.PropertyPermission * ENABLED
write java.util.PropertyPermission user.language ENABLED
oracle.aurora.rdbms.security.PolicyTable 0:java.lang.RuntimePermission#loadLibrar ENABLED
Permission y.*
oracle.aurora.security.JServerPermission DUMMY DISABLED
oracle.aurora.security.JServerPermission LoadClassInPackage.* ENABLED
oracle.aurora.security.JServerPermission LoadClassInPackage.java.* ENABLED
oracle.aurora.security.JServerPermission LoadClassInPackage.oracle.aurora.* ENABLED
oracle.aurora.security.JServerPermission LoadClassInPackage.oracle.jdbc.* ENABLED
execute java.io.FilePermission <<ALL FILES>> ENABLED

21行が選択されました。

SQL>


再度、実行してます!

SQL> exec ls('c:¥temp');
BEGIN ls; END;

*
行1でエラーが発生しました。:
ORA-29532: 不明なJava例外でJavaコールが終了しました: java.security.AccessControlException: the Permission (java.io.FilePermission <<ALL
FILES>> execute) has not been granted to SCOTT. The PL/SQL to grant this is dbms_java.grant_permission( 'SCOTT',
'SYS:java.io.FilePermission', '<<ALL FILES>>', 'execute' )
ORA-06512: "SCOTT.LS", 行1
ORA-06512: 行1


なんなんでしょうね。よくわからないエラーメッセージですね。権限はあるのに。
わかりにくいメッセージ。やはりこうでなくちゃ、オラクルは。。なんてね。
イライラしてきたので、javasysprivロールを付与しちゃいました。(セキュリティ面からみれば好ましくないのですけど。)
各クラス毎に実行権限を細かく付与すればうまくいきそうですが、エラーメッセージからは、何のどんな権限が不足しているのか単純には判断できない(予想はつきますけど・・・)ので、この件に関しては別途調べることにして先へ進むことにします。要調査->TODO

SQL> conn / as sysdba
接続されました。
SQL> grant javasyspriv to scott;

権限付与が成功しました。


:-) やっと動いた〜。

SQL> conn scott/tiger
接続されました。

SQL>
SQL> set serveroutput on
SQL> exec dbms_java.set_output(2000);

PL/SQLプロシージャが正常に完了しました。

SQL> exec ls('c:¥temp');
apex_3.0
apex_3.0.zip
jdevstudio10131.zip
version.log

PL/SQLプロシージャが正常に完了しました。

SQL>

なんとか実行できました。。。ね。 (^^;;;;

Jdeveloper_filelist3

| | | コメント (0) | トラックバック (0)

2007年7月 4日 (水)

Stored Procedure で host command #2

さて、前回のつづきです。
javaストアドプロシージャのソースは以下の通り。

OSコマンドを実行するjavaの例は、ググればやまほどヒットするので特に解説はなし。
Oracleでjavaストアドプロシージャを作成する方法は、マニュアル「Oracle Database Java開発者ガイド - 3 Oracle DatabaseでのJavaメソッドのコール」を参照のこと。
基本は前述のマニュアルで足りると思います。(今回は、JDBCも利用していませんし。)
それに加えて、OTN-JのOracleJVM and Java Stored Procedures なども参考になるでしょうね。

以下、Oracle JDeveloper 10.1.3.1 for MacOSXを利用。

Jdev10gmacosx_hostcommand

package jp.macdeoracle;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;


public class CommandOutputReader extends Thread {
private InputStream is;
private String lines = "";

public CommandOutputReader(InputStream is) {
this.is = is;
}

public void run()
{
String outputLine;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(this.is));
while ((outputLine = br.readLine()) != null) {
System.out.println(outputLine);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package jp.macdeoracle;

import java.lang.Runtime;
import java.lang.SecurityException;
import java.io.IOException;

public class HostCommandExecuter
{
public static final String OS_WINDOWS_ = "Windows";
public static final String OS_MACOSX_ = "Mac OS X";
public static final String OS_LINUX_ = "Linux";

private static void exec(String[] command)
throws IOException,
SecurityException,
InterruptedException
{
Process myproc = Runtime.getRuntime().exec(command);
new CommandOutputReader(myproc.getInputStream()).start();
new CommandOutputReader(myproc.getErrorStream()).start();
myproc.waitFor();
}

public static void ls(String directory)
throws IOException,
SecurityException,
InterruptedException
{
String osname = System.getProperty("os.name");
if (osname.indexOf(OS_WINDOWS_) >= 0) {
String[] cmd = {"CMD.EXE", "/C", "DIR", "/B", directory};
exec(cmd);
} else if (
osname.indexOf(OS_MACOSX_) >= 0
|| osname.indexOf(OS_LINUX_) >= 0
) {
String[] cmd = {"/bin/ls", directory};
exec(cmd);
} else {
throw new IOException(osname + ":このOSには対応していません。");
}
}

public static void main(String[] args)
throws IOException,
InterruptedException,
SecurityException
{
ls(".");
}
}

上記ソースをコンパイルしてOracle Databaseへデプロイ! (以下、Oracle10g R2の例)
うまくいけば以下のようなログが表示される。

loadjavaを接続'Oracle10gR2_Scott'で呼出し中。引数:
-order -resolve -definer -force -thin -schema scott -verbose
creating : class SCOTT.jp/macdeoracle/CommandOutputReader
loading : class SCOTT.jp/macdeoracle/CommandOutputReader
creating : class SCOTT.jp/macdeoracle/HostCommandExecuter
loading : class SCOTT.jp/macdeoracle/HostCommandExecuter
resolving: class SCOTT.jp/macdeoracle/CommandOutputReader
resolving: class SCOTT.jp/macdeoracle/HostCommandExecuter
Loadjavaが終了しました。
公開が終了しました。
---- ストアド・プロシージャのデプロイが終了しました ----


次のようなエラーがでたら、J2SE 1.4.xでコンパイルし直してデプロイすべし! 
オラクルにしては、わかり易いメッセージじゃ。 (^^) 

loadjavaを接続'Oracle9iR2_Scott'で呼出し中。引数:
-order -resolve -definer -force -thin -schema scott -verbose
creating : class SCOTT.jp/macdeoracle/CommandOutputReader
loading : class SCOTT.jp/macdeoracle/CommandOutputReader
created : "SCOTT".CREATE$JAVA$LOB$TABLE
Error while creating class jp/macdeoracle/CommandOutputReader
ソケットから読み込むデータはこれ以上ありません。
Error while testing for existence of dbms_java.handleMd5
Exception java.sql.SQLException: OALL8 is in an inconsistent state.
created : "SCOTT".JAVA$CLASS$MD5$TABLE
creating : class SCOTT.jp/macdeoracle/HostCommandExecuter
loading : class SCOTT.jp/macdeoracle/HostCommandExecuter
Error while creating class jp/macdeoracle/HostCommandExecuter
ソケットから読み込むデータはこれ以上ありません。
The following operations failed
class SCOTT.jp/macdeoracle/CommandOutputReader: creation (createFailed)
class SCOTT.jp/macdeoracle/HostCommandExecuter: creation (createFailed)
oracle.aurora.server.tools.loadjava.ToolsException: Failures occurred during processing
at oracle.aurora.server.tools.loadjava.LoadJava.process(LoadJava.java:863)
at oracle.jdeveloper.deploy.tools.OracleLoadjava.deploy(OracleLoadjava.java:116)
at oracle.jdeveloper.deploy.tools.OracleLoadjava.deploy(OracleLoadjava.java:46)
at oracle.jdevimpl.deploy.OracleDeployer.deploy(OracleDeployer.java:97)
at oracle.jdevimpl.deploy.StoredProcHandler.doDeploy(StoredProcHandler.java:473)
at oracle.jdevimpl.deploy.StoredProcHandler.doDeploy(StoredProcHandler.java:360)
at oracle.jdevimpl.deploy.StoredProcHandler.doDeploy(StoredProcHandler.java:284)
at oracle.jdevimpl.deploy.StoredProcProfileDt$Action$1.run(StoredProcProfileDt.java:383)
#### デプロイが不完全です ####
*** Note ***
デプロイ・エラーの可能性の1つとして、ターゲット・データベースがJDKバージョン1.5をサポートしていないことが考えられます。
お使いのプロジェクト・プロパティ・コンパイラのソースとターゲットを古いバージョンに変更することで、この問題を修復できます。
************


プロジェクトプロパティを開いて、j2se 1.4.2を設定している様子。
Change_jdk1 Change_jdk2Change_jdk3Change_jdk4

今日はここまで。次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年6月30日 (土)

Stored Procedure で host command

随分前のネタ(Oracle9i R2は、TurboLinux8 Enterprise Server - Powered by United Linux 1.0と Oracle10g R1 は、MacOSX Pantherの頃なので2005年くらいに公開するタイミングを逃していたネタ)なんですが、検索キーワードやOTN-Jなどでもたまに見かけるので、昔のネタに、Oracle10g R2 for Windowsの例も付け加えて公開することにした。

どんなネタかって? まずは実行結果から。

見ての通り、ストアドプロシージャからDOSコマンドのdirや、shellコマンドのlsを実行してます。
Oracleのストアドプロシージャは、PL/SQL以外に、javaやCでを書くこともできます。
以下の例は、javaストアドプロシージャで DOSコマンドのdirや、shellコマンドのlsを実行しています。

セキュリティ上、なんでもかんでも実行できるようにしたりするのはお勧めしませんが、以前、負荷テストで使ったことがあります。
負荷テスト開始のタイミングで、sarを実行し、テスト終了時に停止させるshellスクリプトを実行してましたね。 いつ終わるかはっきりしないような負荷テストを自動起動し、システム側の状態も同時に記録するといったことを行っていました。
ただ、最近は、DBMS_SCHEDULERパッケージがあるので自前で作らなくてできるとは思いますが。。まぁ、こんなことも出来るんだよね。 っていうことを知ってても損はないんじゃないかと思います。


● Linux (United Linux 1.0 なつかしい〜。)

SCOTT> conn scott@zion
パスワードを入力してください:
接続されました。
SCOTT> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for Linux: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SCOTT>
SCOTT>
SCOTT> set serveroutput on
SCOTT> exec dbms_java.set_output(20000);

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec ls('/tmp');
UnitedLinux-1.0-SP-3
i830-20030120-i386-linux.tar.gz
turbonetcfg-routing.log
turbonetcfg.log

PL/SQLプロシージャが正常に完了しました。

SCOTT>

● MacOSX 10.3 Panther

SCOTT> conn scott@panther
パスワードを入力してください:
接続されました。
SCOTT> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE 10.1.0.3.0 Production
TNS for MacOS X Server: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production

SCOTT> set serveroutput on
SCOTT> exec dbms_java.set_output(20000);

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec ls('/Users/oracle');
Desktop
Documents
Library
Movies
Music
Pictures
Public
Sites
jdevhome

PL/SQLプロシージャが正常に完了しました。

SCOTT>


● Windows XP Professional

SCOTT> conn scott@catfish
パスワードを入力してください:
接続されました。
SCOTT>
SCOTT>
SCOTT>
SCOTT> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Prod
PL/SQL Release 10.2.0.2.0 - Production
CORE 10.2.0.2.0 Production
TNS for 32-bit Windows: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production

SCOTT>

SCOTT> set serveroutput on
SCOTT> exec dbms_java.set_output(20000);

PL/SQLプロシージャが正常に完了しました。

SCOTT> exec ls('c:¥temp');
apex_3.0
apex_3.0.zip
jdevstudio10131.zip
version.log

PL/SQLプロシージャが正常に完了しました。

SCOTT>

ってとこですね。ほんとにお遊びでした。(笑)

ということで、次回はどうやってOracleのPL/SQL、java、ホストコマンドで遊んでいるかお見せします。

| | | コメント (0) | トラックバック (0)

2007年6月28日 (木)

Dashboard de Aquarium - 号外 #5

やった〜! 

ということで、ついに、Dashboard de Aquarium が Top10 入りしました。

ダウンロードしてくれた世界中の方々に感謝します。

日本は、ソフトウェアの輸入大国でもあるんだそうで、Dashboard de Aquariumのような小さなソフトウェアでも一応、日本製ということで数字には全くでないけど貢献できた??? かも。。。。。。

 Dashboarde_de_aquarium_top10

| | | コメント (0) | トラックバック (0)

2007年6月24日 (日)

OSC 2007 .DB

今日は、Open Source Conference 2007 .DBに行ってきました。 結構な人数が来てましたね。

朝は寝坊したこともあり、10時からのセッションには間に合わず。。。 orz、
ということで、DBマガジンでもおなじみの増永良文氏のセッションなど午後からのものを中心に。。

 


Cimg4826 Cimg4834

頂いたノベルティは、こちら。

| | | コメント (0) | トラックバック (0)

2007年6月19日 (火)

Dashboard de Aquarium - 号外 #4

ここのところなにかと忙しくブログの更新も滞りぎみ、ネタはあるんですけどねぇ。
と、久々に、WidgetのTop50を見てみたら、、、なんと、Top10目前じゃないですか!! びっくり。

Dashboard_de_aquarium_4

そして、ココフラッシュデイリーランキング 2007/6/19では、3位、ココフラッシュ・月間ランキングでは、7位。 とトップ10入り。

そうあることじゃないと思うので、記念のスクリーンショット

デイリーランキング 2007/6/19現在
Cocoflashdaily

月間ランキング 2007/6/19現在
Cocoflashmontly

| | | コメント (0) | トラックバック (0)

2007年6月14日 (木)

Dashboard De Aquarium - 号外 #3

なんだか、Blogのアクセス数が多くなってきたと思ったら、Top14にランクイン!
いつまでTop50にランクインし続けられるのかワクワク。


Top14_dashboard_de_aquarium_20070614

| | | コメント (0) | トラックバック (0)

2007年6月12日 (火)

Dashboard De Aquarium - 号外 #2

Apple Japanのサイトに続き、Apple (US)のサイトでも Dashboard De Aquariumが公開されました。 (^▽^)

Dashboard_de_aquarium_en

| | | コメント (0) | トラックバック (0)

2007年6月 8日 (金)

Mac De Oracle : PL/SQL de Collection #5



Marcus Miller - Silver Rain - It'll Come Back to YouMarcus Miller - Silver Rain - It'll Come Back to You

ちょいと間が空いたが、PL/SQLのコレクションでのお遊び。その5回目。

検索ワードで結構目にするのが、"N次元 結合配列" というキーワード。

ということで、今回は、多次元のコレクションの例を。

N次元のコレクションってどうやって作るの? ってことで情報を検索しているのだと思いますが、しっかりマニュアルにも記載されているので、そちらもしっかり読んでおくことをおすすめしますよ!。

Associative Array(以下、結合配列)、VARRAYやNested Table(以下、ネスト表)どれでも、考え方は同じ。
コレクション自体を別コレクションの要素にすればできるんですよ。 コレクションを入れ子にする と言えばイメージしやすい? ですかね。


以下のコードで赤太字で示しているところが多次元コレクション定義とアクセスのポイント。
まず、empType型を要素とするNestedTableType型(ネスト表)を定義し、次にNestedTalbType型を要素とするStrAssociativeArrayType型(結合配列)を定義している。
以下の例は多少、ひねくれた例? として結合配列とネスト表という異なるコレクションを利用して多次元コレクションを定義している。その影響でコレクションの操作は多少面倒になるのだが..

尚、empType型は、事前に作成しておいたオブジェクト型。

create or replace
PROCEDURE multiLevelCollections
AS
TYPE NestedTableType IS TABLE OF empType;
TYPE StrAssociativeArrayType IS TABLE OF NestedTableType INDEX BY VARCHAR2(50);

myNestedTable NestedTableType := NestedTableType();
myStrAssociativeArray StrAssociativeArrayType;


claerMyStrAssociateArray StrAssociativeArrayType;

myEmp empType;
j dept.dname%TYPE;
vDeptName dept.dname%TYPE := NULL;

CURSOR csrEmp IS
SELECT
emp.job,
emp.deptno,
dept.dname,
emp.empno,
emp.ename,
emp.sal,
emp.hiredate
FROM
emp JOIN dept
ON emp.deptno = dept.deptno
ORDER BY
emp.deptno,
emp.ename;

PROCEDURE printArray
IS
BEGIN
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('**** コレクションに要素が存在している状態 ****');
DBMS_OUTPUT.PUT_LINE(
'myStrAssociativeArray('
|| myStrAssociativeArray.COUNT
|| ')'
);

j := myStrAssociativeArray.FIRST;
WHILE j IS NOT NULL LOOP
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE(
'myStrAssociativeArray('
|| j || ')(' || myStrAssociativeArray(j).COUNT || ')'
);

FOR k IN
myStrAssociativeArray(j).FIRST..myStrAssociativeArray(j).LAST
LOOP
DBMS_OUTPUT.PUT_LINE(
'myStrAssociativeArray(' || j || ').'
|| 'myNestedTable(' || TO_CHAR(k) || ') = '
|| myStrAssociativeArray(j)(k).TO_STRING()
);
END LOOP;
j := myStrAssociativeArray.NEXT(j);
END LOOP;
END;

BEGIN
FOR emp_rec IN csrEmp LOOP
IF csrEmp%ROWCOUNT = 1 THEN
vDeptName := emp_rec.dname;
END IF;

myEmp := empType (
emp_rec.empno,
emp_rec.ename,
emp_rec.job,
emp_rec.hiredate,
emp_rec.sal,
emp_rec.deptno
);

IF vDeptName <> emp_rec.dname THEN
myStrAssociativeArray(vDeptName) := myNestedTable;
vDeptName := emp_rec.dname;
myNestedTable := NestedTableType();
END IF;

myNestedTable.EXTEND(1);
myNestedTable(myNestedTable.COUNT) := myEmp;
END LOOP;

IF myNestedTable.COUNT > 0 THEN
myStrAssociativeArray(vDeptName) := myNestedTable;
END IF;

printArray();

-- 結合配列を空にする!
myStrAssociativeArray := claerMyStrAssociateArray;

DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('**** コレクションが空の状態 ****');
DBMS_OUTPUT.PUT_LINE(
'myStrAssociativeArray('
|| myStrAssociativeArray.COUNT
|| ')'
);


END;
/

SCOTT> l
1 select
2 emp.deptno,
3 dept.dname,
4 emp.empno,
5 emp.ename,
6 emp.sal,
7 emp.hiredate
8 from
9 emp join dept
10 on emp.deptno = dept.deptno
11 order by
12 emp.deptno,
13* emp.ename
SCOTT> /

DEPTNO DNAME EMPNO ENAME SAL HIREDATE
---------- -------------- ---------- ---------- ---------- --------
10 ACCOUNTING 7782 CLARK 2450 81-06-09
10 ACCOUNTING 7839 KING 5000 81-11-17
20 RESEARCH 7876 ADAMS 1100 87-05-23
20 RESEARCH 7566 JONES 2975 81-04-02
20 RESEARCH 7788 SCOTT 3000 87-04-19
20 RESEARCH 7369 SMITH 800 80-12-17
30 SALES 7499 ALLEN 1600 81-02-20
30 SALES 7698 BLAKE 2850 81-05-01
30 SALES 7900 JAMES 950 81-12-03
30 SALES 7654 MARTIN 1250 81-09-28
30 SALES 7844 TURNER 1500 81-09-08
30 SALES 7521 WARD 1250 81-02-22

12行が選択されました。

SCOTT>

実行結果は次のようになる。(Oracle SQL Developer 1.1 for MacOSX) 
1.2がリリースされたようなので後でダウンロードしとくか・・> TODO

Oracleplsqldev11

Mlevelcollresults


ということで、今日はここまで。

Have a good Week end!

| | | コメント (0) | トラックバック (0)

2007年6月 6日 (水)

PL/SQL de File Upload / Download #5



Kate Bush - The Whole Story - Experiment IV Kate Bush - The Whole Story - Experiment IV


PL/SQL de File Upload / Download の最終回。

さて、前回は、日本語ファイル名のファイルをダウンロードするとFirefoxやMozilla以外のブラウザでは文字化け等が発生するというところまでだった。

また、IE6では、Content-Disposition: attachment; filenameを指定する方法であれば文字化けを回避できるということも確認した。

ただ、Mac De Oracleでは一番大切な Safari。そのSafariでは常に文字化けしていた。残念!〜〜で終わらせないのがMac De Oracle.

調べた結果、文字エンコードをUTF-8で統一すれば回避できるのでは? という考えに至り、即実行!



OTN-J の Code Tipsでも公開されました。(2007/6/16更新)
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2235
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2236


下記手順で mod_plsqlのファイルアップロード/ダウンロード環境を再構築した。

  1. データベースキャラクタセットをAL32UTF8で新たなデータベースを作成する。JA16SJISTILDEからAL32UTF8へデータベースキャラクタセットを変更することはできないため、新たにデータベースを作成することになる。
  2. dads.confのPlsqlNLSLanguageをJAPANESE_JAPAN.JA16SJISTILDEからJAPANESE_JAPAN.AL32UTF8へ変更する。
  3. ストアドプロシージャで生成するHTMLのcharsetをShift_JISからUTF-8へ変更する。
  4. utl_url.escapeプロシージャでURLエンコードする際の文字コードをShift_JISからAL32UTF8へ変更する。

1.データベースの作成

DBCA (Database Configuration Assistant)を利用し、データベースキャラクタセット:AL32UTF8のデータベースをサクッと作成しちゃいます。時間のかかるのはこの部分だけですね。
既に、データベースキャラクタセットがAL32UTF8であればこのステップはスキップしてください。

2.dads.confの変更

PlsqlNLSLanguageをJAPANESE_JAPAN.JA16SJISTILDEからJAPANESE_JAPAN.AL32UTF8へ変更します。
# ============================================================================ 
# mod_plsql DAD Configuration File
# ============================================================================
# 1. Please refer to dads.README for a description of this file
# ============================================================================

# Note: This file should typically be included in your plsql.conf file with
# the "include" directive.

# Hint: You can look at some sample DADs in the dads.README file

# ============================================================================
<Location /plsql_de_fileupload>
SetHandler pls_handler
Order deny,allow
Allow from all
AllowOverride None
PlsqlDatabaseUsername scott
PlsqlDatabasePassword tiger
PlsqlDatabaseConnectString 192.168.1.19:1521:amazon
PlsqlAuthenticationMode Basic
PlsqlDefaultPage scott.fileUploadForm
PlsqlDocumentTablename scott.discusDocTable
PlsqlDocumentPath docs
PlsqlDocumentProcedure scott.fileDownloader
PlsqlNLSLanguage JAPANESE_JAPAN.AL32UTF8
</Location>

3.プロシージャの変更
(1)ファイルを最大5件同時にアップロードするフォームを表示するプロシージャの変更。

charsetをShift_JISからUTF-8へ変更するだけ。
CREATE OR REPLACE PROCEDURE fileUpLoadForm
IS
numOfFiles CONSTANT PLS_INTEGER := 5;
BEGIN
htp.htmlopen;
htp.headopen;
htp.meta('CONTENT-Type',null,'text/html; charset=UTF-8');
htp.title('PL/SQL de File Upload');
htp.headclose;

htp.bodyopen;
htp.centeropen;
htp.print('<div align="center" style="width:500; height:600">');
htp.STRONG(
cattributes=> 'style="font-size:24px; color:#ff0000; '
|| 'text-shadow:1px 2px 3px #7f7f7f"',
ctext=> 'PL/SQL de ファイルアップロード'
);
htp.prn('<br><br>');
htp.formopen(
cenctype=>'multipart/form-data',
curl=>'action',cmethod=>'POST'
);

FOR i IN 1..numOfFiles LOOP
htp.prn(
'<p><span style="text-shadow:1px 2px 3px #7f7f7f">ファイルの選択:</span>'
);
htp.formfile(cname=>'file');
htp.br;
END LOOP;
htp.prn('<br><br><p>');
htp.formsubmit(cattributes=>'align=right',cvalue=>'アップロード');

htp.formclose;
htp.print('</div>');
htp.centerclose;
htp.bodyclose;
htp.htmlclose;
END;
/


(2)<FORM>要素のaction属性に指定するプロシージャの変更

charsetをShift_JISからUTF-8へ変更するだけ。
CREATE OR REPLACE PROCEDURE action
(
file IN owa_util.vc_arr
) IS
vOpe# number(10);
BEGIN
htp.htmlopen;
htp.meta('CONTENT-TYPE',null,'text/html; charset=UTF-8');
htp.headopen;
htp.title('PL/SQL de File Upload (Action)');
htp.headclose;
htp.bodyopen;
htp.header(1,'アップロード・ステータス');
htp.print('以下のアップロードが終了しました。<br><br>');
htp.prn('<span style="color:#ff0000; text-shadow:1px 2px 3px #7f7f7f">');
FOR i IN file.FIRST..file.LAST LOOP
IF FILE(i) IS NOT NULL THEN
htp.print('-&gt; ' || file(i) || '<br>');
END IF;
END LOOP;
htp.print('</span>');

-- 同一操作でアップロードしたファイルへ、同一操作番号を設定する。
SELECT upload_operation#.nextval INTO vOpe# FROM dual;
FOR i IN file.FIRST..file.LAST LOOP
UPDATE DISCUSDOCTABLE SET operation# = vOpe# WHERE name=file(i);
END LOOP;

htp.bodyclose;
htp.htmlclose;
END;
/


(3)ダウンロード可能なファイルリストを表示するプロシージャの変更。

charsetをShift_JISからUTF-8へ変更、utl_url.escapeでURLエンコードする際の文字コードをShift_JISからAL32UTF8へ変更。
CREATE OR REPLACE PROCEDURE fileList
IS
BEGIN
htp.htmlopen;
htp.headopen;
htp.meta('CONTENT-Type',null,'text/html; charset=UTF-8');
htp.title('PL/SQL de File upload - ダウンロード可能なファイル一覧');
htp.headclose;
htp.bodyopen;
htp.print(
'<span style="text-shadow:1px 2px 3px #7f7f7f; font-size: 22px">'
|| 'ダウンロードファイル一覧</span><br><br>'
);
FOR doc IN (SELECT name FROM discusDocTable) LOOP
htp.anchor('docs/' || utl_url.escape(doc.name, false, 'AL32UTF8'), 'docs/' || doc.name);
htp.br;
END LOOP;
htp.bodyclose;
htp.htmlclose;
END;
/

(4)ファイルのダウンロード時にmod_plsqlから呼び出されるプロシージャの変更。

charsetをShift_JISからUTF-8へ変更。
CREATE OR REPLACE PROCEDURE fileDownloader
IS
vFilePath VARCHAR2(256);
BEGIN
vFilePath := SUBSTR(owa_util.get_cgi_env('PATH_INFO'), 2);
wpg_docload.download_file(vFilePath);
EXCEPTION
WHEN OTHERS THEN
htp.htmlopen;
htp.headopen;
htp.meta('Ccntent-Type',null,'text/html; charset=UTF-8');
htp.headclose;
htp.bodyopen;
htp.print('ダウンロードファイル:' || vFilePath);
htp.print('<strong style="color:#ff0000">' || sqlerrm() || '</strong>');
htp.bodyclose;
htp.htmlclose;
END fileDownloader;
/


最後に、各プラットフォーム、各ブラウザでダウンロードしているスクリーンショットを。
MacOSX
Safari:
Macosx_safari

Firefox:
Macosx_firefox

Opera9.2:
Macosx_opera92

Linux(TurboLinux8 , CentOS4.4)
Firefox:
Centos44_firefox

SeaMonkey:
Centos44_seamonkey103

Mozilla1.4.2(TurboLinux8):
Turbolinux_mozilla142

Windows XP Professional
IE6:
Windows_ie6

FIrefox:
Windows_firefox


結果として、データベースからHTMLまでの文字エンコードを UTF-8 に統一することで、Firefox以外のブラウザで発生していた文字化けを回避することができるということになる。   (^▽^)v

追記、Oracle10gでは、(おそらく Oracle11g以降も)、新規に作成するデータベースのキャラクタセットは、Unicodeが推奨されているので、データベース作成時のキャラクタセットは、AL32UTF8にしておいたほうがいいだろうね。

以下、マニュアルより引用


データベース・キャラクタ・セットとしてのUnicodeの選択

すべての新規システム配置にUnicodeを使用することをお薦めします。レガシー・システムも最終的にはUnicodeに移行することをお薦めします。現在システムをUnicodeで配置すると、利便性、互換性および拡張性の面で多くの利点があります。Oracle Databaseの包括的なサポートにより、Unicodeの利点を活かしながら高パフォーマンス・システムを高速かつ容易に配置できます。現時点で多言語データをサポートする必要がない場合、またはUnicodeが必要ない場合でも、長期的には新規システムに最適な選択となる可能性が高く、結局は時間を短縮してコストを節減し、競争上の優位性を得ることになります。Unicodeの詳細は、第6章「Unicodeを使用した多言語データベースのサポート」を参照してください。


ついでに、グローバリゼージョンガイドの6 Unicodeを使用した多言語データベースのサポートあたりも熟読して最終的にどの文字コードやエンコーディングにするか判断するべし。

| | | コメント (0) | トラックバック (0)

2007年6月 5日 (火)

PL/SQL de File Upload / Download #4



Howard Jones - The Peaceful Tour - Things Can Only Get BetterHoward Jones - The Peaceful Tour - Things Can Only Get Better

PL/SQL de File Upload / Download のつづきです。


前回は、MacOSXのSafariで発生する問題。日本語ファイル名のファイルをダウンロードした際、ファイル名が、 hostname.拡張子 のような形式で保存されてしまうというところまでだった
Firefoxでは全く問題が発生していないので、ブラウザ依存の問題ということなのだろうか。


ということで、今回は、MacOSX以外のプラットフォームで試した結果+αも。



OTN-J の Code Tipsでも公開されました。(2007/6/16更新)
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2235
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2236


ファイル名が日本語であるファイルをダウンロードした場合のファイル名の文字化けについて

・Firefox 2 (Mozilla含む) : MacOSX/Linux/Windows XP すべてのプラットフォームで
 文字化け等の問題は発生しない。

Firefox2macosxok Firefox2windowsok Mozillalinuxok


・IE6 : 文字化け。

Ieng_1


・Safari : 前述の通り。 hostname.拡張子 という形式で保存されてしまう。

・Opera 9.2 (MacOSX版): URLエンコードされた文字列.拡張子 という形式で保存されてしまう


Operamacosxng



文字エンコードが統べてUTF-8だったらどうなんだろう。。。解決できたりして。。。という思いつきは置いといて、今日は、Shift_JISのままでIE6での文字化けを(無理矢理?)解決する方法があったので載せておくことにする。

参考:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1011220


※2007/6/8一部修正
以下のようにContent-Disposition: attachment; filename=UTF-8でURLエンコードしたファイル名を指定する方式であれば、IE6でも正しいファイル名で保存できるようになる。
MacOSXのSafariでは依然として改善されず、下記方法では文字化けしてしまう。 

以下の方法もマニュアルに記載されている方法だが、あくまで英語圏で作成されたマニュアルの翻訳なので、ファイル名が日本語である場合の文字化け回避方法までは記載されていない。
文字化けの回避はブラウザにも依存する部分なのでなかなか面倒ですね。文字コードやエンコーディングがいろいろとありすぎてうれしくないな〜。

create or replace PROCEDURE fileDownloader
IS
vFilePath VARCHAR2(256);
vUserAgent VARCHAR2(512);
vContentType discusdoctable.BLOB_CONTENT%TYPE;
vMimeType discusdoctable.MIME_TYPE%TYPE;
vDocSize discusdoctable.DOC_SIZE%TYPE;
vFileName discusdoctable.NAME%TYPE;

BEGIN
vFilePath := SUBSTR(owa_util.get_cgi_env('PATH_INFO'), 2);
vUserAgent := owa_util.get_cgi_env('HTTP_USER_AGENT');
IF INSTR(vUserAgent,'MSIE') != 0 THEN
-- IE (かなり無理矢理な対応)
-- IE6 - Version 6.0.290000.2180.xpsp_sp2_dgr.070227-2254 で動作確認!
-- 他のバージョンのIEではどうなるか未確認。。。
SELECT
SUBSTR(name, INSTR(name, '/')+1),
blob_content,
mime_type,
doc_size
INTO
vFileName,
vContentType,
vMimeType,
vDocSize
FROM
discusDocTable
WHERE
name = vFilePath;
OWA_UTIL.mime_header(vMimeType, FALSE);
HTP.p('Content-Length: ' || TO_CHAR(vDocSize));
HTP.p(
'Content-Disposition: attachment; filename=' || utl_url.escape(vFileName,false, 'AL32UTF8')
);
OWA_UTIL.http_header_close;
wpg_docload.download_file(vContentType);
ELSE
-- その他のブラウザ(MacOSX Safariでは日本語ファイル名のダウンロードは文字化けする)
wpg_docload.download_file(vFilePath);
END IF;
EXCEPTION
WHEN OTHERS THEN
htp.htmlopen;
htp.headopen;
htp.meta('Ccntent-Type',null,'text/html; charset=Shift_JIS');
htp.headclose;
htp.bodyopen;
htp.print('ダウンロードファイル:' || vFilePath);
htp.print('<strong style="color:#ff0000">' || sqlerrm() || '</strong>');
htp.bodyclose;
htp.htmlclose;
END fileDownloader;
/

IE6で日本語ファイル名のファイルをダウンロードしたスクリーンショット。
Ieok

| | | コメント (0) | トラックバック (0)

2007年6月 4日 (月)

PL/SQL de File Upload / Download #3



Foundation - The Best of House, Vol 2 - Somebody's Watching Me Foundation - The Best of House, Vol 2 - Somebody's Watching Me



PL/SQL de File Upload / Download のつづきです。

前回は、プロシージャの実装まで行ったので実際にアップロードとダウンロードを行った結果を載せておく。


以下、MacOSXのSafariとFirefox2でファイルアップロードを行ったスクリーンショット

Modplsql3_1
Modplsql3_2
Modplsql3_3





OTN-J の Code Tipsでも公開されました。(2007/6/16更新)
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2235
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2236


5.ファイルアップロード後のドキュメント表の内容の例

(1)〜(4)のようなプロシージャを実装するだけで簡単にファイルアップロード/ダウンロードを行うWebアプリケーションを作成できる。
ただし、多少の癖はあるようですが。。。

尚、OPERATION#が等しいファイルは同一操作でアップロードされたことを意味する。今回、拡張した部分です!。想定通りうまくいきました。 (^^。

SCOTT> col name for a46
SCOTT> col content_type for a10
SCOTT> set linesize 132
SCOTT> set pagesize 1000
SCOTT> select name,content_type,doc_size,operation# from discusdoctable;

NAME CONTENT_TY DOC_SIZE OPERATION#
---------------------------------------------- ---------- ---------- ----------
F1416265333/DSC00002.JPG BLOB 32970 1
F462708383/CocoaAdvanced.zip BLOB 6189625 1
F701507294/Cocoaセミナー上級編.pdf BLOB 2673700 2
F622467197/MyQuickTimeMovieSoundTrack#3.m4a BLOB 663868 2
F1413335442/PLSQL_COLLECTION_sample.txt BLOB 15865 2
F612154227/ユーザの等価化.txt BLOB 1706 2
F1814846582/secondLife.jpg BLOB 231581 2
F621341128/ピクチャ 1.png BLOB 904551 3

8行が選択されました。

SCOTT>


まず、MacOSXの SafariとFirefoxで同じファイルをダウンロードしてみたのだが、ファイル名が日本語のファイルについては、Safariでダウンロードしたファイルのファイル名称は元のファイル名称とは異なりダウンロード元サーバのIPアドレスになっていた。(ホスト名を指定していればホスト名になっていただろう)。
また、Firefox(Mozillaでも)であればWindows/Linux上であっても文字化け等は発生しなかった。という結果であった。

Modplsql3_4

SafariとFirefoxで ピクチャ 1.pngというファイルを開いてたところなのだが、どちらもファイルは開けるものの、Safariではファイル名が192.168.1.19.pngとなっている。。
Modplsql3_5


Safariでも Cocoaセミナー上級編スライド.pdfをダウンロードしたのだが、ダウンロードされたファイル名は、192.168.1.19.pdfとなってしまった。FirefoxやMozillaでは問題ないんですが。。。

Modplsql3_6 Modplsql3_7

Modplsql3_8

初回にも書いたのだが、今回の環境は全てのレイヤーで文字コードはシフトJISにしてある。それがSafariの挙動に影響しているような・・・・・。
ということで、今日はここまで。 次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年6月 3日 (日)

PL/SQL de File Upload / Download #2



Ultravox - Vienna - ViennaUltravox - Vienna - Vienna


さて、環境が整ったのでプロシージャを作成する。
(今回はマニュアルに記載されているサンプルのようにそれぞれ独立したプロシージャとしたが、これらを纏めてパッケージ化しても問題ない。 私が仕事で依頼されたものならパッケージとして実装するでしょうね。)



OTN-J の Code Tipsでも公開されました。(2007/6/16更新)
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2235
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2236

4.ファイルアップロード/ダウンロードプロシージャの例

注)style属性のtext-shadowを利用していますが、MacOSXのSafari以外のブラウザではドロップシャドウ効果はありません。


URLの例)- hostnameが discus 、 portが 7780 である場合、以下のようなURLでアクセスする。
http://discus:7780/plsql_de_fileupload/fileuploadform


(1)ファイルを最大5件同時にアップロードするフォームを表示するプロシージャ。

参考:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1005985
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1011204

CREATE OR REPLACE PROCEDURE fileUpLoadForm
IS
numOfFiles CONSTANT PLS_INTEGER := 5;
BEGIN
htp.htmlopen;
htp.headopen;
htp.meta('CONTENT-TYpe',null,'text/html; charset=Shift_JIS');
htp.title('PL/SQL de File Upload');
htp.headclose;

htp.bodyopen;
htp.centeropen;
htp.print('<div align="center" style="width:500; height:600">');
htp.STRONG(
cattributes=> 'style="font-size:24px; color:#ff0000; '
|| 'text-shadow:1px 2px 3px #7f7f7f"',
ctext=> 'PL/SQL de ファイルアップロード'
);
htp.prn('<br><br>');
htp.formopen(
cenctype=>'multipart/form-data',
curl=>'action',cmethod=>'POST'
);

FOR i IN 1..numOfFiles LOOP
htp.prn(
'<p><span style="text-shadow:1px 2px 3px #7f7f7f">ファイルの選択:</span>'
);
htp.formfile(cname=>'file');
htp.br;
END LOOP;
htp.prn('<br><br><p>');
htp.formsubmit(cattributes=>'align=right',cvalue=>'アップロード');

htp.formclose;
htp.print('</div>');
htp.centerclose;
htp.bodyclose;
htp.htmlclose;
END;
/


(2)<FORM>要素のaction属性に指定するプロシージャの例

下記サンプルコードでは、マニュアルに記載されているサンプルの他に、同一操作でアップロードされたファイルに対してシーケンスから採番した操作番号を設定する処理を追加している。

CREATE OR REPLACE PROCEDURE action
(
file IN owa_util.vc_arr
) IS
vOpe# number(10);
BEGIN
htp.htmlopen;
htp.meta('CONTENT-TYPE',null,'text/html; charset=Shift_JIS');
htp.headopen;
htp.title('PL/SQL de File Upload (Action)');
htp.headclose;
htp.bodyopen;
htp.header(1,'アップロード・ステータス');
htp.print('以下のアップロードが終了しました。<br><br>');
htp.prn('<span style="color:#ff0000; text-shadow:1px 2px 3px #7f7f7f">');
FOR i IN file.FIRST..file.LAST LOOP
IF FILE(i) IS NOT NULL THEN
htp.print('-&gt; ' || file(i) || '<br>');
END IF;
END LOOP;
htp.print('</span>');

-- 同一操作でアップロードしたファイルへ、同一操作番号を設定する。
SELECT upload_operation#.nextval INTO vOpe# FROM dual;
FOR i IN file.FIRST..file.LAST LOOP
UPDATE DISCUSDOCTABLE SET operation# = vOpe# WHERE name=file(i);
END LOOP;

htp.bodyclose;
htp.htmlclose;
END;
/


(3)ダウンロード可能なファイルリストを表示するプロシージャの例。

URLの例) - hostname = discus, port = 7780である場合。
http://discus:7780/plsql_de_fileupload/filelist

マニュアルに記載されているファイルダウンロードのサンプルは、同マニュアルに記載されている他のサンプルコードに比べ、少々不親切(端折り過ぎ)なサンプルコードになっている。(CGIなどのWebアプリケーションに慣れている方なら想像できなくもないのだが・・・・。)
下記サンプルコードを見れば容易に理解できると思うのだが、アップロードしたファイルをダウンロードするには、dads.confのPlsqlDocumentPathパラメータで指定したドキュメントルートのパスと、ドキュメント表のname列の値を連結したパスでダウンロードするファイル指すURLを生成できる。

CREATE OR REPLACE PROCEDURE fileList
IS
BEGIN
htp.htmlopen;
htp.headopen;
htp.meta('CONTENT-Type',null,'text/html; charset=Shift_JIS');
htp.title('PL/SQL de File upload - ダウンロード可能なファイル一覧');
htp.headclose;
htp.bodyopen;
htp.print(
'<span style="text-shadow:1px 2px 3px #7f7f7f; font-size: 22px">'
|| 'ダウンロードファイル一覧</span><br><br>'
);
FOR doc IN (SELECT name FROM discusDocTable) LOOP
htp.anchor('docs/' || utl_url.escape(doc.name, false, 'Shift_JIS'), 'docs/' || doc.name);
htp.br;
END LOOP;
htp.bodyclose;
htp.htmlclose;
END;
/

(4)ファイルのダウンロード時にmod_plsqlから呼び出されるプロシージャの例。

このプロシージャは、(3)の方法でダウンロードする場合には必須であり、dads.confのPlsqlDocumentProcedureパラメータで指定する。
このプロシージャのサンプルコードはマニュアルにも記載されているのだが少々難解ですね。
実際には、以下のように wpg_docload.download_file()プロシージャを実行するだけの処理なのだがマニュアルのサンプルコードを見ると少々混乱してしまう! 私も少々考えましたもん!!!

以下コードを見てもらうと実は非常にシンプルな操作であることに気付くと思う。 解説するまでも無いと思うが念のために解説しておくと、wpg_docload.download_file(環境変数PATH_INFOの値)を実行しているだけなのである。

CREATE OR REPLACE PROCEDURE fileDownloader
IS
vFilePath VARCHAR2(256);
BEGIN
vFilePath := SUBSTR(owa_util.get_cgi_env('PATH_INFO'), 2);
wpg_docload.download_file(vFilePath);
EXCEPTION
WHEN OTHERS THEN
htp.htmlopen;
htp.headopen;
htp.meta('Ccntent-Type',null,'text/html; charset=Shift_JIS');
htp.headclose;
htp.bodyopen;
htp.print('ダウンロードファイル:' || vFilePath);
htp.print('<strong style="color:#ff0000">' || sqlerrm() || '</strong>');
htp.bodyclose;
htp.htmlclose;
END fileDownloader;
/


以上でプロシージャの作成は終わり。 簡単ですよね!。 

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年6月 1日 (金)

PL/SQL de File Upload / Download #1

先日、OTN-Jでmod_plsqlが提供するファイルアップロード/ダウンロードフレームワークに関連するスレッドがあり、その中でのやり取りと、作成したサンプルコードに多少手を加えて公開しておく。
ファイルダウンロード及び、ドキュメント表の拡張方法など明確な解説が無いこともあり、一部マニュアルの行間を読みつつ試した結果を含む。
(OTN-JのCodeTipsへも投稿する予定)
http://otn.oracle.co.jp/forum/message.jspa?messageID=35011699&tstart=0


mod_plsqlのファイルアップロード/ダウンロードに関する詳細は、下記ドキュメント参照のこと。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1009257
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1005866


※ファイルアップロード/ダウンロードサンプルの概要

・複数のファイル(この例では最大5件)を1操作でアップロードする。
・同一操作でアップロードされた複数のファイルは、同一の操作番号(OPERATION#)を
 設定する。

※環境

HTTP Servetとデータベースは同ーサーバ上に構築。(尚、$ORACLE_HOMEは別にしてインストールする必要がある。)
尚、今回はWindows XP Professional上に構築し、Oracle SQL Developer for MacOSXを利用してプロシージャを作成した。

・サーバ

・Oracle10g HTTP Server (Apache Standalone 10.1.2.0.0)
  - Oracle Database 10g Compaion CD Release 1 (10.1.0.3.0)
・Oracle10g Database R1 EE
  - Oracle Database 10g Release 1 (10.1.0.3.0)
  - データベースキャラクタセット: JA16SJISTILDE
・OWA - 10.1.2.0.6

・クライアント(ブラウザ)

・Safari 2 - MacOSX 10.4.9
・Opera 9.2 - MacOSX 10.4.9
・FireFox 2 - MacOSX 10.4.9
・Firefox 2 - Linux (TurboLinux 8 - powered by United Linux1.0)
・FireFox 2 - Linux (CentOS 4.4)
・IE6 - Windows XP Professional
・FireFox 2 - Windows XP Professional



OTN-J の Code Tipsでも公開されました。(2007/6/16更新)
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2235
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2236


1.ドキュメント表の定義

ドキュメント表で定義する必要のある列に加て、OPERATION#という列を追加した。
尚、アップロードするコンテンツはすべて BLOB列へ格納する。
(同一操作でアップロードされたファイルに同一操作番号を設定する為に利用する。)
SCOTT> desc discusdoctable
名前 NULL? 型
----------------------------------------- -------- ----------------------------
NAME NOT NULL VARCHAR2(128)
MIME_TYPE VARCHAR2(128)
DOC_SIZE NUMBER
DAD_CHARSET VARCHAR2(128)
LAST_UPDATED DATE
CONTENT_TYPE VARCHAR2(128)
BLOB_CONTENT BLOB
OPERATION# NUMBER(10)

SCOTT>

2.操作番号を取得するシーケンスの定義

CREATE SEQUENCE UPLOAD_OPERATION#  
MINVALUE 1 MAXVALUE 9999999999
INCREMENT BY 1 START WITH 1
NOCACHE NOORDER NOCYCLE;

3.dads.confの定義

dads.confに関連するマニュアルは以下の通り。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1012038
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1011190
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19260-01/concept.htm#i1010512

# ============================================================================ 
# mod_plsql DAD Configuration File
# ============================================================================
# 1. Please refer to dads.README for a description of this file
# ============================================================================

# Note: This file should typically be included in your plsql.conf file with
# the "include" directive.

# Hint: You can look at some sample DADs in the dads.README file

# ============================================================================
<Location /plsql_de_fileupload>
SetHandler pls_handler
Order deny,allow
Allow from all
AllowOverride None
PlsqlDatabaseUsername scott
PlsqlDatabasePassword tiger
PlsqlDatabaseConnectString 192.168.1.19:1521:amazon
PlsqlAuthenticationMode Basic
PlsqlDefaultPage scott.fileUploadForm
PlsqlDocumentTablename scott.discusDocTable
PlsqlDocumentPath docs
PlsqlDocumentProcedure scott.fileDownloader
PlsqlNLSLanguage JAPANESE_JAPAN.JA16SJISTILDE
</Location>


環境、構成ファイル、ドキュメント表及び、その拡張部分の定義はこれで終了。次回へつづく。
Making1

| | | コメント (0) | トラックバック (0)

2007年5月31日 (木)

90000アクセス突破

4月7日に80000アクセスを突破したと思っていたら、Dashboard de Aquarium v1.0がApple社のサイトに掲載されたこともあり、3週間弱で90000アクセスを突破。

いつも見に来てくださっている方。 Widgetをダウンロードくださった方、ありがとうございます。

| | | コメント (0) | トラックバック (0)

Apple Store Ginza で Google プロダクトセミナー #2

Apple Store Ginza - Googleプロダクトセミナー 第二回が開催された。

第一回目につづき、今回も参加。(Linux World Expo 2007 tokyoの帰り道だった事もあるが。。。)

そして、今回も Apple Store Ginza 3Fは満員で立ち見の方も多かった。前回と同じくらいの人数で、やはり息苦しいくらい。

今回のノベルティは以下。

Googleステッカー
Googleロゴ入りノート
Googleロゴ入りボールペン(運良く前回とは色違い!)

会場でAdsenseへの申し込みもできるようになっていて、その場で申し込んだ方にはさらに別のノベルティが用意されていた。。。既存ユーザである私にはよだれがでるノベルティじゃ。。

今回は、Google Analyticsの紹介と AdsenseをBlogに適用するデモ等。

Cimg4283

私の場合、すでに Adsenseは利用しているので、 Analyticsの話がメイン。ということで早速試してます!。

Googleanalytics

ログインするとPortal製品ではおなじみのPortletのようなレポートが事前に配置されている。
これらのレポートはDrag and Dropでレイアウトできる。
この操作で思い出したのが2001年ころにリリースされた Compute AssociatesのJasmine ii Portal(後にCleverPath Portalと改名。そういえばComputer Associatesに買収される前は、Eureka Portalって名前でSterling Softwareの製品だったっけ)だったかな。 そういえば、DBマガジンにも記事がありました。なつかしい。 その当時(2001年ごろ)は驚きました、というより感動ものでしたよ。 javascriptでそんなことやるなんてね。。今では驚きませんが。。

| | | コメント (0) | トラックバック (0)

2007年5月29日 (火)

Dashboard De Aquarium (v1.0) 号外!

Viaappledownloadsite

ということで、  Dashboard De Aquarium 1.0 が Apple社の Dashboard ダウンロードページに掲載されました。  (^▽^)

| | | コメント (0) | トラックバック (0)

Mac De Oracle : PL/SQL de Collection #4

さて、PL/SQLのコレクションでのお遊び。その4回目。

今回は、既に要素を持っているコレクションを空にしてみましょう。

第二回目にも似たようなことをやっているので、VarrayとNested Tableについては想像できると思いますが、Associative Arrayにいてはどうすればよいでしょう?

ということで、答えは以下のコードを読めば分かりますよ!

create or replace
PROCEDURE COLLECTIONS AS
TYPE VarrayType IS VARRAY(100) OF empType;
TYPE NestedTableType IS TABLE OF empType;
TYPE StrAssociativeArrayType IS TABLE OF empType INDEX BY VARCHAR2(50);
TYPE NumAssociativeArrayType IS TABLE OF empType INDEX BY BINARY_INTEGER;

myVarray VarrayType := VarrayType();
myNestedTable NestedTableType := NestedTableType();
myStrAssociativeArray StrAssociativeArrayType;
myNumAssociativeArray NumAssociativeArrayType;

claerMyStrAssociateArray StrAssociativeArrayType;
clearMyNumAssociateArray NumAssociativeArrayType;

myEmp empType;

CURSOR csrEmp IS
SELECT
job,
empno,
ename,
hiredate,
sal,
deptno
FROM
emp
ORDER BY
empno;

PROCEDURE printCount
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(
'Varray : '
|| myVarray.COUNT
|| ' 件の要素が存在します。'
);
DBMS_OUTPUT.PUT_LINE(
'Nested Table : '
|| myNestedTable.COUNT
|| ' 件の要素が存在します。'
);
DBMS_OUTPUT.PUT_LINE(
'Associative Array(String) :'
|| myStrAssociativeArray.COUNT
|| ' 件の要素が存在します。'
);
DBMS_OUTPUT.PUT_LINE(
'Associative Array(Number) :'
|| myNumAssociativeArray.COUNT
|| ' 件の要素が存在します。'
);
END;

BEGIN
FOR emp_rec IN csrEmp LOOP
myEmp := empType (
emp_rec.empno,
emp_rec.ename,
emp_rec.job,
emp_rec.hiredate,
emp_rec.sal,
emp_rec.deptno
);
myVarray.EXTEND(1);
myVarray(myVarray.COUNT) := myEmp;
myNestedTable.EXTEND(1);
myNestedTable(myNestedTable.COUNT) := myEmp;
myStrAssociativeArray(TO_CHAR(myEmp.empno) || ':' || myEmp.ename) := myEmp;
myNumAssociativeArray(myEmp.empno) := myEmp;
END LOOP;


DBMS_OUTPUT.PUT_LINE('**** コレクションに要素が存在している状態 ****');
printCount;


myVarray := VarrayType();
myNestedTable := NestedTableType();
myStrAssociativeArray := claerMyStrAssociateArray;
myNumAssociativeArray := clearMyNumAssociateArray;

DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('**** コレクションが空の状態 ****');
printCount;


END;
/


上記のコードの通り、Assciative Array(結合配列)を空にする方法は、同じ型の”空”結合配列をセットしてやればいいわけです。
今回の例では1次元の結合配列ですが、N次元の結合配列でも考え方は同じです。(VarrayやNested Tableとは異なります。)
ちなみに、第二回目にも書きましたが、VarrayやNexted Tableは、NULLにすることができます。その場合、VarrayやNexted Tableは、atomic nullであるためコンストラクタによる初期化が行われるまで一切の操作は行えないということもお忘れなく。

最後に、上記プロシージャの実行結果。

SCOTT> set serveroutput on size 10000 format wrapped
SCOTT> exec collections;
**** コレクションに要素が存在している状態 ****
Varray : 29 件の要素が存在します。
Nested Table : 29 件の要素が存在します。
Associative Array(String) :29 件の要素が存在します。
Associative Array(Number) :29 件の要素が存在します。

**** コレクションが空の状態 ****
Varray : 0 件の要素が存在します。
Nested Table : 0 件の要素が存在します。
Associative Array(String) :0 件の要素が存在します。
Associative Array(Number) :0 件の要素が存在します。

PL/SQLプロシージャが正常に完了しました。

SCOTT>

Collection4

今日はこのへんで。

| | | コメント (0) | トラックバック (0)

2007年5月27日 (日)

Mac De Oracle : PL/SQL de Collection #3

前回の続き

各コレクションの初期化の方法は見えたと思うので、今回は実際に要素をセットしたり取り出したりして遊んでみる。
最初にも書いたが今回セットするのはオブジェクト型。emp表をempno順に問い合せ、empType型として各コレクションの要素としてある。)

マニュアルなどを見ながらいろいろ試してみたほうが面白いと思うので特に解説はしません。。Enjoy!!

CREATE OR REPLACE
PROCEDURE COLLECTIONS AS
TYPE VarrayType IS VARRAY(100) OF empType;
TYPE NestedTableType IS TABLE OF empType;
TYPE StrAssociativeArrayType IS TABLE OF empType INDEX BY VARCHAR2(50);
TYPE NumAssociativeArrayType IS TABLE OF empType INDEX BY BINARY_INTEGER;

myVarray VarrayType := VarrayType();
myNestedTable NestedTableType := NestedTableType();
myStrAssociativeArray StrAssociativeArrayType;
myNumAssociativeArray NumAssociativeArrayType;

myEmp empType;
strIdx VARCHAR2(50);
numIdx PLS_INTEGER;

CURSOR csrEmp IS
SELECT
job,
empno,
ename,
hiredate,
sal,
deptno
FROM
emp
ORDER BY
empno;


BEGIN
FOR emp_rec IN csrEmp LOOP
myEmp := empType (
emp_rec.empno,
emp_rec.ename,
emp_rec.job,
emp_rec.hiredate,
emp_rec.sal,
emp_rec.deptno
);
myVarray.EXTEND(1);
myVarray(myVarray.COUNT) := myEmp;
myNestedTable.EXTEND(1);
myNestedTable(myNestedTable.COUNT) := myEmp;
myStrAssociativeArray(TO_CHAR(myEmp.empno) || ':' || myEmp.ename) := myEmp;
myNumAssociativeArray(myEmp.empno) := myEmp;
END LOOP;

DBMS_OUTPUT.PUT_LINE('**** VARRAY ****');
FOR j IN myVarray.FIRST..myVarray.LAST LOOP
DBMS_OUTPUT.PUT_LINE(
'myVarray(' || TO_CHAR(j) || ')=' || myVarray(j).TO_STRING()
);
END LOOP;

DBMS_OUTPUT.NEW_LINE();
DBMS_OUTPUT.PUT_LINE('**** NESTED TABLE ****');
FOR j IN myNestedTable.FIRST..myNestedTable.LAST LOOP
DBMS_OUTPUT.PUT_LINE(
'myNestedTable(' || TO_CHAR(j) || ')=' || myNestedTable(j).TO_STRING()
);
END LOOP;

DBMS_OUTPUT.NEW_LINE();
DBMS_OUTPUT.PUT_LINE('**** Associative Array (String) ****');
strIdx := myStrAssociativeArray.FIRST();
WHILE strIdx IS NOT NULL LOOP
DBMS_OUTPUT.PUT_LINE(
'myStrAssociativeArray(' || strIdx || ')=' || myStrAssociativeArray(strIdx).TO_STRING()
);
strIdx := myStrAssociativeArray.NEXT(strIdx);
END LOOP;

DBMS_OUTPUT.NEW_LINE();
DBMS_OUTPUT.PUT_LINE('**** Associative Array (Number) ****');
numIdx := myNumAssociativeArray.FIRST();
WHILE numIdx IS NOT NULL LOOP
DBMS_OUTPUT.PUT_LINE(
'myNumAssociativeArray(' || TO_CHAR(numIdx) || ')=' || myNumAssociativeArray(numIdx).TO_STRING()
);
numIdx := myNumAssociativeArray.NEXT(numIdx);
END LOOP;
END;
/

以下、SQL*Plusでの実行結果。
尚、SQL*Plusのset serveroutputコマンドのオプション format wrappedは覚えておくといいですよ。
このオプションの意味も特に解説はしません。 format wrappedがある場合と無い場合の違いはご自分で確認してみてください


SCOTT> set serveroutput on size 10000 format wrapped
SCOTT> exec collections;

**** VARRAY ****
myVarray(1)=7369,SMITH,CLERK,1980/12/17, 800.00,20
myVarray(2)=7499,ALLEN,SALESMAN,1981/02/20, 1600.00,30
myVarray(3)=7521,WARD,SALESMAN,1981/02/22, 1250.00,30
myVarray(4)=7566,JONES,MANAGER,1981/04/02, 2975.00,20
myVarray(5)=7654,MARTIN,SALESMAN,1981/09/28, 1250.00,30
myVarray(6)=7698,BLAKE,MANAGER,1981/05/01, 2850.00,30
myVarray(7)=7782,CLARK,MANAGER,1981/06/09, 2450.00,10
myVarray(8)=7788,SCOTT,ANALYST,1987/04/19, 3000.00,20
myVarray(9)=7839,KING,PRESIDENT,1981/11/17, 5000.00,10
myVarray(10)=7844,TURNER,SALESMAN,1981/09/08, 1500.00,30
myVarray(11)=7876,ADAMS,CLERK,1987/05/23, 1100.00,20
myVarray(12)=7900,JAMES,CLERK,1981/12/03, 950.00,30

**** NESTED TABLE ****
myNestedTable(1)=7369,SMITH,CLERK,1980/12/17, 800.00,20
myNestedTable(2)=7499,ALLEN,SALESMAN,1981/02/20, 1600.00,30
myNestedTable(3)=7521,WARD,SALESMAN,1981/02/22, 1250.00,30
myNestedTable(4)=7566,JONES,MANAGER,1981/04/02, 2975.00,20
myNestedTable(5)=7654,MARTIN,SALESMAN,1981/09/28, 1250.00,30
myNestedTable(6)=7698,BLAKE,MANAGER,1981/05/01, 2850.00,30
myNestedTable(7)=7782,CLARK,MANAGER,1981/06/09, 2450.00,10
myNestedTable(8)=7788,SCOTT,ANALYST,1987/04/19, 3000.00,20
myNestedTable(9)=7839,KING,PRESIDENT,1981/11/17, 5000.00,10
myNestedTable(10)=7844,TURNER,SALESMAN,1981/09/08, 1500.00,30
myNestedTable(11)=7876,ADAMS,CLERK,1987/05/23, 1100.00,20
myNestedTable(12)=7900,JAMES,CLERK,1981/12/03, 950.00,30

**** Associative Array (String) ****
myStrAssociativeArray(7369:SMITH)=7369,SMITH,CLERK,1980/12/17, 800.00,20
myStrAssociativeArray(7499:ALLEN)=7499,ALLEN,SALESMAN,1981/02/20, 1600.00,30
myStrAssociativeArray(7521:WARD)=7521,WARD,SALESMAN,1981/02/22, 1250.00,30
myStrAssociativeArray(7566:JONES)=7566,JONES,MANAGER,1981/04/02, 2975.00,20
myStrAssociativeArray(7654:MARTIN)=7654,MARTIN,SALESMAN,1981/09/28, 1250.00,30
myStrAssociativeArray(7698:BLAKE)=7698,BLAKE,MANAGER,1981/05/01, 2850.00,30
myStrAssociativeArray(7782:CLARK)=7782,CLARK,MANAGER,1981/06/09, 2450.00,10
myStrAssociativeArray(7788:SCOTT)=7788,SCOTT,ANALYST,1987/04/19, 3000.00,20
myStrAssociativeArray(7839:KING)=7839,KING,PRESIDENT,1981/11/17, 5000.00,10
myStrAssociativeArray(7844:TURNER)=7844,TURNER,SALESMAN,1981/09/08, 1500.00,30
myStrAssociativeArray(7876:ADAMS)=7876,ADAMS,CLERK,1987/05/23, 1100.00,20
myStrAssociativeArray(7900:JAMES)=7900,JAMES,CLERK,1981/12/03, 950.00,30

**** Associative Array (Number) ****
myNumAssociativeArray(7369)=7369,SMITH,CLERK,1980/12/17, 800.00,20
myNumAssociativeArray(7499)=7499,ALLEN,SALESMAN,1981/02/20, 1600.00,30
myNumAssociativeArray(7521)=7521,WARD,SALESMAN,1981/02/22, 1250.00,30
myNumAssociativeArray(7566)=7566,JONES,MANAGER,1981/04/02, 2975.00,20
myNumAssociativeArray(7654)=7654,MARTIN,SALESMAN,1981/09/28, 1250.00,30
myNumAssociativeArray(7698)=7698,BLAKE,MANAGER,1981/05/01, 2850.00,30
myNumAssociativeArray(7782)=7782,CLARK,MANAGER,1981/06/09, 2450.00,10
myNumAssociativeArray(7788)=7788,SCOTT,ANALYST,1987/04/19, 3000.00,20
myNumAssociativeArray(7839)=7839,KING,PRESIDENT,1981/11/17, 5000.00,10
myNumAssociativeArray(7844)=7844,TURNER,SALESMAN,1981/09/08, 1500.00,30
myNumAssociativeArray(7876)=7876,ADAMS,CLERK,1987/05/23, 1100.00,20
myNumAssociativeArray(7900)=7900,JAMES,CLERK,1981/12/03, 950.00,30

PL/SQLプロシージャが正常に完了しました。

SCOTT>

以下のスクリーンショットは、Oracle SQL Developerで上記プロシージャを作成、テストしているところ。
Collection3_sdev

今日はここまで。

| | | コメント (0) | トラックバック (0)

2007年5月25日 (金)

Mac De Oracle : PL/SQL de Collection #2

PL/SQL de Collectionのつづきです。

VarrayとNested Tableを利用するには、まず最初に初期化する必要がある。(Associated Arrayでは、その必要はない。)
オブジェクト指向的だとインスタンスの作成と言ったほうが分かりやすいですかね。

以下、VarrayType型とNestedTableType型では、インスタンスを作成しないと、Javaで言うところのNull Pointer Exceptionが発生する。という例。
PL/SQLなのでNull Pointer Exceptionではなく、ORA-6531が発生するのですがね。
(私個人としては、ORA-6531より、ORA-2309: atomic NULL violation の方がストレートで分かりやすいんでない? なんて思う事しばしば。初めてNested Tableを使おうとして、そのメッセージの意味が分からずハマったことも。。。)

SCOTT> l
1 DECLARE
2 -- VARRAY
3 TYPE VarrayType IS VARRAY(100) OF empType;
4 -- NESTED TABLE
5 TYPE NestedTableType IS TABLE OF empType;
6 -- ASSOCIATIVE ARRAY (formaly called PL/SQL TABLE)
7 TYPE StrAssociativeArrayType IS TABLE OF empType INDEX BY VARCHAR2(50);
8 TYPE NumAssociativeArrayType IS TABLE OF empType INDEX BY BINARY_INTEGER;
9
10 myVarray VarrayType;
11 myNestedTable NestedTableType;
12 myStrAssociativeArray StrAssociativeArrayType;
13 myNumAssociativeArray NumAssociativeArrayType;
14 BEGIN
15 DBMS_OUTPUT.PUT_LINE('Associative Array:' || myStrAssociativeArray.COUNT());
16
17 BEGIN
18 DBMS_OUTPUT.PUT_LINE('Varray:' || myVarray.COUNT());
19 EXCEPTION
20 WHEN OTHERS THEN
21 DBMS_OUTPUT.PUT_LINE('Varray: ' || SQLERRM());
22 END;
23
24 BEGIN
25 DBMS_OUTPUT.PUT_LINE('Nested Table:' || myNestedTable.COUNT());
26 EXCEPTION
27 WHEN OTHERS THEN
28 DBMS_OUTPUT.PUT_LINE('Nested Table:' || SQLERRM());
29 END;
30* END;
SCOTT> /
Associative Array:0
Varray: ORA-06531: 参照しているコレクションは初期化されていません。
Nested Table:ORA-06531: 参照しているコレクションは初期化されていません。

PL/SQLプロシージャが正常に完了しました。

SCOTT>


ちなみに、Associative Arrayは、atomic nullには出来ない。やってみれば分かると思いますが、コンパイルエラーになります。
なのでこの点については、コンパイラから注意されるので特に問題はないでしょうね。

SCOTT> l
1 DECLARE
2 -- VARRAY
3 TYPE VarrayType IS VARRAY(100) OF empType;
4 -- NESTED TABLE
5 TYPE NestedTableType IS TABLE OF empType;
6 -- ASSOCIATIVE ARRAY (formaly called PL/SQL TABLE)
7 TYPE StrAssociativeArrayType IS TABLE OF empType INDEX BY VARCHAR2(50);
8 TYPE NumAssociativeArrayType IS TABLE OF empType INDEX BY BINARY_INTEGER;
9
10 myVarray VarrayType;
11 myNestedTable NestedTableType;
12 myStrAssociativeArray StrAssociativeArrayType;
13 myNumAssociativeArray NumAssociativeArrayType;
14 BEGIN
15 myStrAssociativeArray := NULL;
16 DBMS_OUTPUT.PUT_LINE('Associative Array:' || myStrAssociativeArray.COUNT());
17
18 myVarray := NULL;
19 BEGIN
20 DBMS_OUTPUT.PUT_LINE('Varray:' || myVarray.COUNT());
21 EXCEPTION
22 WHEN OTHERS THEN
23 DBMS_OUTPUT.PUT_LINE('Varray: ' || SQLERRM());
24 END;
25
26 myNestedTable := NULL;
27 BEGIN
28 DBMS_OUTPUT.PUT_LINE('Nested Table:' || myNestedTable.COUNT());
29 EXCEPTION
30 WHEN OTHERS THEN
31 DBMS_OUTPUT.PUT_LINE('Nested Table:' || SQLERRM());
32 END;
33* END;
SCOTT> /
myStrAssociativeArray := NULL;
*
行14でエラーが発生しました。:
ORA-06550: 行15、列28:
PLS-00382: 式の型が正しくありません。
ORA-06550: 行15、列3:
PL/SQL: Statement ignored


SCOTT>


VarrayやNested Tableを利用する際には、事前にコンストラクタを実行して初期化しておく必要がありますが、実行時エラーの危険を避けるため、定義時に初期化しておく方が無難でしょう。
以下の例では、各変数の宣言時にコンストラクタであるVarrayType()や、NestedTableType()を実行し初期化しています。

SCOTT> l
1 DECLARE
2 -- VARRAY
3 TYPE VarrayType IS VARRAY(100) OF empType;
4 -- NESTED TABLE
5 TYPE NestedTableType IS TABLE OF empType;
6 -- ASSOCIATIVE ARRAY (formaly called PL/SQL TABLE)
7 TYPE StrAssociativeArrayType IS TABLE OF empType INDEX BY VARCHAR2(50);
8 TYPE NumAssociativeArrayType IS TABLE OF empType INDEX BY BINARY_INTEGER;
9
10 myVarray VarrayType := VarrayType();
11 myNestedTable NestedTableType := NestedTableType();
12 myStrAssociativeArray StrAssociativeArrayType;
13 myNumAssociativeArray NumAssociativeArrayType;
14 BEGIN
15 DBMS_OUTPUT.PUT_LINE('Associative Array:' || myStrAssociativeArray.COUNT());
16 DBMS_OUTPUT.PUT_LINE('Varray:' || myVarray.COUNT());
17 DBMS_OUTPUT.PUT_LINE('Nested Table:' || myNestedTable.COUNT());
18* END;
SCOTT> /
Associative Array:0
Varray:0
Nested Table:0

PL/SQLプロシージャが正常に完了しました。

SCOTT>

こんどは問題なく要素数を表示できましたね。 この時点で、Associative Array、Varray、Nested Tableの各コレクションは空の状態。

尚、上記の例では、いきなりコレクションのメソッド (COUNT)を使っているが、コレクションで利用できるメソッドは以下のマニュアルで確認できる。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19257-01/langelems.html#6420

ということで、今日はここまで。

Oracleのオブジェクトに関しては、
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19256-01/adobjint.htm#sthref39を中心に読めばそれなりに理解できるかと。

| | | コメント (0) | トラックバック (0)

2007年5月22日 (火)

Mac De Oracle : PL/SQL de Collection #1

最近のOracle Master試験は、PL/SQLは試験範囲に含まれていないわけですが、Oracleの開発や運用管理でもPL/SQLを利用する場面は少なく無いと思います。
(Mac De OracleでもPL/SQL関連ネタは多いです。)

Oracleデータベースありきですけが、Webアプリケーションからバッチ処理、さらに、運用管理、移行時など、PL/SQLは利用範囲が意外と広いのです。

ところで、
ブログの検索キーワードで、ORA-20000〜ORA-20999に次いで多いのが、実は、PL/SQLネタ。
Oracle Master試験の対象外になったことが影響しているんでしょうかねぇ?
Oracle Masterだからといっても、PL/SQLを使いこなせるとは限らない? という状況になりつつあるなんて話もちらほら。 少々心配です。

ということで、PL/SQLの Collectionについて少し書いてみるか! と思った次第。


では、早速。。。

PL/SQLで扱えるコレクションは、

・Associative Array
・Nested Table
・Varray

の3種。


・Associative Array


結合配列(索引付き配列と呼ばれたり、以前はPL/SQL表とも呼ばれていました。)これだけ日本語で書いてもイメージできないですよね。おそらく。
Javaをやっている方には、HashTableみたいな〜〜。とか、Perlをやっている方には連想配列みたいな〜。とか説明すること、「あ〜〜〜! なるほど。」とイメージできるようですね。(〜みたいな〜〜、なんですけどね。)

・Nested Table

Oracleが、Object Relational Database (ORDB)へと進化した際(Oracle8だったか?!)に登場したのコレクションの一つが、このNested Table(ネスト表)。このNested Tableは、Associate Arrayとは異なり、データベースへ格納することも可能。
また、PL/SQLで利用する場合、Associative Arrayとは異なり、事前に初期化しておく必要がある。
初期化って何? ということになりますが、要するにインスタンスを作成しておいてね。ってことになりますね。(詳細は簡単な例も含めて別エントリにて。)
#マニュアルには「初期化」と書いてあるので、そのまま使っています。

・Varray

Oracleが、Object Relational Database (ORDB)へと進化した際に登場したもう一つのコレクションがこのVarray。
事前に要素数が分かっている場合に利用することが多い。データベースに格納することができるが、更新する際にはコレクション全体を更新する必要がある。
PL/SQLで利用するには、Nested Table同様、事前に初期化しておく必要がある。

メモリを食らいつくすくらい巨大なコレクションを作る方も居たりして。。。。
限度はあるよ何事も。。。。。 (^^;;;

PL/SQLのコレクションに関するマニュアルは以下
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19257-01/collections.html#740

ということで、今回は準備だけ。

Object Relationalな部分にもちょっとだけ足を踏み込む次いでに、Collectionに格納する要素もオブジェクト型にしておきましょう。

以下のようにempType型を定義し、TO_STRING() メンバーファンクション(Java等では、メソッド相当)を定義しておく。
(見ての通り、 empTypeの値をCSV形式の文字列にするファンクション。)

ちなみに、デフォルトコンストラクタをオーバーライドしたり、コンストラクタを追加することもできますよ。(簡単な例は別エントリにて)

create or replace TYPE empType AS OBJECT
(
empno NUMBER(4),
ename VARCHAR2(10, BYTE),
job VARCHAR2(9, BYTE),
hiredate DATE,
sal NUMBER(7,2),
deptno NUMBER(2),
MEMBER FUNCTION TO_STRING RETURN VARCHAR2
);
/
create or replace TYPE BODY empType AS
MEMBER FUNCTION TO_STRING
RETURN VARCHAR2 IS
BEGIN
RETURN
TO_CHAR(SELF.empno) ||','||
SELF.ename ||','||
SELF.job ||','||
TO_CHAR(SELF.hiredate, 'YYYY/MM/DD') ||','||
TO_CHAR(SELF.sal, '99999.99') ||','||
TO_CHAR(SELF.deptno);
END;
END;
/


Prepare_collection_sample
今日はここまで。

| | | コメント (0) | トラックバック (0)

2007年5月20日 (日)

Internet Radio : WOLF FM

Internet Radio WOLF FMでは、70年代から80年代の曲が聞けます。

そう、小林克也さんの伝説の番組 ベストヒット USAで当時、紹介されたりヒットしていた曲ばかり!。(ちなみに、BS朝日で復活していますが。) 

なんとなく、最近の新曲に物足りなさを感じていることもあり、どうしても、すぐに飽きてしまう。 そんな時、iTunesを起動し、WOLF FMをクリックするだけ。。。

ちなみに、iTunesにはオンエア(ストリーミング!)されている曲名は表示されませんが、上記ホームページの "Now Playing on WOLF"をクリックすると確認できます。曲名忘れたときなどには便利!


Internetradiowolffm

| | | コメント (0) | トラックバック (0)

Mac De Oracle : Oracle10g R2 for MacOSXは?

http://www.oracle.com/technology/support/metalink/index.htmlで確認できるが、こんなもんなのかなぁ。。。。JDeveloperOracle SQL Developerは他のプラットフォームと同じタイミングでリリースしてきているけど、データベースはまだなのねぇ。。。

20070520macosxcertificationmatrix

| | | コメント (0) | トラックバック (0)

2007年5月17日 (木)

Mac De Oracle : Oracleのバージョン確認(FAQ) #9

OCFS2 のバージョン確認方法は?

10万円 de RAC #22の最後にも記載してありますが、ググれば沢山ヒットすると思いますよ。   


Googleで検索する例も載せておきましょう!

how to determine ocfs2 version で検索すれば英語のページは沢山ヒットする。
ocfs2のバージョン確認 と入力して検索すれば、私のBlogも含んだ検索結果が返ってきますよ。

以下のスクリーンショットは、MacOSXのTerminalからCentOSへssh接続したもの
Mac_linux_ssh


[root@discus1 ˜]# cat /proc/fs/ocfs2/version
OCFS2 1.2.3 Thu Aug 10 18:16:03 PDT 2006 (build 6b798aaadf626d3b137c3952809b2f38)
[root@discus1 ˜]#

| | | コメント (0) | トラックバック (0)

2007年5月16日 (水)

Mac De Oracle : Oracleのバージョン確認(FAQ) #8

Oracle JDBC Driverのバージョンは確認方法は?

マニュアルにしっかり載ってます。 
今回は、先日公開された、Oracle JDeveloper11g Technology Previewで試してみた。

ちなみに、接続先は、Oracle10g R2 EE 10.2.0.2.0
Jdev11g_jdbc11

よく見えないかもしれないので、ログペインを拡大したスクリーンショットも載せておく。
Jdbcversionresult

Oracle JDeveloper11g Technology Previewでは、Oracle JDBC Driver 11.1.0.0.0-Alpha が使われているんですね!。

Determining the Version of the JDBC Driverを見れば分かるし、マニュアルからコピペすればよいので、書くまでもないのだが。。。。。。。

読んでないのか!?、見つけられないのか?  よく聞かれるのでコードも載せておく。

package jp.macdeoracle.discus;

import oracle.jdbc.pool.OracleDataSource;
import java.sql.DatabaseMetaData;
import java.sql.Connection;
import java.sql.SQLException;

public class JdbcVersion
{
public static void main(String[] args)
{
OracleDataSource ods = null;
Connection conn = null;
try {
ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:scott/tiger@192.168.1.2:1521:catfish");
conn = ods.getConnection();
DatabaseMetaData meta = conn.getMetaData();
System.out.println(meta.getDriverName() + "," + meta.getDriverVersion());
}
catch (SQLException se) {
System.out.println(se.getSQLState());
System.out.println(se.getErrorCode());
}
finally
{
try {
if (ods != null && conn != null && !conn.isClosed()) {
conn.close();
ods.close();
}
}
catch (SQLException se){
se.printStackTrace();
}
}
}
}

| | | コメント (0) | トラックバック (0)

2007年5月11日 (金)

Mac De Oracle - 10万円 de RAC 番外編 - 消えたiscsi-targeのその後。

随分前の事なので忘れかけていた方も多いかもしれないが、「Mac De Oracle - 10万円 de RAC 番外編 - 消えたiscsi-target」というエントリのその後。

Mac De Oracle - 10万円 de RAC 番外編 - 消えたiscsi-target」は、conaryの自動アップデートにより、カーネルその他のモジュールがアップデートされたのは良いのだが、iscsi-targetが消えてしまった。conaryの自動更新を止められるかも?!、という方法を探し出したので、その設定で様子を見る。 という内容であった。
というところで放置してしまうのも何なので、その後の状況を書いておこうと思う。


結果としては、”うまくいった!!!!” 

ということ。

但し、その後は、詳しく調べていないので、これが本当に正しい方法なのか?! とは言切れないので注記しておく。

ちなみに、例の対処を行った後でも不安だったこともあり、rootにログイン時、conaryのログのタイムスタンプを確認できるよう .bash_profileを変更してある。
あれから随分経過したが、タイムスタンプは "Feb 19 16:28"のままであるから例の対処後は一度も動いていないということになる。。

ただ、今でも疑問なのことは、conaryがいつどのタイミングで動いているのか。。。ということ。
もしかしたら、起動時か?!。。。。。。消去法でいくと、そのタイミングか?! と、たった今、閃いたのだが。。。どうだか。。。ねぇ。。。

Openfilerや conaryに関しては別途調べておこう。==> TODO。  (^^;;;;;;

pb17:˜ oracle$ ssh root@arowana
root@arowana's password:
Last login: Thu Apr 26 23:08:40 2007 from 192.168.1.19
Linux arowana.jp 2.6.17.11-1.1.x86.i686.cmov #1 Tue Sep 5 23:54:38 EDT 2006 i686 i686 i386 GNU/Linux
-rw-r--r-- 1 root root 73425 Feb 19 16:28 conary
[root@arowana ˜]# shutdown -h now

Broadcast message from root (pts/0) (Fri May 11 18:00:59 2007):

The system is going down for system halt NOW!
[root@arowana ˜]#

| | | コメント (0) | トラックバック (0)

Dashboard De Aquarium (v1.0)

translate from japanese to english : Powered by Google translate

ここのところOracleネタが少ないですが、今日も Dashcodeネタということで。。。

Dashboard De Aquarium v1.0をリリースしました。

System Requirements : MacOSX Tiger 10.4 or later -- Freeware.
今のところ、魚種や個体数などの変更はできません。

水槽を泳ぐdiscusは、サイドバーに配置してある画像から切り抜いたdiscusです。このdiscusは、14年ほど前に約1万円で購入した個体でした。初めてdiscusを飼う上、高価な買い物には勇気がいりました。 もし、ネオンテトラだったとしたら、何匹買えたことでしょう!・・・

Dashboard_de_aquarium_front2 Dashboard_de_aquarium_back2

Dashboard_de_aquarium_icon

Dashboard_de_aquarium_front Dashboard_de_aquarium_back


2007/11/1 - updated
Leopard上で発生する問題を解決した v1.1をリリースしましたので
 ==>こちらのページからダウンロードしてください。


"Mac OS X 10.4 Tigerが必要です。ダウンロードにSafariを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。Safari以外のブラウザを使用する場合は、はじめにダウンロードのリンクをクリックしてください。次にダウンロードの完了後、解凍したウィジェットを /ライブラリ/Widgets/ フォルダに配置してください。ウィジェットを表示し、プラスボタンをクリックしてウィジェットバーを表示させ、ダウンロードしたウィジェットを追加してください。"


Note: 国際化対応しています。言語環境が英語であれば以下のように表示されます。
Dashboard_de_aquarium_en_f Dashboard_de_aquariuim_en_b




実は、2000年頃、このWidgetの元となるWebページを公開していたのですが、Netscape 4.xのみ(layerを使っていたことも理由ですが。)に対応していました。
国外の方も含めて、「IEには対応しないのか?」 とメールを頂いたこともありましたがやる気が起きず、Mozillaや Safariの登場とともにお蔵入させていましたが、今回、Widget版として復活させました。


以下のスクリーンショットは、Classic環境のNetscape 4.0で、当時(2000年頃)のjavascriptを実行したものです。

Old_netscape4x_version

| | | コメント (2) | トラックバック (0)

2007年5月10日 (木)

Apple Store Ginza で Googleプロダクトセミナー

前回、https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2007/05/apple_store_eve.htmlということを書いたが、昨日早速、Googleプロダクトセミナーが開催されたので行ってみた。

開始少々前に到着したのだが、Apple Store Ginza 3Fの会場は、満席で通路も埋まっていた。
 (予想以上の入り!!!)
人の熱気でムンムン。少々、息苦しい感じも。。。

内容は、
Google Earth for MacOSXとGoogle Map をKMLで連携させる方法の概略や、GmailiGoogleの概要と簡単なデモ、Google Desktop for MacOSXの概要と簡単なデモ。

最後に、Google Adsenseの概要を駆け足で解説していた。

Apple Storeでのセミナーは定期的に予定しているようで、次回は、Google Adsenseについて解説する予定とのこと。 

頂いたノベルティは、
Googleロゴ入りボールペン
Googleロゴ入り豚の貯金箱

| | | コメント (0) | トラックバック (0)

2007年5月 9日 (水)

Oracle JDeveloper11g Technology Preview

 Jdev11g2 Jdev11g3

http://www.oracle.com/technology/products/jdev/index.htmlでJDeveloper11g Technology Preview版が公開されたので、早速 MacOSX版をダウンロード。

ついでなのでhttp://d.hatena.ne.jp/satonaoki/20070508/p1で紹介されている スタートページを JDeveloper11gのものに変更するように設定してみた。

● なにもしないと、JDeveloper10gのころのスタートページが表示される。

Jdev11g4

http://d.hatena.ne.jp/satonaoki/20070508/p1で紹介されている設定をMacOSX版のJDeveloper11g Technology Previewで行うには、

「JDeveloper11g」を右クリック->ポップアップメニューの「パッケージ内容を表示をクリック」
-> Contents/Resource/jdev/jdev/bin/jdev.confを紹介されているように編集

Jdev11g5 Jdev11g7_1 Jdev11g6

● 編集内容を保存したら再起動。

尚、以前のスタートページが開いていると新しいスタートページが表示されないようなので、もし、JDeveloper10g向けのスタートページが表示されていたら、一旦、スタートページを閉じ、「メニュー」->「Help」->「Start page」で表示させる。

Jdev11g8

Jdev11g9

私好みの色合い。。。。。。

| | | コメント (0) | トラックバック (0)

Apple Store Event Widget

先日、姪と参加したGWの特別無料ワークショップ以外に、最近では毎日、何らかの無料ワークショップが行われているようだ。
時間が合えばちょいと立ち寄ろうかとApple Store Ginzaの情報を見ていて気付いたのが、Apple Store Event Widget
こんなウィジェットあったんですね。


欲を言えば、1週間分の情報だけでなく、次週以降の情報も閲覧できるようにしてほしいところ。

Applestorewidget Applestorewidget2

茂手木秀行が魅せるデジタル時代のモノクロテクニックなんていうのもあるようで。。。

| | | コメント (0) | トラックバック (0)

2007年5月 6日 (日)

iMovie キッズワークショップ

GWに開催されたApple StoreのiMovieキッズワークショップに姪を連れて参加してきた。
(Oracleのネタは全くありませんのであしからず。。)

会場となったApple Ginza Storeの1階と4階を、子供自身が決めたテーマに従い10シーン×10秒程度で撮影し、BGMは付けないという事だった為、持参したビデオテープと私がGarageBand3で急遽作成したBGMを使う事は無かった。。。。。。

少々、残念だったが姪は、大満足!!!


Cimg3763

小さい子供でもMacBookiLife '06があれば、映画作れちゃうんですよ。簡単に!!!


BGMに利用しようと、急遽、GarageBand3で作成したサウンとドラック。(ご自由にご利用ください。)
なんとなく懐かしく感じる、Techno Pop風な曲にしてあります。


Aificonダウンロード MacDeOracleSoundTrack3.aif (フォーマット :aif ,6904.9K)


他にも、姪は良い経験をしたようだ。

●地下鉄で銀座まで来た事も初めて!
●自分一人で、自動改札に切符を通して出入りしたのも初めて!
●20時に帰宅したのだが、そんな時間まで外出しているのも初めて!
 (いつもは、18時に夕食、21時には就寝。。)
●当然だが、MacのiMovieで映画を作るなんて初めて!
●自分でデジタルビデオを操作して撮影するのも初めて!

初めてがいっぱいだ〜〜〜!。 と、うれしそうに話していた!

さらに、キッズワークショップ限定 Tシャツも頂き、うれしそう!! (^^;;;;

Cimg3764_1




余談だが、
姪に、大きくなったらこんな迷路みたいな地下鉄乗り継いで、仕事に行くんだよ! と言ったら、

「地下鉄や電車使わないで通えるところで仕事するから乗らない!!!!」 だって!。 爆笑。

その昔、通勤時間往復で4時間なんて無駄なことやっていた私。。。。通勤時間が1/3だったら、他の事にどれだけの時間を使えたことか。。。。。

姪が大きくなるころには、ソフトウェア開発や会議のために客先や、自分の勤める会社へ通勤する事無く、iChatAVのようなビデオ会議でミーティングを行い、自宅で開発するなどというスタイルが、一般的になっていると良いのだが。。。。。。。。。。

| | | コメント (0) | トラックバック (0)

2007年5月 2日 (水)

DashCodeのjavascript debugger

widgetを作っていて便利だと感じた、DashCodeのjavascript debuggerのスクリーンショット。
Leopardでの正式登場が待ち遠しい。

Dashcode_debugger

| | | コメント (0) | トラックバック (0)

2007年5月 1日 (火)

DashCode Public Beta - Dashboard de OTN-J #10

前回のつづきです。
ひとまず、今回で、Dashboard de OTN-J widgetは完成です。

● Dashboard de OTN-J widgetでは、OTN-Jのforum全体のfeedだけを読込む widgetにしてあります。

以下のfeed URL固定です。
feed://otn.oracle.co.jp/forum/rss/rssmessages.jspa?categoryID=2

ただし、アプリケーションパッケージに含まれる、attributes.js にfeedのURLが定義されているので直接編集すれば変更することは可能です。(OTN-JのRSS2.0を対象にしています。また、rdfには元のコードが未対応で、atomも一部の情報は表示できません。)
feed urlを変更可能にしたり、atom対応など、OTN-J以外のfeedも表示するなどの version upは行うかもしれませんが、気分次第です。

以下、今回追加したコードの操作確認の模様。赤丸部分でマウスカーソルの形状変化させている。また、裏面では、URLの文字色を赤から黄色に変化させ、クリックすると、当ブログのトップページを開くようにしてある。(ハイパーリンクにすれば簡単なのだが、あえて、そのようにしてある。)

10_1 10_2 10_3
10_4 10_5 10_6

dashboard_de_otn.jsに追加したコード(一部抜粋)。
追加したコードは、マウスカーソル形状を変更するコードや、テキストの色を変更するコード、そして、裏面にあるblogのURLをクリックした際、該当blogをブラウザで開くといった細かい操作を行うためのコードを追加してある。

....中略....

/*****************************************************************
* added by mac de oracle  @2007/4/28                            */

function swapCursor(event)
{
if (event.type == "mouseover") {
document.body.style.cursor = "pointer";
} else if (event.type == "mouseout") {
document.body.style.cursor = "auto";
}
}

function swapTextColor(event)
{
if (event.type == "mouseover") {
event.currentTarget.style.color = "rgb(255, 255, 0)";
} else if (event.type == "mouseout") {
event.currentTarget.style.color = "rgb(255, 0, 0)";
}
}

function addMouseCursorListeners(element, callback)
{
element.addEventListener("mouseover", callback, true);
element.addEventListener("mouseout", callback, true);
}

function openMyBlog()
{
widget.openURL(this.innerText);
}

function addClickListeners(element, callback)
{
element.addEventListener("click", callback, true);
}

/* added by mac de oracle  @2007/4/28 
******************************************************************/

....中略....

function setHandlers()
{
var backOver = new Image();
backOver.src = "Images/backButton_over.png";
var backDown = new Image();
backDown.src = "Images/backButton_down.png";
var forwardOver = new Image();
forwardOver.src = "Images/forwardButton_over.png";
var forwardDown = new Image();
forwardDown.src = "Images/forwardButton_down.png";

var backButton = document.getElementById("backButton");
if (backButton) {
addHilightListeners(backButton, backOver, backDown);

// added by mac de oracle @2007/4/28
addMouseCursorListeners(backButton, swapCursor);
}

var forwardButton = document.getElementById("forwardButton");
if (forwardButton) {
addHilightListeners(forwardButton, forwardOver, forwardDown);

// added by mac de oracle @2007/4/28
addMouseCursorListeners(forwardButton, swapCursor);
}


/****************************************************************
***  added by mac de oracle @2007/4/28                       ***/

var blogURLText = document.getElementById("myBlogURLText");
if (blogURLText) {
addMouseCursorListeners(blogURLText, swapCursor);
addClickListeners(blogURLText, openMyBlog);
addMouseCursorListeners(blogURLText, swapTextColor);
}

var done = document.getElementById("done");
if (done) {
addMouseCursorListeners(done, swapCursor);
}

var refreshButton = document.getElementById("refreshButton");
if (refreshButton) {
addMouseCursorListeners(refreshButton, swapCursor);
}

var info = document.getElementById("info");
if (info) {
addMouseCursorListeners(info, swapCursor);
}

/*** added by mac de oracle @2007/4/28                      
***************************************************************/

}

ざっとこんなところ。。 javascriptのコードをこんなに書いたのも久々。。仕事以外では。。
ただ、javascriptのデバッガを搭載しているDashCodeのおかげで javascriptを久々に書いた
私でもそれほど苦労しなかった。。。便利になってきましたねぇ。ほんとうに!

ということで、ダウンロードはこちらから。dashboard_de_otn.wdgt.zip (216.5K)

参考として、DashCodeのテンプレートに手を加えていないオリジナルのWidgetもダウンロードして比べてみてください。 ダウンロード templete.wdgt.zip (119.7K)

| | | コメント (0) | トラックバック (0)

2007年4月25日 (水)

DashCode Public Beta - Dashboard de OTN-J #9

Dashboard de OTN-Jの続きです。
今回は、javascriptを追加して、ひとまず完成まで、と考えていたのだが、大切なことを忘れていたので、まずはそちらから。

何を忘れていたのか? それは、国際化対応。 
DashCodeでも他のMacOSXのアプリケーション同様、国際化対応することが可能だ。

まずは以下のスクリーンショットを見てもらいたい。

7after_front_1


Widgetを起動すると、「Refresh」ボタンや、「Author」ラベル部分が英語のままなのだ。
そこで日本語優先の環境であれば、「Refresh」ボタンは、「リフレッシュ」と表示したり、 「Author」は「投稿者」と表示したい! ということだ。

で、どんなプログラミングが必要なんだ? と気にする必要はなく、以下のように日本語優先環境で表示するテキストを設定だけでいい。 (javaにも同じような仕組みはありますね。。)

Dash9_1

Dash9_2

Dash9_3


Dash9_4 Dash9_5
Dash9_6 Dash9_7

設定が終わったので、DashCode Public Beta上で実行してみると・・・・あれ、英語優先なのね。。。Public Betaなので仕方ない。

Dash9_10

Dashboardにデプロイして確認する.....

Dash9_11 Dash9_12 Dash9_13


日本語表示になっていますね!

Dash9_14 Dash9_15

簡単です!


では今日はここまで。
次回は、本当に、javascriptを追加して、ひとまず完成というところまで。。

| | | コメント (0) | トラックバック (0)

DashCode Public Beta - Dashboard de OTN-J #8

Dashboard de OTN-Jの続きです。


今回は、アイコンを追加するといっても作業は超簡単。作成したアイコン用画像をDrag & Dropして、大きさなどをマウスで調整するだけ!

まずは、お手持ちのソフトウェア(gimpや、PhotoShop、FireWorksなどね)でアイコン用画像を作成。今回は大きめだが、256*256の画像を作成した、128*128 で十分だと思うが。。。

Dashboard_de_otn


ナビゲータパネルの「Widget Icon」を選択するとキャンバスには空のアイコンが表示される。そこへ、作成したアイコンをDrag & Drop後、位置や大きさを整える。

8_1_1 8_2


アイコンを設定したところで、Dashboardへデプロイして確認。問題なさそうだ。

8_3 8_4 8_5 8_6


ついでなので、裏面にもアイコン用画像を貼付けることにした。この操作もDrag & Drop後、位置や大きさを調整するのみ。

8_7


外見は、これで完成!。

8_8


次回は、javascriptを少々追加し、ひとまず完成! というところまで。。。

| | | コメント (0) | トラックバック (0)

2007年4月24日 (火)

DashCode Public Beta - Dashboard de OTN-J #7

さて、少々間が空いてしまったが、 Dashboard de OTN-Jの続きです。


今回は前回のUIを少々?派手目に変更していくことにする。

ちなみに、DashCode Public betaの変更前のテンプレートは以下のようなものだった。
Before_front Before_back

そして、今回は表裏ともフォントには影を付け、地味だった色を明るくし、グラデーションを付けてみた。
7after_front 7after_back

#サウンドトラック付きなのでファイルは 22MB程度あります。
#BGM付きなので、スピーカーの音量にご注意を!

(再生にはQuickTimeが必要です。)
006


次回は、アイコンを追加する予定。

| | | コメント (0) | トラックバック (0)

2007年4月23日 (月)

DashCode Public Beta - Dashboard de OTN-J 番外編 (ちょいと一息)

ちょいと息抜き。。。
Dashboard de OTN-J #4Dashboard de OTN-J #6のQuickTImeムービーのサウンドトラックは、iLife '06のGarageBand3で作っていると書いたが、その様子のスクリーンショット。
GarageBand3って結構面白し、便利ですよ。 簡単なジングルもすぐ作れちゃう。


Garageband3

| | | コメント (0) | トラックバック (0)

2007年4月22日 (日)

DashCode Public Beta - Dashboard de OTN-J #6

Dashboard de OTN-Jの続きです。
Widgetの裏側UI変更の模様をQuickTimeムービーで。

●変更前(テンプレートのままのUI)

6_before


●変更後

赤色アンダーラインでMac De OracleのURLを表示しているが、この時点ではテキストを表示しているだけの状態にしてある。将来的には、onmouseoverイベントで文字の色を変えたり、onclickイベントでこのブログをブラウザで開くようにする予定だが。
6_after

#サウンドトラック付きなのでファイルは 25MB程度あります。
#スピーカーの音量にご注意を!

(再生にはQuickTimeが必要です。)
006

| | | コメント (0) | トラックバック (0)

2007年4月20日 (金)

DashCode Public Beta - Dashboard de OTN-J #5

前回は、WidgetのフロントUI変更の様子をQuickTimeムービーでお見せしたのだが、どのように変更を加えたのか解りづらいと思うので少々解説しておくことにした。

尚、DashboardのWidgetは、他のMacOSXのアプリケーションと同様にアプリケーションパッケージ(バンドルとか、ファイルパッケージとも呼ばれる)になっている。
Widgetを「右クリック」し、ポップアップメニューの「パッケージ内容を表示」を選択すればパッケージ内容にアクセスできるので、どのようなjavascriptなのか、cssはどうなっているか等、確認することができる。
変更前のパッケージ内容の差分を確認したり、javascript,css等のdiffを取れば、変更部分は容易に確認できると思う。

[an error occurred while processing this directive]
4_91 4_92

まず、次の2つのWidgetを見比べてもらいたい。(左がオリジナル、右がカスタマイズしたもの。)

4_1_1 4_2

・(A)の部分

オリジナルでは、javascriptコードに問題があるようで、FEEDから<title>要素を取得できず、"Untitled"と表示されている。(DashCode正式版では改善されているでしょうけど。)
カスタマイズ版では、<title>要素を取得できるよう修正し、タイトルは元ネタへのリンクに変更。

・(B)の部分

これはカスタマイズで追加した部分だ。RSS2.0の<author>要素は、OTN-JのRSSでは省略されており、替わりに、拡張された<jf:author>要素が設定されていため、<jf:author>要素値を取り出し、設定すればOK。

・(C)の部分

この部分は本来、エントリの投稿日が表示されるのだが、OTN-JのRSSでは、<item>要素以下の<pubDate>や<dc:date>要素は省略され、替わりに、<jf:createDate>要素が設定されているため、オリジナルでは投稿日が表示されないという状況になっている。
<jf:creationDate>要素値を取り出し設定すればOK.


以下、dashboard_de_otn.js の変更部分から一部抜粋
(DashCodeで新規プロジェクトを作成すると、プロジェクト名称の付いた .jsファイルが作成される。
例えば、dashboard_de_otnというプロジェクト名称を付けた場合、メインの javascriptファイルは、dashboard_de_otn.js というファイルになる。)

尚、OTN-JのRSS2.0向けにカスタマイズしているため、概要部分が長く、スクロールの必要な場合や、ATOMは正しく動作しない場合がりますのでご注意ください。(OTN-JのFEEDでのみ、テストしたため。)

また、オリジナルのコードがRDFには対応していないため、RDFを扱う場合には、さらにコードを追加する必要あり。 
==> XSLTスタイルシートを使って変換後に処理するようにすればもっと楽かも。。
後で調べよう。==>(メモメモ)

変更前(テンプレートを選択すると自動生成?されるjavascriptコード)

// Namespace URLs
var NS_DC = "http://purl.org/dc/elements/1.1/";
var NS_CONTENT = "http://purl.org/rss/1.0/modules/content/";

・・・・・中略・・・・・

function parseRSSFeed(doc)
{
var items = doc.getElementsByTagName("item");
for (var i = 0; i < items.length; i++) {
var thisItem = items[i];

var title = getLocalizedString("Untitled");
var titleElt = getFirstElementByTagName(thisItem, "title", "*");
if (titleElt && titleElt.firstChild) {
title = allData(titleElt);
}

var description;
var descElt = getFirstElementByTagName(thisItem, "encoded", NS_CONTENT);
if (!descElt) {
descElt = getFirstElementByTagName(thisItem, "description", "*");
}
if (descElt && descElt.firstChild) {
description = allData(descElt);
}

var pubDate = getFirstElementByTagName(thisItem, "pubDate", "*");
// If there's a pubDate element, use it
if (pubDate) {
pubDate = new Date(Date.parse(allData(pubDate)));
}
// If not, maybe they're using the Dublin Core date element
if (pubDate == null) {
pubDate = getFirstElementByTagName(thisItem, "date", NS_DC);
if (pubDate) {
var isoDate = allData(pubDate);
pubDate = parseISODate(isoDate);
}
}

if (+attributes.feedType == DFFeedTypeHTML) {
// HTML feed
if (description) {
entries.unshift({ title: title, description: description, date: pubDate });
}
}
else if (+attributes.feedType == DFFeedTypeImage) {
// Photo feed
var image = getFirstImage(description);
if (image) {
entries.unshift({ title: title, image: image, date: pubDate });
}
}
}
}

・・・・・中略・・・・

function setHTMLContent(title, description, date)
{
var content = document.getElementById("content");
if (content) {
clearContent();

if (title != null) {
var titleDiv = document.createElement("div");
titleDiv.setAttribute("id", "entryTitle");
titleDiv.innerHTML = title;
fixLinks(titleDiv);
content.appendChild(titleDiv);
}

if (description != null) {
var descDiv = document.createElement("div");
descDiv.setAttribute("id", "entryDescription");
descDiv.innerHTML = description;
fixLinks(descDiv);
content.appendChild(descDiv);
}

setDateText(date);
}
}

変更後

// Namespace URLs
var NS_DC = "http://purl.org/dc/elements/1.1/";
var NS_CONTENT = "http://purl.org/rss/1.0/modules/content/";
/*****************************
*** for Oracle Technology
*****************************/
var NS_JF = "http://www.jivesoftware.com/xmlns/jiveforums/rss";

・・・・・中略・・・・・

function parseRSSFeed(doc)
{
var items = doc.getElementsByTagName("item");
for (var i = 0; i < items.length; i++) {
var thisItem = items[i];

var title = getLocalizedString("Untitled");
var titleElt = getFirstElementByTagName(thisItem, "title");
if (titleElt && titleElt.firstChild) {
title = allData(titleElt);
}

var description;
var descElt = getFirstElementByTagName(thisItem, "encoded", NS_CONTENT);
if (!descElt) {
descElt = getFirstElementByTagName(thisItem, "description");
}
if (descElt && descElt.firstChild) {
description = allData(descElt);
}

var pubDate = getFirstElementByTagName(thisItem, "pubDate");
// If there's a pubDate element, use it
if (pubDate) {
pubDate = new Date(Date.parse(allData(pubDate)));
}
// If not, maybe they're using the Dublin Core date element
if (pubDate == null) {
pubDate = getFirstElementByTagName(thisItem, "date", NS_DC);
if (pubDate) {
var isoDate = allData(pubDate);
pubDate = parseISODate(isoDate);
}
}

// OTN only
if (pubDate == null) {
pubDate = getFirstElementByTagName(thisItem, "creationDate", NS_JF);
if (pubDate) {
var isoDate = allData(pubDate);
pubDate = parseISODate(isoDate);
}
}

// OTN only
var author;
var authorElt = getFirstElementByTagName(thisItem, "author", NS_JF);
if (authorElt && authorElt.firstChild) {
author = allData(authorElt);
}

var link;
var linkElt = getFirstElementByTagName(thisItem, "link");
if (linkElt && linkElt.firstChild) {
link = allData(linkElt);
}


if (+attributes.feedType == DFFeedTypeHTML) {
// HTML feed
if (description) {
entries.unshift(
{
title: title, description: description,
date: pubDate, author: author, link: link
}
);
}
}
else if (+attributes.feedType == DFFeedTypeImage) {
// Photo feed
var image = getFirstImage(description);
if (image) {
entries.unshift(
{
title: title, image: image,
date: pubDate, author: author, link: link
}
);
}
}
}
}

・・・・・中略・・・・

function setAuthorText(author)
{
var authorText = document.getElementById("authorText");
if (authorText) {
if (author != null) {
authorText.innerText = author;
}
else {
dateText.innerText = getLocalizedString("Author");
}
}
}

function setHTMLContent(title, description, date, author, link)
{
var content = document.getElementById("content");
if (content) {
clearContent();

if (title != null) {
var titleDiv = document.createElement("div");
titleDiv.setAttribute("id", "entryTitle");

var linkElt = document.createElement("a");
linkElt.setAttribute("href", link);
linkElt.innerHTML = title;
titleDiv.appendChild(linkElt);

fixLinks(titleDiv);
content.appendChild(titleDiv);
}

if (description != null) {
var descDiv = document.createElement("div");
descDiv.setAttribute("id", "entryDescription");
descDiv.innerHTML = description;
fixLinks(descDiv);
content.appendChild(descDiv);
}

setDateText(date);
setAuthorText(author);
}
}


最後に、以下の(D)と(E)の部分

「Refresh」ボタンについては、単純に、onClickイベントで、自動生成されたコードに定義されている refreshFeed() を呼んであげればOK。

[an error occurred while processing this directive]
4_3

「Refresh」ボタンをクリックすれば、日付が表示される部分に Loding... と表示され、最新のFEEDが表示されるようになります。


DashCodeのキャンバス上で、「Refresh」ボタンをクリック->「Inspector」パネル->「Behaviors」タブ-> onclickイベントのHandlersに refreshFeed() を追加してやるだけ!
[an error occurred while processing this directive]
4_93

では、次回、裏面のカスタマイズにつづく。(一気にアイコン追加と、さらに見栄えを変更する可能性あり。。。)



#押し入れから、ウチの奥さんの本が、、

これ 1999年の本なんですよね。 2000年頃にRubyやってたって聞いていたけど、本気で初期のころだね。
Rubyもやってみたいんだけど。。。奥さん、随分とRubyから遠ざかっているから、奥さんに聞くより、最新の本を買って、遊び始めたほうが早いか。。。。

| | | コメント (2) | トラックバック (0)

2007年4月19日 (木)

DashCode Public Beta - Dashboard de OTN-J #4

前回はWidgetのUIを変更したが、それらに対応するJavascriptの変更、追加を行う。

カスタマイズしたWidgetはダウンロードできるようにする予定なので、変更、追加したコードはエントリ上には掲載しないかもしれない。。。(これまた気分次第なので。。)

ということで、その模様を QuickTimeムービーで。
(サウンドトラック付きなのでファイルは 25MB程度あります。)

#スピーカーの音量にご注意を!

(再生にはQuickTimeが必要です。)
004

| | | コメント (0) | トラックバック (0)

DashCode Public Beta - Dashboard de OTN-J #3

Dashboard De OTN-Jの3回目。

WidgetのフロントUIの変更は、DashCodeで簡単に行える。(IDEなので、他のIDEを利用したことのある方なら、少々操作すれば、直感的に行えるようになると思いますよ。)

ひとまず以下のようにする事にします。

2_2

まず、「Daily Feed」の配置を右寄せにする。
「Daily Feed」を選択し、「Inspector」パネル->「Text」->「Alignment &: Spacing」で 「Alignment」で右寄せを選択する。

3_1_1
3_2
3_3


次に、 ラベルとして使用するためTextパーツを配置し、"Author:"というラベルを設定する。(日本語にする予定ですが、今はこのまま)
「Library」パネル->「Dashcode Library」プップアップメニュー->「Front」->「Text」を選択する。 Textを選択して、配置したい場所へ Drag & Drop。
配置したテキストは、「左寄せ」で配置するので、「Inspector」パネル->「Text」->「Alignment &: Spacing」で 「Alignment」で左寄せを選択する。
さらに「Inspector」パネル->「Attributeパネル」で、「ID」属性に "author"を設定しておく。

3_5
3_6
3_7


同じ要領で、エントリの投稿者を表示するためのTextパーツを配置し、「Inspector」パネル->「Attributeパネル」で 「ID」属性に"authorText"、「Value」属性の値は動的に設定することになるのだが、配置の確認の為に、"autherText"と設定しておく。

3_8


最後は、最新FEEDを取得するために利用する「Refresh」ボタンを配置する。「Library」パネル->「Dashcode Library」プップアップメニュー->「Front」->「Button」を選択する。「Lozenge Button」を選択し、Widgetの右上にDrag & Dropする。配置したボタンをダブルクリックし、"Refresh"と設定する。最後に、「Inspector」パネル->「Attributeパネル」で、「ID」属性に "refreshButton"というIDを設定しておく。

3_9
3_12
3_13
3_14


これで、ひとまず、フロントUIのカスタマイズは終わり。
フロントUIに関連するjavascriptをカスタマイズにつづく。


3_15

| | | コメント (0) | トラックバック (0)

2007年4月18日 (水)

DashCode Public Beta - Dashboard de OTN-J #2

Dashboard De OTN-Jの続きです。

さて、前回テンプレートのままでデプロイしたWidgetをカスタマイズしていくことにする。
第一弾、Widgetのフロントの見栄えを変更したり、表示する情報を増やしていく。

● Before

2_1_1 18_1

● After

2_2

見ての通り、OTN-JのRSS2.0対応FEEDでは、エントリの概要は表示されるものの、投稿日や、エントリのタイトルは表示されていない。

タイトルが表示されていないのは、テンプレートのjavascriptに問題があるためだが、投稿日が表示されていない理由は、OTN-JのRSSには、<pubDate>要素や<dc:date>要素ではなく、独自拡張された<jf:creationDate>要素があるのが理由だ。 UIを変更するついでに纏めて対処する。
変更後のUIでは、タイトルはリンクとして表示し、投稿者、投稿日を表示するほか、「Refresh」ボタンを配置し、最新のFEEDを取得できるようにする。


以下、OTN-JのFEEDより抜粋

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:jf="http://www.jivesoftware.com/xmlns/jiveforums/rss">

<channel>
<title>Oracle Technology Network (OTN) Japan - 掲示板: 投稿メッセージ - OTN</title>
<link>http://otn.oracle.co.jp/forum</link>
<description>Most recent forum messages</description>
<language>ja</language>

<generator>Jive Forums Professional 4.2.4 (www.jivesoftware.com)</generator>
<pubDate>水, 18 4 2007 01:09:17 +0900</pubDate>

<item>
<title>タイトル</title>
<link>http://otn.oracle.co.jp/forum/thread.jspa?messageID=9999&tstart=0#999</link>
<description><![CDATA[ほげほげ]]></description>
<jf:creationDate>火, 17 4 2007 23:44:58 +0900</jf:creationDate>
<jf:modificationDate>火, 17 4 2007 23:44:58 +0900</jf:modificationDate>
<jf:author>asahide</jf:author>
<jf:replyCount>0</jf:replyCount>
</item>

というところで今日は終わり、次回は、UI変更操作を載せる予定。。
(気分次第だが、javascriptの変更記録も載せる。。。。かも。。。)

| | | コメント (0) | トラックバック (0)

2007年4月17日 (火)

DashCode Public Beta - Dashboard de OTN-J #1

以前、DashCode Public Betaが、ADCのサイトからダウンロードできるようになっていると書いたが、Leopardのリリースが10月頃まで延期されるということで、しばらくは、正式版DashCodeにお目にかかるのも延びる、ということもあり、少々、DashCode Public Betaで遊んでみる事にした。

で、ネタはどうする? と、しばし考える。。。浮かんだのが、やはり、RSS FEEDを扱うネタ。 
DashCode Public Betaには、FEEDを扱うテンプレートが2種類用意されているので、それら利用することにした。

今回作成するFEED READER widgetの概要は以下。


  1. 対象とするFEEDのサイトは、とりあえず固定。
    Oracle Technology Networkの会議室のFEEDを参照することにする。お約束?!)

  2. DashCode Public Betaで提供されているテンプレートをそのまま、又は、必要に応じて、カスタマイズする。

  3. Widgetに表示するのは、FEEDエントリのタイトルと概要、それに投稿者ぐらいにする。

  4. Widget上に表示されたFEEDエントリのタイトルをクリックすると該当エントリをWebブラウザで開く。

  5. Widgetの裏面に Mac De Oracleへのリンクを配置し、クリックすると Mac De OracleのトップページをWebブラウザで開くようにする。

  6. 最新のFEEDを取得できるよう 「リフレッシュ」ボタンを配置しておく。

できればアイコンまで作る予定。


では、早速、作業開始!

まず、DashCode自体の操作方法に慣れておく必要もあるため、利用するテンプレートを選び、プロジェクトを作成する。その後、テンプレートをカスタマイズしないで、FEED READER Widgetを作成して、自分のDashboardに登録してみたいと思う。(DashCodeでの開発の流れは、これである程度は把握できるのではないかと思うが。。。。)

DashCodeの操作は直感的でいいですね。以下の操作に掛かった時間は、5分もかからなかったと思う。
OSC2007の DashCodeで簡単ウィジェット開発を受講したおかげで、基本的な操作の流れは把握していたこともその理由だが。。。
(尚、DashCodeの解説は、メニューからhelpを選択すると閲覧できるほか、ADCのサイトで参照することもできるので操作方法などの詳細はそちらを参照されたい。)


(1) DashCode Public Betaを起動する。

起動するとテンプレートを選択するダイアログが現れる。RSS FEEDを扱うテンプレートは2種類あるが、今回は、Daily Feedというテンプレートを利用することにした。[an error occurred while processing this directive]
1_1


(2) 表示するURLの設定

テンプレートを選択するとキャンバスと呼ばれるPaneにWidgetのひな形が表示される。このひな形の「Drop on RSS Feed URL Here」と表示されているエリアへ、表示したいFEEDのURLをDrag & Dropすれば設定は完了してしまう。
[an error occurred while processing this directive]
2_1 3_1 4_1 5_1


(3) Widgetの裏面デザイン

最終的には裏面デザインは変更するのだが、今のところテンプレートのままで。[an error occurred while processing this directive]
6_1


(4) プロジェクトの保存

基本的な設定はこれだけなので、作成したプロジェクトは名前を付けて保存しておく。[an error occurred while processing this directive]
7_2 8_1


(5) Widgetのテスト

作成したWidgetをDashCode上で実行してみる。(DashCode Public Beta版では、実行時のロケールは英語になっているようだ。この点については別途解説する。)
[an error occurred while processing this directive]
9_1
10
11
12
13 

DashCodeがPublic Beta版ということもあるのだろう。テンプレートをそのまま利用しているだけでは、RSS2.0対応のFEEDの処理には少々問題があるようだ。
例えば、Untitledと表示されている箇所には、各エントリの<title>要素の値が表示されるはず? なのであるが、表示されていない。 (この問題については、カスタマイズ時に改善するつもりだ)

ちなみに、ATOM1.0のURLを設定しても同じく、<title>要素値は表示されない。
尚、Daily Feedと表示されている場所には、該当エントリが投稿された年月日が表示されるのだが、Oracle Techonoloy NetworkフォーラムのFEED(RSS2.0)には、<pubDate>要素や<dc:Date>要素が省略されているため表示されていない。(拡張された要素を参照するようにすれば対応可能なので、widgetをカスタマイズして対応することにする。)


(6) widgetのデプロイ

作成したWidgetをDashboardへデプロイする。デプロイする際、Widget動作の互換性の設定も行える。今回は、MacOSX10.4.3以降で動作するように設定してある。(尚、画面は現在ログインしているユーザのDashboardへWidgetをデプロイする様子。アイコンを設定していないので白のアイコンが表示されている。)
[an error occurred while processing this directive]
14
15
16
17


(7) Dashboardの表示

デプロイが完了するとDashboardでの表示ができるようになる。表と裏面を表示させた状態のスクリーンショット。テンプレートのままだと、やはり見栄えなどもいまひとつかな。
[an error occurred while processing this directive]
18


(8) Widgetの管理

Widgetの管理は、「+」アイコンクリック->「ウィジェットの管理...」ボタンをクリックで表示される
テンプレートのままデプロイしてあるので、今回デプロイしたWidgetは白色のアイコンで表示されている。
(このままでは寂しいので、カスタマイズ時には、アイコンを設定することにする。)

19
20
21

今日はここまで。
カスタマイズや、現時点のテンプレートではうまく処理できていない点の修正などは次回以降ということで。。

| | | コメント (0) | トラックバック (0)

2007年4月10日 (火)

Oracle SQL Developer #12

Oracle SQL Developer 1.1 Patch 1 (1.1.1.25.14) for MacOSX でと思ったが、Oracle SQL Developer 1.1 Patch 2 (1.1.2.25.79) for MacOSX が既にリリースされていたので最新版で、Oracle SQL Developerのデバッグ機能を試してみた。

http://www.oracle.com/technology/software/products/sql/index.html
尚、ダウンロードにはユーザ登録(無料)が必要。

リリースノートは以下。
http://www.oracle.com/technology/products/database/sql_developer/files/relnotes_v1.1.html

SQL Developer 1.1 Path 1(1.1.1.25.14) for MacOSXの時点で確認できていたので、ネタとしては少々鮮度が落ちるが、PL/SQLのデバッガ機能でハングが発生しなくなった。 
1.0か、1.1のころデバッグ機能を試した時は、デバッグモードで実行するとSQL Developerがハングしてしまい強制終了するしか無かったが、前回リリースされた Oracle SQL Developer 1.1 Patch 1 (1.1.1.25.14) for MacOSXで解決されていた。
これができるようになれば MacOSX上でもPL/SQLの開発が楽になりますね。

以下、Oracle10g R2 EE 10.2.0.2.0に接続してdebugしている画面のスナップショット。

Oraclesqldeveloper_debug

ちなみに、Oracle SQL Developerでデバッグ機能を利用するには、DEBUG CONNECT SESSION及び、DEBUG ANY PROCEDUREシステム権限が必要。もし実行するユーザが該当システム権限を付与されていない場合、以下のようなメッセージが返される。

Connecting to the database pleco.
Executing PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '192.168.1.2', '53865' )
ORA-01031: 権限が不足しています。
ORA-06512: "SYS.DBMS_DEBUG_JDWP", 行68
ORA-06512: 行1
This session requires DEBUG CONNECT SESSION and DEBUG ANY PROCEDURE user privileges.
Process exited.
Disconnecting from the database pleco.

| | | コメント (0) | トラックバック (0)

2007年4月 6日 (金)

DashCode Public Beta

少々前のことだが、以前から行きたかったのだが、なかなか参加できずにいた Open Source Conference 2007に行ってきた。参加したセッションはPostgreSQLやMySQL関連のものが中心だったのだが、Dashcodeのセッションに間に合ったので少々覗いてみた。

ちなみに、OSC2007で受講したセッションは
http://www.ospn.jp/osc2007-spring/modules/eguide/event.php?eid=37
http://www.ospn.jp/osc2007-spring/modules/eguide/event.php?eid=42
http://www.ospn.jp/osc2007-spring/modules/eguide/event.php?eid=47

Dashcodeとwidgetの簡単なサンプルとデモという内容だったが、面白そうだったので少々遊んでみようかと。。。
(Javascriptのデバッガ機能も搭載しているというのも気になったので。。。。)

ADCのサイトからDashCode Beta版をダウンロード。
http://developer.apple.com/tools/dashcode/
http://www.apple.com/jp/macosx/leopard/dashboard.html

Dashcodeの正式版は、Leopardでのリリースとなり、TigerではPublic Beta版だけということのようなので、ご注意を。

参考:
http://journal.mycom.co.jp/special/2007/dashcode/

Dashboard関連の本にはこんなのもありますね。


ということで、早速、インストール。

Dashcode_inst1
Dashcode_inst2
Dashcode_inst3
Dashcode_inst4
Dashcode_inst5
Dashcode_inst6
Dashcode_inst7

インストールしたDashCodeは、ドックに入れちゃいましょ。(Oracle JDeveloperSQL Developerも入っていたりしますが。。。。)
Dashcode_inst8

| | | コメント (0) | トラックバック (0)

2007年4月 4日 (水)

でましたね〜。 8 core MacPro

8core

3.0Ghzモデルにして42万円ちょっとですか。。。。。うちのDual 2.7Ghz PowerMac G5が小さく見えてきた。。。

| | | コメント (0) | トラックバック (0)

2007年4月 2日 (月)

Mac De PL/SQL RSS Reader #33 (XSLT編 #5)

さて、前回からのつづき。

●プロシージャのソースです。

HTMLで表示しているため以下のソースをそのままコピー/ペーストするとコンパイルエラーなど不都合が発生することがあるかもしれませんので、ソースを利用される場合は、XSLTスタイルシートも含め、こちらからダウンロードしたソースをお使いください。 source.zip (3.9K)

CREATE OR REPLACE 
PROCEDURE RSS_READER_XSLT
(
i_feedXmlUrl IN VARCHAR2,
i_feedXmlCharset IN VARCHAR2,
i_styleSheetDir IN VARCHAR2,
i_styleSheetName IN VARCHAR2,
DEBUG_ IN BOOLEAN DEFAULT FALSE
)
AS
--===========================================================
rss_reader_xslt.sql : 2007/3/26 - Mac De Oracle
https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/
--============ ===============================================

--============ TYPEs/VARIABLEs ===============================================
XSL_CHARSET_ CONSTANT VARCHAR(30) := 'UTF8';
v_feedXmlUrl VARCHAR2(32767);
v_feedXmlCharset VARCHAR2(30);
v_styleSheetDir VARCHAR2(30);
v_styleSheetName VARCHAR2(100);

myParser DBMS_XMLPARSER.Parser;
v_feedDoc DBMS_XMLDOM.DomDocument;
v_feedSourceClob CLOB;

myProcessor DBMS_XSLPROCESSOR.Processor;
v_xsl DBMS_XSLPROCESSOR.StyleSheet;
v_xslDoc DBMS_XMLDOM.DomDocument;
v_xslSourceClob CLOB;
v_xslDocFragment DBMS_XMLDOM.DomdocumentFragment;
v_transformedDoc DBMS_XMLDOM.DomNode;

v_clobbuffer CLOB;

--========== Internal PROCEDUREs/FUNCTIONs ===================================
PROCEDURE getXMLSource(
i_url IN VARCHAR2,
i_charset IN VARCHAR2 DEFAULT 'UTF-8',
io_sourceClob IN OUT NOCOPY CLOB
)
IS
v_httpReq UTL_HTTP.REQ;
v_httpResp UTL_HTTP.RESP;
v_xmlSource VARCHAR2(1024);
BEGIN
v_httpReq := UTL_HTTP.BEGIN_REQUEST(i_url);
UTL_HTTP.SET_HEADER(
v_httpReq,
'User-Agent',
'Oracle UTL_HTTP/Oracle10g R1;'
);

UTL_HTTP.SET_HEADER(
v_httpReq,
'Content-Type',
'text/xml;charset='||i_charset
);

v_httpResp := UTL_HTTP.GET_RESPONSE(v_httpReq);
DBMS_LOB.CREATETEMPORARY(io_sourceClob, FALSE);
BEGIN
LOOP
UTL_HTTP.READ_LINE(v_httpResp, v_xmlSource, true);
v_xmlSource := v_xmlSource || UTL_TCP.CRLF;
DBMS_LOB.WRITEAPPEND(
io_sourceClob,
LENGTH(v_xmlSource),
v_xmlSource
);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(v_httpResp);
END;
END getXMLSource;

PROCEDURE drawFeedEntries(
i_buffer IN CLOB
)
IS
chunkSize_ CONSTANT PLS_INTEGER := 10922;
v_numOfChunk PLS_INTEGER;
v_src CLOB;
v_tempStr VARCHAR2(32767);
BEGIN
v_src := i_buffer;
FOR chunk# IN 0..CEIL(DBMS_LOB.GETLENGTH(v_src) / chunkSize_) LOOP
v_tempStr := SUBSTR(i_buffer, (chunk#*chunkSize_)+1, chunkSize_);
HTP.PRN(v_tempStr);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(
'Error Occured : rss_reader_xslt.drawFeedEntries(CLOB).'
);
DBMS_OUTPUT.PUT_LINE(sqlerrm());
RAISE;

END drawFeedEntries;

-- for DEBUG
PROCEDURE pl(text IN CLOB)
IS
BEGIN
IF length(text)> 80 THEN
FOR i IN 1..(trunc(length(text)/80)+1) LOOP
dbms_output.put_line(substr(text,1+ 80*(i-1),80));
END LOOP;
ELSE
dbms_output.put_line(text);
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error occured : pl(VARCHAR2).');
RAISE;
END pl;

--
--
--****************************************************************************
-- Main
--****************************************************************************
BEGIN

v_feedXmlUrl := i_feedXmlUrl;
v_feedXmlCharset := i_feedXmlCharset;
v_styleSheetDir := UPPER(i_styleSheetDir);
v_styleSheetName := i_styleSheetName;

IF v_feedXmlUrl IS NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'FEEDのURLを指定してください。');
END IF;
IF v_styleSheetDir IS NULL THEN
RAISE_APPLICATION_ERROR(
-20001,
'XSLTスタイルシートが保存されているディレクトリを指定してください。'
);
END IF;
IF v_styleSheetName IS NULL THEN
RAISE_APPLICATION_ERROR(-20002, 'XSLTスタイルシート名を指定してください。');
END IF;

-- RSS FEEDの取得する
getXMLSource(
i_url => v_feedXmlUrl,
i_charset => v_feedXmlCharset,
io_sourceClob => v_feedSourceClob
);
myParser := DBMS_XMLPARSER.NEWPARSER();
DBMS_XMLPARSER.PARSECLOB(myParser, v_feedSourceClob);
v_feedDoc := DBMS_XMLPARSER.GETDOCUMENT(myParser);

-- XSLTスタイルシートを読み込む
v_xslSourceClob := DBMS_XSLPROCESSOR.READ2CLOB(
v_styleSheetDir,
v_styleSheetName,
NLS_CHARSET_ID(XSL_CHARSET_)
);
DBMS_XMLPARSER.PARSECLOB(myParser, v_xslSourceClob);
v_xslDoc := DBMS_XMLPARSER.GETDOCUMENT(myParser);
v_xsl := DBMS_XSLPROCESSOR.NEWSTYLESHEET(v_xslDoc, NULL);

-- DOMにXSLTスタイルシートを適用する
myProcessor := DBMS_XSLPROCESSOR.NEWPROCESSOR();
v_xslDocFragment := DBMS_XSLPROCESSOR.PROCESSXSL(
myProcessor,
v_xsl,
v_feedDoc
);
v_transformedDoc := DBMS_XMLDOM.MAKENODE(v_xslDocFragment);
DBMS_LOB.CREATETEMPORARY(v_clobbuffer, FALSE);
DBMS_XMLDOM.WRITETOCLOB(v_transformedDoc, v_clobbuffer);

-- 変換後のHTMLを出力する
IF DEBUG_ THEN
pl(v_clobbuffer);
ELSE
drawFeedEntries(v_clobbuffer);
END IF;

DBMS_LOB.FREETEMPORARY(v_feedSourceClob);
DBMS_LOB.FREETEMPORARY(v_xslSourceClob);
DBMS_LOB.FREETEMPORARY(v_clobbuffer);
DBMS_XSLPROCESSOR.FREESTYLESHEET(v_xsl);
DBMS_XMLDOM.FREEDOCUMENT(v_feedDoc);
DBMS_XMLDOM.FREEDOCUMENT(v_xslDoc);
DBMS_XMLPARSER.FREEPARSER(myParser);
DBMS_XSLPROCESSOR.FREEPROCESSOR(myProcessor);

EXCEPTION
WHEN OTHERS THEN
IF v_feedSourceClob IS NOT NULL THEN
DBMS_LOB.FREETEMPORARY(v_feedSourceClob);
END IF;
IF v_xslSourceClob IS NOT NULL THEN
DBMS_LOB.FREETEMPORARY(v_xslSourceClob);
END IF;
IF v_clobbuffer IS NOT NULL THEN
DBMS_LOB.FREETEMPORARY(v_clobbuffer);
END IF;
DBMS_XSLPROCESSOR.FREESTYLESHEET(v_xsl);
DBMS_XMLDOM.FREEDOCUMENT(v_feedDoc);
DBMS_XMLDOM.FREEDOCUMENT(v_xslDoc);
DBMS_XMLPARSER.FREEPARSER(myParser);
DBMS_XSLPROCESSOR.FREEPROCESSOR(myProcessor);

IF DEBUG_ THEN
DBMS_OUTPUT.PUT_LINE('RSS Reader error:'||SQLERRM());
ELSE
HTP.TABLEOPEN();
HTP.TABLEROWOPEN();
HTP.TABLEHEADER('RSS Reader error:'||SQLERRM());
HTP.TABLEROWCLOSE();
HTP.TABLECLOSE();
END IF;
END RSS_READER_XSLT;
/



このサンプルは OTN-Jの CodeTipsでも公開しています。

(1/3) http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2135
(2/3) http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2137
(3/3) http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2138

| | | コメント (0) | トラックバック (0)

2007年4月 1日 (日)

Mac De PL/SQL RSS Reader #32 (XSLT編 #4)

つづきです。

XSLTスタイルシートに関して細かく解説するつもりはありませんが、少しだけ解説しておくと。

RSS 0.91/RSS 0.92/ RDF(RSS)1.0ATOM 0.3 / ATOM 1.0の FEEDからタイトルと元ネタへのリンク、各エントリ毎の要約とリンク、そして、存在してれば、[エントリの作成日]を抜き出してHTMLへ変換している。
尚、OTN-JRSS2.0で配信されているが 各エントリには、<pubDate>要素や、<dc:date>要素は存在せず、拡張された<jf:creationDate>要素に作成日を持っているようなので、<jf:creationDate>要素を処理している。

XSLTについては、@ITの記事などや、検索すれば沢山ヒットするので理解できる範囲かと。。。
(難しいことはやってないですから。)
http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt04.html
http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt10.html

尚、DBMS_XSLPROCESSORパッケージなどは、
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19245-01/d_xslpro.htmを参照のこと。

簡単な解説はこれぐらいにして、以下、XSLTスタイルシートのソース。
#1時間くらいで作ったものなので、バグが無いとは言えません。あしからず。
#ちなみに、私が読んでいるFEEDでは特に問題は発生していません。

但し、こんな問題もあり2月に入ってからDTDが開けないエラーが発生している。大抵、他の形式でも配布しているからRSS0.91使わなきゃいいだけかも。。

尚、今回作成したXSLTスタイルシートとPL/SQLのソースコードは、こちらからダウンロードできます。 source.zip (3.9K)

<?xml version="1.0" encoding="utf-8"?>
<!-- ===================================================================
rss2html.xsl : 2007/3/26 - Mac De Oracle
https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/
==================================================================== -->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rss10="http://purl.org/rss/1.0/"
xmlns:atom03="http://purl.org/atom/ns#"
xmlns:atom10="http://www.w3.org/2005/Atom"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:jf="http://www.jivesoftware.com/xmlns/jiveforums/rss"
>


<xsl:output method="html" encoding="utf-8" />
<xsl:template match="/">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<th>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:apply-templates select="//rdf:RDF/rss10:channel/rss10:link"/>
<xsl:apply-templates select="//atom03:feed/atom03:link/@href"/>
<xsl:apply-templates select="//atom10:feed/atom10:link/@href"/>
<xsl:apply-templates select="//rss/channel/link"/>
</xsl:attribute>
<xsl:apply-templates select="//rdf:RDF/rss10:channel/rss10:title"/>
<xsl:apply-templates select="//atom03:feed/atom03:title"/>
<xsl:apply-templates select="//atom10:feed/atom10:title"/>
<xsl:apply-templates select="//rss/channel/title"/>
</xsl:element>
</th>
</tr>
<xsl:apply-templates select="//rdf:RDF/rss10:item" mode="normal"/>
<xsl:apply-templates select="//atom03:feed/atom03:entry" mode="normal"/>
<xsl:apply-templates select="//atom10:feed/atom10:entry" mode="normal"/>
<xsl:apply-templates select="//rss/channel/item" mode="normal"/>
</table>
</xsl:template>


<!-- RDF/RSS1.0 template -->
<xsl:template match="rss10:item" mode="normal">
<tr>
<td valign="top">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="rss10:link"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="rss10:link"/></xsl:attribute>
<xsl:attribute name="style">color:#FF0000</xsl:attribute>
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:value-of select="concat(rss10:title, ' - 続きを読む...')" />
</xsl:element>
<xsl:choose>
<xsl:when test="dc:date">
<xsl:value-of select="concat(' - ', substring-before(dc:date,'T'))"/>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</td>
</tr>
</xsl:template>

<xsl:template match="//rdf:RDF/rss10:channel/rss10:title">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="//rdf:RDF/rss10:channel/rss10:link">
<xsl:value-of select="."/>
</xsl:template>


<!-- ATOM 1.0 template -->
<xsl:template match="//atom10:feed/atom10:entry" mode="normal">
<tr>
<td valign="top">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="atom10:link/@href"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="atom10:summary"/></xsl:attribute>
<xsl:attribute name="style">color:#FF0000</xsl:attribute>
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:value-of select="concat(atom10:title,' - 続きを読む...')"/>
</xsl:element>
<xsl:choose>
<xsl:when test="atom10:published">
<xsl:value-of select="concat(' - ',substring-before(atom10:published,'T'))"/>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</td>
</tr>
</xsl:template>

<xsl:template match="//atom10:feed/atom10:title">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="//atom10:feed/atom10:link/@href">
<xsl:if test="../@rel = 'alternate'">
<xsl:if test="../@type = 'text/html'">
<xsl:value-of select="."/>
</xsl:if>
</xsl:if>
</xsl:template>


<!-- ATOM 0.3 template -->
<xsl:template match="//atom03:feed/atom03:entry" mode="normal">
<tr>
<td valign="top">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="atom03:link/@href"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="atom03:summary"/></xsl:attribute>
<xsl:attribute name="style">color:#FF0000</xsl:attribute>
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:value-of select="concat(atom03:title, ' - 続きを読む...')"/>
</xsl:element>
<xsl:choose>
<xsl:when test="atom03:issued">
<xsl:value-of select="concat(' - ', substring-before(atom03:issued, 'T'))"/>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</td>
</tr>
</xsl:template>

<xsl:template match="//atom03:feed/atom03:title">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="//atom03:feed/atom03:link/@href">
<xsl:if test="../@rel = 'alternate'">
<xsl:if test="../@type = 'text/html'">
<xsl:value-of select="."/>
</xsl:if>
</xsl:if>
</xsl:template>


<!-- RSS 0.91/0.92/2.0 template -->
<xsl:template match="//rss/channel/item" mode="normal">
<tr>
<td valign="top">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="link"/></xsl:attribute>
<xsl:attribute name="style">color:#FF0000</xsl:attribute>
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:value-of select="concat(title, ' - 続きを読む...')"/>
</xsl:element>
<xsl:choose>
<xsl:when test="pubDate">
<xsl:value-of
select="concat(
' - ',
substring(
substring-before(jf:creationDate, ':'),
1,
string-length(substring-before(jf:creationDate, ':'))-3
)
)"
/>
</xsl:when>
<xsl:when test="dc:date">
<xsl:value-of select="concat(' - ', substring-before(dc:date, 'T'))"/>
</xsl:when>
<xsl:otherwise>
<!-- for OTN rss -->
<xsl:if test="jf:creationDate">
<xsl:value-of
select="concat(
' - ',
substring(
substring-before(jf:creationDate, ':'),
1,
string-length(substring-before(jf:creationDate, ':'))-3
)
)"
/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:template>

<xsl:template match="//rss/channel/title">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="//rss/channel/link">
<xsl:value-of select="."/>
</xsl:template>

</xsl:stylesheet>

長くなるので、PL/SQLのソースは次回。




このサンプルは OTN-Jの CodeTipsでも公開しています。

(1/3) http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2135
(2/3) http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2137
(3/3) http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=2138

| | | コメント (0) | トラックバック (0)

2007年3月30日 (金)

Mac De PL/SQL RSS Reader #31 (XSLT編 #3)

前回前々回と、いきなりデバッグの後半部分とApex3.0 での動作確認を載せていたので、今回は、少しだけ解説を。

XSLTスタイルシートは、Oracleのディレクトリオブジェクトから読み込んだと書いたが、まずはその点から解説しておこう。
ディレクトリオブジェクトを作成し、Apex3.0でアプリケーションの格納に利用する「作業領域」に割り当てられたスキーマへディレクトリオブジェクトの読み込み権限を付与しておく。

SYS> create directory plsql_de_xslt as '/Volumes/Discus/4oracle/oracle/plsql_de_xslt/';

ディレクトリが作成されました。

SYS> grant read on directory plsql_de_xslt to aquarium;

権限付与が成功しました。

尚、「作業領域」に割り当てられているスキーマの確認方法は、
Application Express管理サービスにログイン->「作業領域の管理」->「作業領域とスキーマの割当の管理」

31 32
33 34
上記のスクリーンショットを見れば一目瞭然だが、作業領域:aquariumにaquariumスキーマが割り当てられていることが確認できる。


ディレクトリオブジェクトの準備が済んだら、事前に作成しておいたXSLTスタイルシート(文字エンコーディングは、UTF-8とした)をディレクトリオブジェクトに対応付けされたディレクトリへ配置する。(以下は配置後の状態)

discus:˜/plsql_de_xslt oracle$ pwd
/Volumes/Discus/4oracle/oracle/plsql_de_xslt
discus:˜/plsql_de_xslt oracle$ ls
RssToXhtml.xsl
discus:˜/plsql_de_xslt oracle$

PL/SQLでは、DBMS_XSLPROCESSOR.READ2CLOB()ファンクションを使って読み込むことができる。


例えば、
●ディレクトリオブジェクト名:"PLSQL_DE_XSLT"
●XSLTスタイルシート名:"RssToXhtml.xsl"
●文字エンコーディング: "UTF-8"

である場合は以下のように指定する。
注意する点は、キャラクタセットIDだろう。NLS_CHARSET_ID関数を利用しキャラクタセット名からキャラクタセットIDに変換する必要がある。また、指定するキャラクタセット名は、Oracle Database グローバリゼーション・サポート・ガイドに記載されている名称を指定する。 この例では、UTF8

==> 私もハマりました。つい、"UTF-8"って指定してしまって。。。(^^;;;; しばらく悩みました。。はい。

  tempClob :=  DBMS_XSLPROCESSOR.READ2CLOB(
'PLSQL_DE_XSLT',
'RssToXhtml.xsl',
NLS_CHARSET_ID('UTF8')
);

また、以前にも書いたが、 DBMS_XMLPARSER.PARSER(url)を使ってRSS FEEDをパースできればいいのだが、今のところ、マルチバイトを利用している場合には文字化けの影響があるので、面倒だがUTL_HTTPパッケージを利用し自前でCLOBに取込んでからパースするようにしている。 

| | | コメント (0) | トラックバック (0)

2007年3月29日 (木)

Mac De PL/SQL RSS Reader #30 (XSLT編 #2)

さて、SQL Developerでの確認も終わり、さっそく、Apex3.0で試してみた。

いつものように、「Hide and Show Region」を選択し、RSS 0.91/0.92/1.0/2.0 ATOM 0.3/1.0で配信されているFEEDを読み込むよう設定した。

Ap1_1 Ap2 


アプリケーションを実行した結果は以下。思い通りに変換されている。(XSLTスタイルシートを利用しているので、見栄えを変更する場合はXSLTスタイルシートを修正するだけ。。)

Ap3 Ap4

まあ、なんとか、以前のものとおなじような見栄えにはなりますね。(XSLT2.0ならもっといろいろとできるでしょうけども)
以下マニュアル引用


PL/SQL XSLT Processor for XMLType: Features

PL/SQL XSLT Processor for XMLType (DBMS_XSLPROCESSOR) is the Oracle XML DB implementation of the XSL processor. This follows the W3C XSLT final recommendation (REC-xslt-19991116).

W3C XSL Transformations(XSLT) バージョン 1.0の和訳はこちら。
http://www.infoteria.com/jp/contents/xml-data/REC-xslt-19991116-jpn.htm

次回へつづく。




植木等さんの名作といえば、無責任シリーズかもしれません。(今見ても、笑えますもん)
ただ、私などはリアルタイムで無責任シリーズを見た世代ではないので、「オヨビでない奴!」というドラマの印象が強烈かもしれない。
所ジョージと高橋良明が植木等にからみ、植木等の3乗くらいの面白さのあったドラマに仕上がっていたと思います。
ところで、所ジョージに植木等のまねをやらせたら似てるよ、きっと。。。

植木等さんのご冥福を心よりお祈りいたします。

| | | コメント (0) | トラックバック (0)

Mac De PL/SQL RSS Reader #29 (XSLT編#1)

ノドが痛いと思っていたら、熱。インフルエンザではないが、風邪には違いない。(油断禁物ですね。。)1日休んだら、回復しましたけど、本調子に戻っていないので今日はおとなしくして明日は完全復活する予定。(週末は花見もしないとならんし。。な)


さて、PL/SQLでRSS Readerを作ってきたが、XSLTスタイルシートを利用した場合はどうなるか?
ということで、以前のプロシージャをベースに、XSLT版に書き換えてみることにする。

利環境は前回からの続きなので変更はないのだが、念のために、データベース、Web Toolkit、そして、Apexのバージョンを載せておく。

SYS> select version from v$instance;

VERSION
-----------------
10.1.0.3.0


SYS> select owa_util.get_version from dual;

GET_VERSION
--------------------------------------------------------
10.1.2.0.6

SYS> select flows_030000.wwv_flows_release from dual;

WWV_FLOWS_RELEASE
--------------------------------------------------------
3.0.0.00.20

SYS>

尚、開発には、 Oracle SQL Developer 1.1.2.25 Build Main 25.79 を使用した。

SQL Developerでは、OWAの出力もできるようなので試したかったということもあったのだが。。。

試してみるとOWAが書き出す量が多いとエラーになるようだ、具体的にどの程度ということまでは確認していないのだが。。HTP.PRNで4000バイト以上は書き出している。
但し、エラー時にもHTP.PRINTでエラー内容を出力しているのだが、こちらは、画面のスナップショットからも判るように問題なく表示されている
(前述の問題は、dbms_outputパッケージで代用できるので、特に困るということもないので深入りしないでスルー。(^^;;;)


X1 X2

前回までとは異なり、PL/SQL内部でDOMをトラバースしたりすることはせず、XSLTスタイルシートを利用してRSS/RDF/ATOMをHTMLに変換する。
変換後のHTMLには、FEEDのタイトル及びリンク、各記事の要約とリンク、それに記事の作成日があれば表示することにした。
尚、記事の作成日については、該当要素値から日付(RFC3339形式)部分を表示することにした。(RFC882形式の場合は、曜日も含める)
また、XSLスタイルシートの読み込み方法は幾つかあるが、今回はディレクトリオブジェクト以下にあるスタイルシートを読み込むことにした。。

XSLTスタイルシートで、xsl:choose要素や、xsl:if要素。xsl:variable要素なんて多用してしまうと、もの凄く読みにくいJSPのようになってしまいそうな気がする。。。
ところで、しっかりと内容を確認していないのだが、XML Master professional Database を取るべきか、Applicationを取るべきか悩みなすね。。


DBMS_OUTPU.PUT_LINEを利用してデバック変換後のHTMLを表示しているところ。

X3 X4
X5 X6


適当に作ったXSLTスタイルシートもなんとか思い通りのもにに仕上がったので、Apex3.0でお試し。。

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年3月27日 (火)

Start Mac体験モニター募集中ですって!

http://www.apple.com/jp/articles/startmac_monitor_2/?cid=AOS-JP-107983-B40000073682

アップルが、普段Windowsを使っていて、まだ、Macを使ったことがない方、かつ、自分のブログを持っている方向けにStart Mac体験モニターを募集している。
Windowsな方で、Macを使ってみたい方は、運試しも兼ねて応募してみては?

尚、モニター期間終了後、Macはモニターをしてくれた方に譲渡されるとか。。。詳しくは、Appleのサイトを参照してみてくださいね。

私は、すでにMacユーザなので、残念ですが、応募できない。 (><) そろそろ、MacBook Proが欲しくなってきた、今日このごろ。。。。

| | | コメント (0) | トラックバック (0)

2007年3月24日 (土)

Mac De Oracle : Visual Paradigm

http://www.apple.com/downloads/macosx/development_tools/visualparadigmforumlenterpriseedition.html

ADCのサイトで、以前当ブログでも紹介した Visual Paradigm 6.0が紹介されていますね。
よいツールだと思いますよ。

https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2007/01/mac_de_oracle_u.html
https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2007/03/mac_de_oracle_u.html

| | | コメント (0) | トラックバック (0)

2007年3月23日 (金)

Mac De Apex3.0 #5

さて、以前にも少々触れたが、Apexのupgradeの失敗、又は、upgrade後に以前のリリースに戻す方法について、備忘録程度に記述しておく。

手順については、マニュアルにも記載されているが、imageファイルについては、移行前に別名で保存して必要があるのでお忘れなく。
http://download-west.oracle.com/docs/cd/B32472_01/doc/install.300/b32468/trouble.htm#BABDJIFE



HTMLDB1.5からはじまり、HTMLDB2.0、APEX2.2そして、APEX3.0へと移行したのだが、前リリースのimagesフォルダや、marvel.conf(利用しているHTTP Serverによっては、dads.confを使用している場合あり)は、それぞれ別名で退避、また移行後、旧リリースのスキーマを削除していないことを前提としている。

以下はApex3.0移行後にApex2.2へ戻す例である。尚、apexは停止しておくこと!。


  1. Apex3.0用imagesディレクトリを別名で退避(以下例では、images_30として改名)又は、削除する。

  2. 事前に退避しておいた、Apex2.2用imagesディレクトリ(以下の例では、images_22)をimagesディレクトリとして改名又はコピーする。

  3. Apex3.0用に書き換えたmarvel.confを別名で退避(以下例では、marvel.conf.30と改名)又は、削除する。

  4. 事前に退避しておいた、Apex2.2用marvel.confファイル(以下例では、marvel.conf.22)をmarvel.confに改名又はコピーする。

  5. SQL*Plusを起動し、SYSユーザ接続後、スキーマを FLOWS_020200(Apex2.2用スキーマ)に変更する。

  6. flows_020200.wwv_flow_upgrade.switch_schemas()プロシージャにて、APEXのスキーマをFLOWS_030000(Apex3.0用スキーマ)からFLOWS_020200(Apex2.2スキーマ)に切り替える。

  7. flows_030000スキーマを削除する。


以上のような手順でApex3.0からApex2.2に戻す事ができる。以下はApex3.0からApex2.2に戻した際のログである。
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ ll | grep images
drw-r----- 881 oracle oinstall 29954 Mar 18 17:21 images
drw-r----- 998 oracle oinstall 33932 Mar 18 14:33 images_20
drw-r----- 876 oracle oinstall 29784 Mar 18 13:00 images_22
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ mv images images_30
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ cp -rf images_22 images
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ cd ../apache/modplsql/conf
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/apache/modplsql/conf oracle$ ls marvel*
marvel.conf marvel.conf.20 marvel.conf.22
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/apache/modplsql/conf oracle$ mv marvel.conf marvel.conf.30
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/apache/modplsql/conf oracle$ mv marvel.conf.22 marvel.conf
pb17:/Volumes/WorkVol/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ sqlplus /nolog
> conn sys/xxxx@tiger as sysdba
SYS> l
1 select
2 username,
3 account_status
4 from
5 dba_users
6 where
7 username like '%¥_PUBLIC¥_%' escape '¥'
8 or username like 'FLOWS¥_%' escape '¥'
9 order by
10 account_status,
11* username
SYS> /

USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
FLOWS_020000 LOCKED
FLOWS_020200 LOCKED
FLOWS_030000 LOCKED
FLOWS_FILES LOCKED
APEX_PUBLIC_USER OPEN
HTMLDB_PUBLIC_USER OPEN

6行が選択されました。

SYS>
SYS> alter session set current_schema = FLOWS_020200;

セッションが変更されました。

SYS> exec flows_020200.wwv_flow_upgrade.switch_schemas('FLOWS_030000','FLOWS_020200');

PL/SQLプロシージャが正常に完了しました。

SYS> drop user flows_030000 cascade;

ユーザーが削除されました。

SYS>

これでApex2.2への戻しは終了である。

注意)HTMLDB_PUBLIC_USERというスキーマは、HTMLDB2.0までの接続スキーマである。HTMLDB2.0以前に戻す可能性がある場合にはこれも残しておく(lockしておいたほうがより安全だが)か、退避しておく必要がある。また、FLOWS_020000というスキーマはHTMLDB2.0のスキーマである。

| | | コメント (0) | トラックバック (0)

2007年3月22日 (木)

Mac De APEX3.0 #4

さて、HTMLDB2.0からAPEX3.0への移行は簡単だったが、HTMLDB2.0や、APEX2.2でいろいろな問題のあったSVGチャートはどうなったのか?
SVGViewerの開発元であるアドビ社は、SVGViewerの開発を中止したようなので、APEXのチャートのサポートはどうなるのか少々気になっていたのだが、先日APEX3.0がリリースされ、SVGではなく、Flashもサポートされていた。お〜〜〜っ。これで、日本語も表示できるか??? 

まずは、はやり、AppleのCMからどうぞ。

Apple_pie_chart



ということで、マニュアルに示されている手順で、SVGチャート扱うアプリケーションをFLASHチャートを扱えるように移行する。実はこの移行手順も簡単なのだ。クリック、クリック、クリック。とクリックするだけで移行作業を行える。
(尚、MacOSXは、最新パッチを適用した 10.4.9 である。)

最後に、前回、日本語が化けるので凡例部分をローマ字にしていたバリバリ鎌倉円グラフを。。。おおお〜〜表示されました〜〜。

Fin

移行手順は、SVGチャートを配置しているページの該当リージョン開き、右側の枠に表示される、"SVGチャートのFLASHチャートへの移行"というリンクをクリックだけ!
その模様はQuickTImeムービーでどうぞ。


(再生にはQuickTimeが必要です。)


svg_2_flash

| | | コメント (0) | トラックバック (0)

2007年3月21日 (水)

Mac De APEX3.0 #3

● APEX3.0 日本語リソースのインストール

apex_3.0.zipを解凍して作成されるディレクトリのbuilder/jaに移動し、load_ja.sqlスクリプトをsysユーザで実行する。
NLS_LANGは、AL32UTF8へ一時的に変更し、Terminalの文字エンコーディングもUTF-8変更しておく!

Apex30_terminal_utf8

G5Server:/Volumes/DiscusWork/temp/apex/builder/ja oracle$ ls -l load_ja.sql
-r--r--r-- 1 oracle oinstall 2319 Feb 28 04:35 unload_ja.sql
G5Server:/Volumes/DiscusWork/temp/apex/builder/ja oracle$
G5Server:/Volumes/DiscusWork/temp/apex/builder/ja oracle$ echo $NLS_LANG
Japanese_Japan.JA16SJISTILDE
G5Server:/Volumes/DiscusWork/temp/apex/builder/ja oracle$ export NLS_LANG=japanese_japan.AL32UTF8
G5Server:/Volumes/DiscusWork/temp/apex/builder/ja oracle$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 月 3月 17 23:17:47 2007

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

> conn / as sysdba
接続されました。
SYS> alter session set current_schema = FLOWS_030000;

セッションが変更されました。

SYS> @load_ja
. ____ ____ ____ ____
. / \ | \ /\ / | /
.| || / / \ | | |
.| ||--- ---- | | |--
.| || \ / \ | | |
. \____/ | \/ \ \____ |____ \____
.
. Application Express Hosted Development Service Installation.
.........................................................

PL/SQLプロシージャが正常に完了しました。

Install Application Express applications

PL/SQLプロシージャが正常に完了しました。

APPLICATION 4420 - APEX - System Messages

・・・・中略・・・・

APPLICATION 4009 - APEX - Application Builder
Set Credentials...
Check Compatibility...
API Last Extended:20070108
Your Current Version:20070108
This import is compatible with version: 20070108
COMPATIBLE (You should be able to run this import without issues.)
Set Application ID...
...authorization schemes
...navigation bar entries
...application processes
...application items
...application level computations
...Application Tabs
...Application Parent Tabs
...Shared Lists of values
...Application Trees
...page groups
...PAGE .4009: ページ0(ゼロ)
...PAGE 1.4009: アプリケーション・ビルダー
...PAGE 2.4009: サポートするオブジェクト
...PAGE 3.4009: ブレッドクラム・エントリ
...PAGE 4.4009: マスター表の定義
...PAGE 5.4009: ディテール表を定義
...PAGE 6.4009: アイテム・ラベルのグリッド編集

・・・・中略・・・・

...PAGE 1.4709: 作業領域のリクエスト - 最初のページ
...PAGE 3.4709: 作業領域のリクエスト - 確認
...PAGE 10.4709: 作業領域のリクエスト - 管理者
...PAGE 20.4709: 作業領域のリクエスト - 作業領域
...PAGE 25.4709: 作業領域のリクエスト - スキーマの指定
...PAGE 26.4709: 作業領域のリクエスト - スキーマに関する警告
...PAGE 27.4709: 作業領域のリクエスト - プロジェクトの説明
...PAGE 30.4709: 作業領域のリクエスト - 確認
...PAGE 40.4709: 作業領域のリクエスト - 新規または既存のスキーマ

・・・・中略・・・・

...authentication schemes
......scheme 108165525079033088.4709
...done
Adjust instance settings

PL/SQLプロシージャが正常に完了しました。

SYS> exit
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。
G5Server:/Volumes/DiscusWork/temp/apex/builder/ja oracle$

● 確認

APEX3.0への移行は特に問題もなく終了した。作業が簡単なのは、本当にうれしいねぇ。 (^^;;;。
(9iASや、10g Application Serverのupgradeも、もっと簡単になれば、もっとうれしいと思うのだが。。) 


Start_apex30 Apex30_test

今日はここまで。
次回は、チャートの表示がSVGViewerからFlashに変更されたので、以前SVGチャートを試したdemoアプリケーションをFlashに移行し、「パイチャート」を表示してみることにする。

| | | コメント (0) | トラックバック (0)

2007年3月20日 (火)

Mac De Apex3.0 #2

HTMLDB2.0からAPEX3.0への移行作業。その2。

事前準備は整ったので、HTMLDB2.0からAPEX3.0へupgradeする。
尚、新規インストールなのか移行なのかを意識することはない楽で簡単ですね。
apex_3.0.zipを解凍した際に作成されるapexディレクトリ直下にあるapexins.sqlを実行するだけでよいので、非常に簡単。とは言っても心配ならはバックアップを取得しておいたほうがよいだろう。


尚、APEXのインストールでは、リリース毎に新たなスキーマが作成され、旧スキーマが残されている。
APEX3.0に移行したとしても、容易に以前のリリースに戻せるようになっている。 したがって、移行後すぐに旧スキーマを削除せず、しばらくの間は移行前のスキーマを残しておくという方法も取れる。
HTMLDB2.0からAPEX3.0の例でいえば、 FLOWS_020000が、HTMLDB2.0のスキーマで、新たにFLOWS_030000というスキーマが作成される。FLOWS_020000と関連するイメージファイル、marvel.conf(dads.confの場合もあり)を別途退避しておけば、その必要があればHTMLDB2.0環境へ戻すこともできる。

前置きが長くなったが作業再開。

尚、apexins.sqlでは、英語版がインストールされるので注意が必要、日本語リソースを別途インストールしないと、APEXのメニューなどは英語表記のままだ(online helpには日本語ヘルプは用意されていないようだ。)

ただし、日本語リソースをインストールしなくても、日本語を扱うアプリケーションは作成できる(ようだ)。
簡単に確認しただけなので、全く問題とは言い切れないが・・・・。


SYS> @apexins apex_master SYSAUX SYSAUX TEMP /i/
. ____ ____ ____ ____
. / ¥ | ¥ /¥ / | /
.| || / / ¥ | | |
.| ||--- ---- | | |--
.| || ¥ / ¥ | | |
. ¥____/ | ¥/ ¥ ¥____ |____ ¥____
.
. Application Express Installation.
...................................

F
-
2


FOO_USR
------------------------------
FLOWS_020000


PL/SQLプロシージャが正常に完了しました。


PL/SQLプロシージャが正常に完了しました。


レコードが選択されませんでした。


PL/SQLプロシージャが正常に完了しました。

I. O R A C L E S Y S I N S T A L L P R O C E S S
...create flows user

ユーザーが作成されました。

・・・・中略・・・・

......Message master_detail
......Message master_detail_edit
......Message master_detail_detail
......Message sw_empty_script
......Message sw_greater_than_30k
......Message confirm_create_master_detail
......Message confirm_3_page_master_detail
......Message confirm_2_page_master_detail
......Message confirm_master_table
......Message confirm_master_display_columns
......Message confirm_detail_table
......Message confirm_detail_display_columns
......Message confirm_master_sort
......Message confirm_include_master_report

・・・・中略・・・・

...PAGE 0: Page Zero
...PAGE 1: Application Builder
...PAGE 2: Supporting Objects
...PAGE 3: Breadcrumb Entries
...PAGE 4: Define Master Table
...PAGE 5: Define Detail Table
...PAGE 6: Item Label Grid Edit
...PAGE 7: Delete Multiple Items
...PAGE 8: Referenced Components
...PAGE 9: Shared Components

・・・・中略・・・・

...done load verification images
Verification Images Loadのタイミング。
経過: 00:00:01.13
VII. L O A D E N G L I S H D I C T I O N A R Y

トリガーが変更されました。

...10000 rows
...20000 rows
...30000 rows
...40000 rows
...50000 rows
...60000 rows
...70000 rows
English Dictionaryのタイミング。
経過: 00:04:56.56



Thank you for installing Oracle Application Express.

Oracle Application Express is installed in the FLOWS_030000 schema.

The structure of the link to the Application Express administration services is as follows:
http://host:port/pls/apex/apex_admin

The structure of the link to the Application Express development interface is as follows:
http://host:port/pls/apex

-- Now beginning upgrade. This will take several minutes.-------
-- Ensuring template names are unique -------
-- Migrating metadata to new schema -------
-- Switching builder to new schema -------
-- Migrating SQL Workshop metadata -------
-- Upgrading new schema. -------
-- Copying preferences to new schema. -------
-- Updating user account expiration. -------
Upgrade completed successfully no errors encountered.
-- Upgrade is complete -----------------------------------------
Upgradeのタイミング。
経過: 00:01:15.78
JOB_QUEUE_PROCESSES: 10

Performing Application Express component validation - please wait...

Completing registration process.
Validating installation.
Validate Installationのタイミング。
経過: 00:05:56.91
Complete Installationのタイミング。
経過: 00:31:02.26

● お約束、imagesフォルダの入れ替え。


このディレクトリは、前述のapexins.sqlで指定した /i/ という仮想ディレクトリにマッピングされている。
仮想ディレクトリ /i/ にマップされている実ディレクトリはmarvel.confで確認できる。
尚、利用しているHTTPサーバー毎に構成ファイルが異なるので要注意。詳細は、マニュアルの4.3.1.1 Copying the Images Directory When Upgradingを参照のこと。

G5Server:˜/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ ls -l images*
drw-rw---- 998 oracle oinstall 33932 Mar 17 20:19 images
drw-rw---- 1334 oracle oinstall 45356 Mar 10 22:10 images_1_5
G5Server:˜/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ mv images images_2_0
G5Server:˜/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ cp -rf /Volumes/DiscusWork/temp/apex/images .
G5Server:˜/u01/app/oracle/product/10.1.0/htmlDB/marvel oracle$ ls -l images*
drw-rw---- 881 oracle oinstall 29954 Mar 17 22:45 images
drw-rw---- 1334 oracle oinstall 45356 Mar 10 22:10 images_1_5
drw-rw---- 998 oracle oinstall 33932 Mar 17 20:19 images_2_0


● HTTPサーバーの構成ファイルの書き換え


利用しているHTTPサーバーに対応した構成ファイルをapex30向けに書き換える。
当環境では、marvel.confである。変更内容は以下の通り。

(余談だが、marvel.confを書き換えずに試したところ、特に問題もなくAPEX3.0が利用できた。URLのパスを変更したくない場合には、他のパラメータを変更するだけでも問題ないかもしれない。詳細未確認。)

G5Server:˜/u01/app/oracle/product/10.1.0/htmlDB/Apache/modplsql/conf oracle$ diff marvel.conf.org marvel.conf
2c2
< <Location /pls/htmldb>
---
> <Location /pls/apex>
7c7
< PlsqlDatabaseUsername HTMLDB_PUBLIC_USER
---
> PlsqlDatabaseUsername APEX_PUBLIC_USER
10c10
< PlsqlDefaultPage htmldb
---
> PlsqlDefaultPage apex
13c13
< PlsqlDocumentProcedure wwv_flow_file_manager.process_download
---
> PlsqlDocumentProcedure wwv_flow_file_mgr.process_download
15c15
< PlsqlNLSLanguage JAPANESE_JAPAN.JA16SJISTILDE
---
> PlsqlNLSLanguage JAPANESE_JAPAN.AL32UTF8
G5Server:˜/u01/app/oracle/product/10.1.0/htmlDB/Apache/modplsql/conf oracle$

今日はここまで、日本語リソースのインストールへつづく。



聞いている曲:

Howard Jones - The Peaceful Tour - Things Can Only Get Better Howard Jones - The Peaceful Tour - Things Can Only Get Better

| | | コメント (0) | トラックバック (0)

Mac De Apex3.0 #1

Apex3.0がリリースされたので、早速、HTML2.0やApex2.2から移行してみた。また、今回のリリースからいろいろと問題のあるSVGViewerへの対応として、Flashがサポートされたようなのでグラフ関係の動作も簡単に確認してみた。(各ブラウザがネイティブにSVGをサポートしてもらい、プラグインを必要としなくなるのが一番。ちなみにSafariでは、MacOSX 10.5からサポートされるようだ。

マニュアルによると、apex3.0へ移行できると記載されているリリースは

      1.5.0.00.33
      1.5.1.00.12
      1.6.0.00.87
      1.6.1.00.03
      2.0.0.00.49
      2.2.1.00.04
と記載されている

今回は、HTML2.0 2.0.0.00.49を利用して、apex3.0へ移行してみることにする。
(Apex2.2からApex3.0については別途試してみ予定だ。)


尚、HTML2.0からApex3.0への移行手順は、以前 HTMLDB2.0からApex2.2で行った手順とほぼ同じだが、OWAはパッチではなく別途upgradeが必要なので注意が必要だ。

また、MacOSX Serverのバージョンも最新版の 10.4.9 に、Oracle10g R1 10.1.0.3.0という環境で確認した。 (PowerMac G5 Dual 2.7Ghz RAM:1GB)


参考:http://d.hatena.ne.jp/satonaoki/20070328/p1

では、早速取りかかる。

尚、インストール手順や、インストール要件は、マニュアルにキッチリ記載されているので問題はないだろう。


● 移行前の事前確認

(1)HTMLDBのバージョン確認

> conn / as sysdba
接続されました。
SYS> select flows_020000.wwv_flows_release from dual;

WWV_FLOWS_RELEASE
------------------------------------------------------
2.0.0.00.49

SYS>


(2)表領域の空き容量確認

お遊び環境なので、SYSAUXは自動拡張にしてあり、容量は問題ない。

SYS> l
1* select file_name,tablespace_name,autoextensible from dba_data_files
SYS> /

FILE_NAME TABLESPACE_NAME AUT
---------------------------------------------------------------------- ------------------------------ ---
/Volumes/DiscusWork/4oracle/u02/oradata/tigerx/xtiger/users01.dbf USERS YES
/Volumes/DiscusWork/4oracle/u02/oradata/tigerx/xtiger/sysaux01.dbf SYSAUX YES
/Volumes/DiscusWork/4oracle/u02/oradata/tigerx/xtiger/undotbs01.dbf UNDOTBS1 YES
/Volumes/DiscusWork/4oracle/u02/oradata/tigerx/xtiger/system01.dbf SYSTEM YES
/Volumes/DiscusWork/4oracle/u02/oradata/tigerx/xtiger/example01.dbf EXAMPLE YES
/Volumes/DiscusWork/4oracle/u02/oradata/tigerx/xtiger/FLOW_1.dbf FLOW_1 YES

6行が選択されました。

SYS>


(3)shared_pool_sizeも要件通なので特に変更する必要もない

SYS> show parameter shared_pool_size

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
__shared_pool_size big integer 100M
shared_pool_size big integer 100M
SYS>


(4)Oracle TextとOracle XML Databaseはインストールされているので問題なし。

SYS> col version for a20
SYS> /

COMP_NAME VERSION STATUS
---------------------------------------- -------------------- -----------
Oracle Database Catalog Views 10.1.0.3.0 VALID
Oracle Database Packages and Types 10.1.0.3.0 VALID
Oracle Workspace Manager 10.1.0.2.0 VALID
JServer JAVA Virtual Machine 10.1.0.3.0 VALID
Oracle XDK 10.1.0.3.0 VALID
Oracle Database Java Packages 10.1.0.3.0 VALID
Oracle Expression Filter 10.1.0.3.0 VALID
Oracle interMedia 10.1.0.3.0 VALID
Oracle Data Mining 10.1.0.3.0 VALID
Oracle Text 10.1.0.3.0 VALID
Oracle XML Database 10.1.0.3.0 VALID
OLAP Analytic Workspace 10.1.0.3.0 VALID
Oracle OLAP API 10.1.0.3.0 INVALID
OLAP Catalog 10.1.0.3.0 VALID
Spatial 10.1.0.3.0 VALID
Oracle Ultra Search 10.1.0.3.0 VALID
Oracle Enterprise Manager 10.1.0.3.0 VALID

17行が選択されました。

SYS>


(5)OWA WebTool kitのバージョン確認


Web Toolkitについては、10.1.2.0.6以上が必要ということなので確認しておく。
http://download-west.oracle.com/docs/cd/B32472_01/doc/install.300/b32468/pre_require.htm#BABGBJJDより引用


2.7 PL/SQL Web Toolkit


Oracle Application Express requires the PL/SQL Web Toolkit version 10.1.2.0.6 or later. For instructions on determining the current version of the PL/SQL Web Toolkit, and for instructions on installing version 10.1.2.0.6, please review the README.txt file contained in the directory apex/owa.

SYS> select owa_util.get_version from dual;

GET_VERSION
--------------------------------------------------------------------------------
9.0.4.0.2

SYS>


となっている。Oracle10g R1のcompanion CDに含まれるOWA Web Toolkitは、Oracle9i時代のものに近いバージョンなので、ガイドで示されているリリースより古いことが多いので、この点はしっかり確認しておきたい。
今回、apex3.0への移行要件を満たすには、OWA Web Toolkitをアップデートするだけで良さそうだ。


以下、apex_3.0.zipを解凍して作成されるapex/owaディレクトリにある OWA Web Toolkit以降手順の引用

G5Server:/Volumes/DiscusWork/temp/apex/owa oracle$ view README.txt

PL/SQL Web Toolkit 10.1.2.0.6
-----------------------------

Application Express 3.0 requires PL/SQL Web Toolkit version 10.1.2.0.6 or greater.

As a convenience, the PL/SQL Web Toolkit 10.1.2.0.6 is included with Application Express 3.0
in the apex/owa directory. This version of the PL/SQL Web Toolkit is not a replacement for
subsequent versions of the PL/SQL Web Toolkit, as delivered with database patch sets or
Critical Patch Updates.

If the PL/SQL Web Toolkit version is lower than version 10.1.2.0.6, the included PL/SQL Web
Toolkit bundled with Application Express 3.0 should be installed prior to the installation of
Application Express 3.0.


To determine the PL/SQL Web Toolkit version, connect to the database as the SYS user and
run the query:

select owa_util.get_version from dual;


Installing the PL/SQL Web Toolkit 10.1.2.0.6
--------------------------------------------
1) Stop all applications using the database
2) Navigate to the directory apex/owa
3) Connect via SQL*Plus as the database user SYS
4) Run the PL/SQL Web Toolkit installation script by issuing: @owainst.sql
5) Review the output displayed from owainst.sql and ensure no errors were encountered.
6) Confirm the PL/SQL Web Toolkit version is 10.1.2.0.6 or greater by connecting to the database
as the SYS user and running the query:

select owa_util.get_version from dual;

7) Run the utlrp.sql script from the Oracle Database home to recompile all invalid PL/SQL
packages now instead of when the packages are accessed for the first time. This step is
optional but recommended. To run utlrp.sql, issue: @?/rdbms/admin/utlrp.sql


記載されている手順通りに実行すれば問題ない。

SYS> @owainst

PL/SQLプロシージャが正常に完了しました。


PL/SQLプロシージャが正常に完了しました。


PL/SQLプロシージャが正常に完了しました。


OWA_DBG_MSG
--------------------------------------------------------------------------------
Installed OWA version is: 9.0.4.0.2;
Shipped OWA version is : 10.1.2.0.6;
OWA packages v10.1.2.0.6 will be installed into your database v101030
Will install owadummy.sql and owacomm.sql




セッションが変更されました。


PL/SQLプロシージャが正常に完了しました。

エラーはありません。

パッケージが作成されました。

エラーはありません。

セッションが変更されました。

SYS> @?/rdbms/admin/utlrp

TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2007-03-19 19:06:55


PL/SQLプロシージャが正常に完了しました。


TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END 2007-03-19 19:07:36


PL/SQLプロシージャが正常に完了しました。

SYS>


念のため、OWA Web Toolkitのバージョンを確認しておく。

SYS> select owa_util.get_version from dual;

GET_VERSION
--------------------------------------------------------------------------------
10.1.2.0.6

SYS>

今日はここまで、次回へつづく。




聞いている曲 :
Chris "Big Dog" Davis, Kim Waters & Salena Gibbs - Smooth Jazz Plays Motown's Greatest Love Songs - Ain't No Mountain High Enough (USA)  
Chris "Big Dog" Davis, Kim Waters & Salena Gibbs - Smooth Jazz Plays Motown's Greatest Love Songs - Ain't No Mountain High Enough

| | | コメント (0) | トラックバック (0)

2007年3月17日 (土)

Oracle Application Express 3.0リリース

Oracle Application Express 3.0がOTN USでリリースされたようですね。MacOSXもsupportされているようなので早速ダウンロード。
簡単に遊んだ結果は後日。

| | | コメント (0) | トラックバック (0)

2007年3月15日 (木)

ある日の午後の鎌倉にて

久々にAPEX (旧HTML DB)ネタ。 

APEXでは、Adobe社から配布されるSVGViewer プラグインをインストールすれば円グラフ
(Pie chart、 そう、AppleのCMでおなじみのパイチャートのCMのあれ)
なども描画できる。 (FirefoxなどSVGをネイティブにサポートし始めているブラウザも多くなっているが、ユーザの多いはずのでIEはサポートしてくれるのかまだ不明。。MacOSX10.5 LeopardではSafariでもサポートし始めるらしい。2007/3/24追記

で、MacOSXのSafari2.0.4ではどうなのか試してみる。

まずは、AppleのCMをどうぞ。

Apple_pie_chart


MacOSXは、最新パッチを適用した 10.4.9 である。


SVGViewer プラグインの日本語Carbon版をダウンロードしてインストールしてみる。

あ、エラー!  10.4.9には対応していないか〜〜っ!。
Svgviewer_install_error
forumを見てみると、どうも、10.4.8でも同じような問題があるようだ。

だが、テストページで確認してみると、Firefox2及び、Safariのどちらも画像は表示されている。。。どういうこと???  
とりあえず、このままテストしてみることにしたのだが、APEXでパイチャートを表示しようとするとSafariはクラッシュしてしまった。あきらめて、Firefox2で試す事にした。(Safari風なFirefoxにしてます)



で、ある日の午後の鎌倉でまったりを表現した (笑) のが以下の円グラフ

Apex_de_pie_chart
日本語版SVGViewerをインストールしたのだが、前述のエラーの影響か? 日本語が化けるのでグラフ中の文言での日本語利用はあきらめた。。。。。
2007/3/16追記。

”Adobe to Discontinue Adobe SVG Viewer”だそうですね。
他のプラグインがあればそれはそれでいいのでしょうけど。。どおりで、リリース時期が古いわけだ。。。



尚、上記は、APEXのサンプルアプリケーションのデータを無理矢理書き換えて利用している。


●まずはバリバリ鎌倉画像を。。

Cimg2416_2 Cimg2419_2 Cimg2424
Cimg2458 Cimg2464_2



●そして、スタバでまったり・・・・。

Cimg2456

| | | コメント (0) | トラックバック (0)

2007年3月12日 (月)

アクアリウムのスクリーンセイバー

確定申告もなんとか終わり今日はホット一息。
(一時、妻のインフルエンザA型を貰ってしまうのではないかとビビリましたが、完璧に撃退して私自身は発症しなかったようです。ことしはこの調子で風邪などひかないようにしないと。。。)

さて、一息ついでに見つけたのが、MacOSX向けのScreen Saver 3D Desktop Aquarium Screen Saver

なかなかいいです。できれば、デフォルトで泳ぐ魚は、Discusにしれくれるともっとうれしかったが、こんなシェアウェアなら購入してもいいねぇ。

Desktopaquarium

| | | コメント (0) | トラックバック (0)

2007年3月 9日 (金)

multi-touchの噂

iPhoneのmulti-touchを見てからというもの、Appleのディスプレイにmulti-touchが組み込まれる可能性は高くなってきたと思っているし、そうなったら面白そうと感じていたのだが、そんな、”うわさ話”もちらほらと出てきているようですね。

まあ、multi-touchのデモを見ていると、iPhotoやApertureでの利用、はたまた、Google Earthで利用するようなイメージ、かなり進んで、キーボードレス化のデモまでありますから、導入されればタブレット型のMacBookなんてことも可能性としてはあるのかも。。。

multi-touchディスプレイが搭載されたら、そのディスプレイを保護するシート類や、クリーナー類の需要も増えそうですな。

Mac De Oracle内の関連記事:
https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2007/01/mac_de_oracle_i_1.html
https://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2006/03/pse_4633.html



妻がインフルエンザA型と診断され、少々熱っぽかった昨日、私も同じ病院で検査してもらった。。待つ事10分ほど、インフルエンザの反応はなし!! とは言っても、長い場合、潜伏期間は7日くらいになる可能性もあるということなので、油断しないように、睡眠をしっかりとるように心がけないと。。そういえば、先週後半、妻は、ブログの更新に熱心なあまり、夜中の2時ころまで起きていたことが続いていたが、それが影響したのかも。いつも私だけが風邪をひくのだが今年は逆かもしれない。。。

| | | コメント (0) | トラックバック (0)

2007年3月 6日 (火)

Mac De Oracle - UML Modeling Tool #2

http://www.visual-paradigm.com/ Visual Paradigm for UML はMacOSXでも動作するUML modeling toolの一つで最近のお気に入りなのだが、日本語のローカライズは、今のところ今ひとつと言ったところなので、英語のままで使っていたほうが良さそう。 日本からのダウンロード数の増加や、フィードバックが寄せられればもっと良くなりそうですけどね。

ちなみに、ダイアグラム中での日本語の利用には問題はないようだ。

日本語を選択できるとは知らなかった。。。。しかし。。。
Preference


日本語化されているところはまだまだ少ないし、 何故半角カナにしているんだろう? 全角カナで問題ないと思うが。。。paneの幅を気にしているんだろうか?  
ダイアグラム名などは英語のままでもよさそうな気がする。。
よく見るとメニューのプログラム名が "RV"なんて分け分からん名称になっている 英語モードだと "VP-UML"となっていたはず。。

Mimeattachment1

| | | コメント (0) | トラックバック (0)

2007年2月27日 (火)

Panther De Oracle10g 番外編というより訂正

記事としてはもう、随分前のものなのだが、Oracle10g や RAC絡みで資料やマニュアルの細部まで読んでいて気付いたマニュアルバグ(リリースノートバグか?)を修正しました。

Panther de Oracle10g その9にて、

Oracle 10g R1 for MacOSX Serverに付属するリリースノートに既知の問題として記載されていた部分に関するものである。

尚、日本語のリリースノートがOTNに残っていたのでリンクしておく。(いずれ修正されるかもしれないが。。)
http://otndnld.oracle.co.jp/document/products/oracle10g/101/mac/B15788-01.pdf

以下、Oracle10g R1 10.1.0.3.0のリリースノートからの引用。

Oracle Net Listenerの停止の停止の停止の停止
Mac OS X上で、listener stopコマンドを入力する前に、Oracle Names Server
(ONS)が実行されていることを確認します。 ONSが実行されていない場合、listener
stopコマンドにより、リスナーがハングする場合があります。 ONSを起動するには、
次のコマンドを入力します(Oracle Bug#4052405)。
$ onsctl start

これは、Panther de Oracle10g その9でも書いている通り、原文の直訳なので原文が間違っているのだからしかた無いかという感じではある。

MacOSXのOracle10g R1の onsctl (shell script)を覗くと、起動しているのは、$ORACLE_HOME/opmn/bin/onsなのである。
このことから Oracle Names Serverではなく、OPMNのOracle Notification Serverを起動していることが確認できる。

また、現在では(Oracle10g以降や、Oracle9iAS 9.0.2.0.1以降)では、ONSといえば、Oracle Notification ServerやOracle Notification Serviceの事を指すと考えても問題はないだろう。 
但し、Oracle Names Serverを利用しているところでの会話なら話は別なのでご注意を。。

ところで、 ONSは、Oracle Notification Server の略なのか、Oracle Notification Serviceの略なのか?? マニュアルを読むと圧倒的に Serverを指していることが多いのだが。。
http://www.oracle.co.jp/iSeminars/070215_1000/doc/iSeminar_RAC_Connection_1.pdf
http://otndnld.oracle.co.jp/document/products/as10g/1013/doc_cd/core.1013/B28581-01/intro.htm

| | | コメント (0) | トラックバック (0)

iPhoneのCM

こんなiPhoneのCMがアカデミー賞の場で上映されたとか、1984年のスーパーボウルで放映された伝説のCMの再来かとも?

iPhone、日本では一体どうなるのか??? 

参考
MYCOMジャーナル

| | | コメント (0) | トラックバック (0)

2007年2月26日 (月)

Mac De Oracle - 10万円 de RAC #43

10万円 de RACの最終回。PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認。JDeveloper10g R3 10.1.3編。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので) 
    SQL*Plus編/SQL Developer編/JDeveloper10g編
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今日は、PowerBook G4 (MacOSX10.4.8)の Oracle JDeveloper10g R3 10.1.3 for MacOSX Studio Editionからの接続確認を行う。

現時点(2007/2/25現在)での最新版である。

● 起動
スプラッシュ画面

Rac_de_oracle_jdev1

● connecttionの設定
jdbc thin driverにて接続。

Rac_de_oracle_jdev2

● emp表を問い合わせてみる。。

Rac_de_oracle_jdev3

と駆け足で接続確認まで行い。10万円 de RACも一旦終了。



いや〜〜、まいったなぁ。熱っぽい。30秒で体温を計れる体温計で体温を計ると、なんと37度?? なんかの間違いか? もう一度計り直す、36.6度。間を取って、36.8度くらいにしとこう。妻には早めに寝ろと言われるし。。まあ。言う事聞いて寝てやるか〜〜。風邪だったらまずいし。。。

| | | コメント (0) | トラックバック (0)

2007年2月25日 (日)

Mac De Oracle - 10万円 de RAC #42

10万円 de RACのつづき。PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認。Oracle SQL Developer 1.1編。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので) 
    SQL*Plus編/SQL Developer編
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今日は、PowerBook G4 (MacOSX10.4.8)の Oracle SQL Developer 1.1 Patch 1 (1.1.1.25.14) for MacOSXからの接続確認を行う。

現時点(2007/2/25現在)では最新版のOracle SQL Developerである。

● 起動
スプラッシュ画面

Rac_de_oracle_sqldev1

● connecttionの設定
jdbc thin driverにて接続。

Rac_de_oracle_sqldev_connection

● emp表を問い合わせてみる。。

Rac_de_oracle_sqldev2


ということで、PowerBook G4の Oracle SQL Developer 1.1 for MacOSXからの接続は確認できた。次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月24日 (土)

Mac De Oracle - 10万円 de RAC #41

10万円 de RACのつづき。PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認。SQL*Plus編。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. >簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので) SQL*Plus編
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



10万円 de RACも残すところ後少し、今日は、PowerBook G4 (MacOSX10.4.8)の SQL*Plusからの接続確認を行う。

● tnsnames.oraの設定

TAFの設定もしてあるが接続確認だけを行う。
Last login: Sat Feb 24 22:30:49 on ttyp4
Welcome to Darwin!
pb17:˜ oracle$ cat $ORACLE_HOME/network/admin/tnsnames.ora
ORCLTEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = discus1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = discus2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcltest.discus.info)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)

pb17:˜ oracle$

● /etc/hostsの設定

今回はDNSは利用していないのでhostsに設定した。
pb17:˜ oracle$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
192.168.1.3 discus1
192.168.1.4 discus2
192.168.1.5 arowana

#public virtual ip(vip) for Oracle RAC
192.168.1.100 discus1-vip
192.168.1.101 discus2-vip

pb17:˜ oracle$

● 環境変数NLS_LANGの設定

データベースのキャラクタセットに合わせて、AL32UTF8に設定し、SQL*Plusで接続確認を行った。
また、TerminalのキャラクタエンコーディングはUTF-8である。
pb17:˜ oracle$ echo $NLS_LANG
Japanese_Japan.JA16SJISTILDE
pb17:˜ oracle$ export NLS_LANG=japanese_japan.AL32UTF8
pb17:˜ oracle$ sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on 土 2月 24 22:39:36 2007

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

> conn system@orcltest
パスワードを入力してください:
接続されました。
SYSTEM> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl2

SYSTEM> show parameter service

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl.discus.info, orcltest
SYSTEM>
SYSTEM> select * from v$active_instances;

INST_NUMBER INST_NAME
----------- ------------------------------
1 discus1.macdeoracle.jp:orcl1
2 discus2.macdeoracle.jp:orcl2

SYSTEM> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining optionsとの接続が切断されました。

Macosx_client_sqlplus


ということで、PowerBook G4の Oracle10g R1 ClientのSQL*Plusからの接続は確認できた。次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月23日 (金)

10万円 de RAC 番外編 - EM10g DB Control

iSCSI-targetが消失してしまった件は流石に参ったが、復活した 10万円 de RAC環境で、
Oracle Enterprise Manager 10g Database Controlを起動する。

搭載メモリが512MBと少ないこともありモッサリとした動きだが、使えないこともないという感じです。


http://hostname:1158/em/ をSafariでアクセスすると Safariになんか最適化していません。と警告がでます。(ちょいと嫌みな言い回しに置き換えてみました。m(_ _)m
[an error occurred while processing this directive]
1

「OK」ボタンをクリック。
ログイン画面が表示されます。
[an error occurred while processing this directive]
2


SYSDBAでログインしてみます。
再度、Safariになんか最適化していません。と警告がでます。(ちょいと、しつこいです。)
[an error occurred while processing this directive]
3


「OK」ボタンをクリック。ライセンス情報画面が表示されます。
[an error occurred while processing this directive]
4


「同意します」ボタンをクリック。再度、ライセンス情報画面が表示されました。
(念には念ということでしょうか)
[an error occurred while processing this directive]
5
「OK」ボタンをクリック。クリック、クリック。全然先に進みません。。。


しかたないので、再度、http://hostname:1158/em/ にアクセスすると。。
やっと表示されましたね。。。いくつかの機能を操作して動作確認しています。。

[an error occurred while processing this directive]
6 7_1 8 9


一通り確認したので、ログアウト
[an error occurred while processing this directive]
A

ということで、Safariでも使えますね。

| | | コメント (0)

2007年2月22日 (木)

Mac De PL/SQL RSS Reader #28 - メモ

OTN-JフォーラムのFEEDはUS OTNと同じく、RSS2.0となっているようだ。(下記XMLソース抜粋参照のこと。)


item要素にはネームスペースで拡張された、jf:creationDate要素や、jf:author要素は存在するが、author要素や、pubDate要素が存在しない。

そのため、FirefoxやSarafi、Google RSS readerなどでは、投稿者や日時が表示されない。
US OTNの場合と同じなのだが、投稿日があると便利でしょと思うのは私だけ?

Safariでは投稿日関連する要素が存在しない場合には、FEEDを取込んだ日時を表示してくれるので、多少は助かる。
Safari


Firefox2では、日時表示は全くない(pubDate要素がないので当然だが。。)
Firefox2


Google ReaderでもFirefox2に同じ。
Googlerssreader

リニューアルついでなので、author要素や、pubDate要素くらい追加してもらえるといいのだが・・・OTN-Jさん。。。と思いつつ。。





ということで、Apex2.2に組み込んだPL/SQLのRSS FEED Readerのコードを変更するのもいいかと思い始めた。


例えば、OTNのRSS2.0 FEEDのように、item要素には、pubDate要素が含まれず、名前空間で拡張されたjf:creationDate要素がある場合、
RSS FEED Reader側で、どのネームスペースのどの要素を使うかなんて設定できるようにすれば、便利かな〜〜と思った次第。。
(あと、jf:createDate要素値は、rfc822形式のようだが、曜日が日本語表記なので、英語表記へ変換する必要あり。(現行のコードのままだと例外が飛ぶはずなので、それも含め、コードの見直しを考えてみますか。。。

<rss version="2.0" xmlns:jf="http://www.jivesoftware.com/xmlns/jiveforums/rss">
<channel>
・・・・中略・・・・
<item>
<title>Re: 追記: 名前空間を使用したXqueryの使用方法に関して</title>
<link>http://otn.oracle.co.jp/forum/thread.jspa?messageID=35001142&tstart=0#35001142</link>

<description><![CDATA[名前空間のURLが間違っているのでは? (.xsd が抜けているとか。)]]></description>

<jf:creationDate>金, 09 2 2007 18:55:56 +0900</jf:creationDate>
<jf:modificationDate>金, 09 2 2007 18:55:56 +0900</jf:modificationDate>
<jf:author>xxxxxx</jf:author>
<jf:replyCount>0</jf:replyCount>
</item>
・・・・以下略・・・・

| | | コメント (2) | トラックバック (0)

2007年2月21日 (水)

Mac De Oracle - 10万円 de RAC 番外編 - 消えたiscsi-target

さて、スタバで Coffee break中。。。ついでなので、記事もアップ。

消えたiscsi-targetの謎。。。の続きです。

原因は分かったのだが、その原因に気付く前にOpenfilerも含めて再構築してしまったため、備忘録の意味も含むめて載せておく。
(再構築でも結構楽しめましたけどね)

Mac De Oracle - 10万円 de RAC #40


今日、Oracle RACを起動して、MacOSXのOracle Clientから接続した例や、更新系トランザクションのFAILOVERの例を作ろうと思っていたら、なんと、共有DISK(iSCSI)が起動しない。
Openfilerの管理画面やコマンドで確認してみても、iscsi-target サービスの起動が失敗している。。。

と書いたが、その原因は、どうも、Openfilerがkernelを自動更新しており、その際、iscsi-trgtモジュールが含まれていなかったのが原因であることに気がつく。。
”自動更新"かよ〜〜〜っ。 しかも、iscsi-trgtモジュールが無いなんて。。。。
そういえば、grubのカーネル選択画面に、当初インストールした 2.6.17....ではなく2.6.19...が現れていたことを今更ながら、思い出す。。。

なぜ、それに気付いたのか???
当初、原因が分からず(iscsi_trgtモジュールが本当に消えていたことは確認していたが。。)元々少々調子が怪しいDISKを使っていた影響か?? 
などと思い込んでいたこともあり Openfiler2.1を再インストールし、RACを最初から再構築した。その後、grubの選択画面にリストされるkernelのバージョンの違いなどに気付いたという次第。。。トホホ。。
もっと早く気付けば、あまり手間をかけずに回復できたかも。。。。しれない。。

いろいろと調べていると、iscsi-targetの起動エラーメッセージは以下のようなものであった。


Starting ISCSI target service: FATAL: module iscsi_trgt not found.
netlink fd :connection refused

上記メッセージを元に検索すると、少々異なる部分もあるが、過去にも類似した問題があったことを知る。
原文は、こちらを参照のこと。

以下内容を抜粋

I just updated OpenFiler? 2.0 beta 1 to the latest packages using 'yum update', but after a restart of the system iscsi didn't work anymore. One of the updates was a kernel update, 2.6.9-34.EL.

Looking at /var/log/messages I saw that iscsi daemon was unable to start because of netlink:

Mar 11 20:32:09 openfiler ietd: nl_open -1 Mar 11 20:32:09 openfiler ietd: netlink fd Mar 11 20:32:09 openfiler ietd: : Connection refused Mar 11 20:32:09 openfiler iscsi-target: ietd startup failed

orz




現在、Openfilerは2.1の状態でiscsi-targetも正常に起動動作している。


だが、Openfilerは自動アップデート設定がデフォルトだとすると一体なにが、動いているのか? というところが気にった。
それを止めないと、また同じことが起こる可能性もあるため、手動更新に変更したいと思っていたのだが、これまた、資料がなかなら見つからない。。
Openfiler2.1には、up2dateやyumはOpenfiler2.1にはインストールされていない。。。なにが動いてんの??? 

と、しばし考え込む。。。。。。

Openfilerは、rPath Linuxをベースにしていることを思い出した。なじみの無いDistributionなのでrPath Linuxのサイトで調べると、、、書いてましたよ。
conaryというパッケージ管理が利用されているとのこと。

自動実行されているようなのだが、cronでもchkconfigでも、それらしい設定は見つからない。。。。どんどんMacOSXと離れてく〜〜。
さらに調べて行くと、conaryのwikiに、

Configuring Conary to Automatically Search a Given Label
To configure Conary to automatically search a given label you must use a text editor to add the label to Conary's main configuration file, /etc/conaryrc.

という記述があり、/etc/conaryrcが、Openfiler2.1に存在していた。このファイルを削除するか、パラメータをコメントアウトしてしまえばなんとかなるかも。。。。。

ということで、これでkernelの自動更新を止められたのか全く自信なし!。と自信を持って書いておくが(爆)、
ひとまず、conaryrcに定義されている全パラメータをコメントアウトし、模様を見つつ、conaryopenfilerについては別途、情報収集しようということに。。。しておく。。


[root@arowana ˜]# cat /etc/conaryrc
#installLabelPath openfiler.rpath.org@rpl:devel conary.rpath.com@rpl:1
#pinTroves kernel.*
#includeConfigFile /etc/conary/config.d/*
#autoResolve True
[root@arowana ˜]#


#ちなみに、conaryでupdateした場合、rollbackもできるようで、もし、意図せず更新されてしまった場合には過去のバージョンへ戻せるようだ。もっと早く気付けばよかった。。。


#お遊び用途で構築したOracle RACですが、。。。結構いろいろと楽しませてくれますね。openfiler! (^^)

| | | コメント (0) | トラックバック (1)

Mac De PL/SQL RSS Reader番外編-OTN-J Forum RSS FEED配信開始記念?!

2月1日からOTN-JのForumがリニューアルされ、US OTNのForumのように新規投稿がRSS FEEDで配信されるようになった。(やっとと言った感じ。US OTNに遅れること。。。?年という感じなので待ちくたびれていたところだった。。。)

さっそく、Safariで、会議室のFEEDをブックマークしてみるとUS OTNのように新着記事が取込まれている。。
クリックして各記事を眺めてみても問題なさそうだなぁ。
と思い、折角だから、Apex2.2に組み込んだ RSS READERで試しはじめたころから、リニューアルしたフォーラムの問題に気づき始める。。。。

まず、以前にも試していた、PL/SQLでRSS FEED ReaderをApex2.2に組み込み、OTN-JのFEEDを取込むと、、、なんと、パースエラー!
ん? このエラーは、以前にも見たような気がする。。が、ちゃんとUTL_HTTPパッケージを利用し、UTF-8で取込むことで回避したはずだ。。おかしい。。Safariでは文字化けなど発生していない!!

Xml_parse_error_plsql


そこで、MacOSX版 Firefox2でプレビューモードにしてOTN-JのFEEDを取込んでみると。。。
お〜〜〜。見事にXMLパースエラー!!

Xml_parse_error


ところが、再度行うと、今度は、文字化け!
さらに不思議なことに、、、ブックマークしたFEEDのエントリは文字化けしていないではないか??(なんだこりゃ!)

Xml_no_parse_error_but


その後、何度か試していると、上手く取込める場合、XMLパースエラーになる場合、パースエラーにはならないが文字化けする状態がランダムに発生することが分かった。
UTF-8以外の文字コードで送信されてしまう状態がランダムに発生しているようにみえた。(・・・経路が違うのかもしれない。例えばキャッシュを経由した場合とそれ以外のように、。。と勝ってに想像したりしている。)

そして、OTN-Jがリニューアルされてから、9日目のこと、Firefox2上でのFeedの文字化けも収まった?模様?で、文字化けやXMLパースエラーにはお目にかからなくなった。


ということで、再度、Apex2.2に組み込んだPL/SQLで作成したFEED READERで、OTN-JのXMLの部屋のFEEDを取込んでみた。


(再生にはQuickTimeが必要です。)

[an error occurred while processing this directive]apex2.2

なんとか、読めるようになりましたね。。。。。OTN-J様。ご苦労さまです。m(_ _)m。

| | | コメント (0) | トラックバック (0)

2007年2月20日 (火)

10万円 de RAC 番外編 - Cluster Databaseの削除

さて、Oracle RACを構築中、ちょっとした確認漏れから、データベースだけを再作成したことは以前書いていたが、その際、データベースをDBCA (Database Configuration Assistant)を利用し削除した模様を番外編として載せておくことにする。

お約束であるユーザーの等価化操作はお忘れなく。
尚、環境変数LANGは、事前に un_US.UTF-8に変更済みである。

[oracle@discus1 ˜]$ exec /usr/bin/ssh-agent $SHELL
[oracle@discus1 ˜]$ /usr/bin/ssh-add
Enter passphrase for /u01/app/oracle/.ssh/id_rsa:
Identity added: /u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa)
Identity added: /u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa)
[oracle@discus1 ˜]$ ssh discus1 "date;hostname"
Sun Jan 14 13:43:34 JST 2007
discus1.macdeoracle.jp
[oracle@discus1 ˜]$ ssh discus2 "date;hostname"
Sun Jan 14 13:43:56 JST 2007
discus2.macdeoracle.jp
[oracle@discus1 ˜]$
[oracle@discus1 ˜]$ $ORACLE_HOME/bin/dbca &

オペレーション自体は簡単なので解説はしないが、その模様はQuickTimeムービーでご覧ください。

(再生にはQuickTimeが必要です。)
dbca

| | | コメント (0) | トラックバック (0)

2007年2月19日 (月)

Mac De Oracle - 10万円 de RAC #40

10万円 de RACのつづき。簡単なTransparent Application Failover (TAF)の確認。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Transparent Application Failover (TAF)を確認する。

とは言っても、大掛かりな方法で確認する訳ではなく、SQL*PlusとSQLを利用したお手軽な方法で行う。



オリジナルと異なるところは、環境変数NLS_LANGが、日本語のキャラクタセットだというところだけなので、特に追記することもなく、一気に確認を。

CentOSがUTF-8ベースであることもあり、環境変数LANG=ja_JP.UTF-8、環境変数NLS_LANG=japanese_japan.AL32UTF8 としてある。データベースキャラクタセットもAL32UTF8としてある。
MacOSXのTerminalは、これらに併せて、UTF-8に設定してある。(以下に示す確認では、日本語を表示することもないのだが、環境としてはそのようになっている。)

尚、手順など、OTN USの元ネタ「29. Transparent Application Failover (TAF)」とほぼ同様なのでそちらも参照されたい。

● tnsnames.oraには、以下のような設定があるはずである。

FAILOVER_MODEパラメータを見てもらうと分かるが、FAILOVERのタイプは、SELECTで、方法は、BASICとなっている。
これは、ノードAに接続しselect文を実行していたセッションは、ノードAに障害が発生しFAILOVERした場合でもノードBに引き継がれ、何事も無かったかのように処理が継続されることを意味する。
また、ノードAに接続し、insert文、update文、delete文のいずれかを実行していたセッションは、FAILOVERが発生した場合、ノードBにセッションは引き継がれ、所定の回復措置を行ったあとで処理(アプリケーション側でのハンドリングを必要とする)を継続できることを意味する。(所定の回復措置とは、FAILOVERが発生したことを示すエラーをキャッチし、現行トランザクションをロールバックし、トランザクションを再開始することを意味する)

ORCLTEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = discus1-vip.macdeoracle.jp)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = discus2-vip.macdeoracle.jp)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.discus.info)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)

以下、SQL*Plusで接続し、問い合せを実行後、接続しているインスタンス(下記例では、orcl2)をshutdown abortで強制停止し、意図的にFAILOVERを発生させた。その後、同じ問い合せを実行すると接続しているインスタンスは、Cluster内で起動している残りのインスタンス(下記例では、orcl1)に切り替わっていることが確認できる。その際、FAILOVERによるエラー等は一切発生しない。更新トランザクションのFAILOVERについては別エントリで。

SQL> col instance_name for a13
SQL> col failover_method for a15
SQL> col failed_over for a11
SQL> col failover_type for a10
SQL> col host_name for a26
SQL> l
1 select
2 instance_name,
3 host_name,
4 null as failover_type,
5 null as failover_method,
6 null as failed_over
7 from
8 v$instance
9 union
10 select
11 null,
12 null,
13 failover_type,
14 failover_method,
15 failed_over
16 from
17 v$session
18 where
19* username = 'SYSTEM'
SQL> /

INSTANCE_NAME HOST_NAME FAILOVER_T FAILOVER_METHOD FAILED_OVER
------------- -------------------------- ---------- --------------- -----------
orcl2 discus2.macdeoracle.jp
SELECT BASIC NO

SQL>
SQL> !
[oracle@discus1 ˜]$ srvctl status database -d orcl
Instance orcl1 is running on node discus1
Instance orcl2 is running on node discus2
[oracle@discus1 ˜]$ srvctl stop instance -d orcl -i orcl1 -o abort
[oracle@discus1 ˜]$ srvctl status database -d orcl
Instance orcl1 is not running on node discus1
Instance orcl2 is running on node discus2
[oracle@discus1 ˜]$ srvctl start instance -d orcl -i orcl1
[oracle@discus1 ˜]$ srvctl status database -d orcl
Instance orcl1 is running on node discus1
Instance orcl2 is running on node discus2
[oracle@discus1 ˜]$ srvctl stop instance -d orcl -i orcl2 -o abort
[oracle@discus1 ˜]$ srvctl status database -d orcl
Instance orcl1 is running on node discus1
Instance orcl2 is not running on node discus2
[oracle@discus1 ˜]$ exit
exit

SQL> /

INSTANCE_NAME HOST_NAME FAILOVER_T FAILOVER_METHOD FAILED_OVER
------------- -------------------------- ---------- --------------- -----------
orcl1 discus1.macdeoracle.jp
SELECT BASIC YES

SQL>


次回へつづく。



今日、Oracle RACを起動して、MacOSXのOracle Clientから接続した例や、更新系トランザクションのFAILOVERの例を作ろうと思っていたら、なんと、共有DISK(iSCSI)が起動しない。

Openfilerの管理画面やコマンドで確認してみても、iscsi-target サービスの起動が失敗している。。。
ということで、10万円 De RACの次回投稿は、環境の回復後ということになってしまった。(いやはや、最悪は再構築か??? まぁ、そうなった場合でもたいした手間ではないのだが。。。。一度、やり直しているし。openfilerのiscsi-targetサービスが起動すれば全ては解決できることなので、もしかすると意外に簡単なことなのかもしれないが。。。) 

何はともあれ、続きは書くのでご安心を。

| | | コメント (0) | トラックバック (0)

2007年2月18日 (日)

Mac De Oracle - 10万円 de RAC #39

10万円 de RACのつづき。Clusterの開始と停止の確認。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Clusterの開始と停止の確認を行う。

オリジナルと異なるところは、環境変数NLS_LANGが、日本語のキャラクタセットだというところだけなので、特に追記することもなく、一気に確認を。
CentOSがUTF-8ベースであることもあり、環境変数LANG=ja_JP.UTF-8、環境変数NLS_LANG=japanese_japan.AL32UTF8 としてある。データベースキャラクタセットもAL32UTF8としてある。
MacOSXのTerminalは、これらに併せて、UTF-8に設定してある。

尚、手順など、OTN USの元ネタ「28. Starting / Stopping the Cluster」とほぼ同様なのでそちらも参照されたい。


下記例は、discus1で実施したものである。

[oracle@discus1 ˜]$ echo $ORACLE_SID
orcl1
[oracle@discus1 ˜]$ emctl stop dbconsole
TZ set to Japan
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://discus1.macdeoracle.jp:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
... Stopped.
[oracle@discus1 ˜]$ srvctl stop instance -d orcl -i orcl1
[oracle@discus1 ˜]$ srvctl stop asm -n discus1
[oracle@discus1 ˜]$ srvctl stop nodeapps -n discus1
[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 日 1月 14 22:15:46 2007

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

SQL> conn sys@orcltest as sysdba
パスワードを入力してください:
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
orcl2

SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining optionsとの接続が切断されました。
[oracle@discus1 ˜]$ srvctl start nodeapps -n discus1
[oracle@discus1 ˜]$ srvctl start asm -n discus1
[oracle@discus1 ˜]$ srvctl start instance -d orcl -i orcl1
[oracle@discus1 ˜]$ emctl start dbconsole
TZ set to Japan
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://discus1.macdeoracle.jp:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 10g Database Control ................... started.
------------------------------------------------------------------
Logs are generated in directory /u01/app/oracle/product/10.2.0/db_1/discus1_orcl1/sysman/log
[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 日 1月 14 22:20:45 2007

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

SQL> conn sys@orcltest as sysdba
パスワードを入力してください:
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
orcl2

SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining optionsとの接続が切断されました。
[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 日 1月 14 22:21:29 2007

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

SQL> conn / as sysdba
接続されました。
SQL>
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
orcl1

SQL>

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月17日 (土)

10万円 de RAC 番外編 - X11

Mac De Oracle - 10万円 de RAC #6で、OUIなどのGUIの操作は、VNC(今回は、Chicken of the VNC)を利用したと書いたが、他の方法として、sshX11 forwarding を利用する方法もあるので、MacOSXのX11を利用した例も載せておくことにする。

尚、MacOSXでは、 X11はオプションであるためデフォルトではインストールされない。もし利用するのであれば、追加インストールする必要がある。

MacOSXのX11がインストール済みであれば、リモートマシンの /etc/ssh/ssh_configで、forwardX11Trustedを"yes"に変更後、 MacOSXのxtermからssh -Y [user@]hostで接続すれば、 MacOSXのxtermからリモートホストのX11ベースアプリケーションが起動できる。


今回は、PowerBook G4(192.168.1.13) の xtermから、Oracle RACを構成するノードの一つ(discus1 : 192.168.1.3)に接続し、OUI (Oracle Universal Installer)を起動した例を載せておく。


X11_forwarding1

尚、環境変数LANGをen_US.UTF-8に設定しているが、Cでも問題ないだろう。

pb17:˜ discus$ echo $DISPLAY
:1.0
pb17:˜ discus$ ssh -Y oracle@discus1
The authenticity of host 'discus1 (192.168.1.3)' can't be established.
RSA key fingerprint is bf:2a:13:07:0a:d0:73:02:7c:af:e2:8c:7e:62:0d:33.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'discus1,192.168.1.3' (RSA) to the list of known hosts.
oracle@discus1's password:
Last login: Sat Feb 17 00:44:03 2007 from 192.168.1.13
[oracle@discus1 ˜]$
[oracle@discus1 ˜]$
[oracle@discus1 ˜]$ export LANG=en_US.UTF-8
[oracle@discus1 ˜]$
[oracle@discus1 ˜]$ $ORACLE_HOME/oui/bin/runInstaller &
[1] 1612
[oracle@discus1 ˜]$ Starting Oracle Universal Installer...

No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2007-02-17_12-52-27AM.
Please wait......
Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999, 2005, Oracle. All rights reserved.


X11_forwarding2
X11_forwarding3
X11_forwarding4
X11_forwarding5


[1]+  Done                    $ORACLE_HOME/oui/bin/runInstaller
[oracle@discus1 ˜]$

といった感じ。


参考:
X Window System
X11 forwarding
ADC Technical Q&A QA1232
ssh_config




さて、明日は石垣島在住の友人が石垣牛を持って、久々に遊びにくるのだが、石垣牛をどう料理するか。。
シンプルに塩、胡椒だろうか。。やはり。。
石垣牛は、2000年の沖縄サミットの晩餐会のメインディッシュを飾ったということなので、それといっしょに、あのCoCoファームGRAND CUVEE NOVOを開けるのもいいか。。。

| | | コメント (0) | トラックバック (0)

Mac De Oracle - 10万円 de RAC #38

10万円 de RACのつづき。Oralce RAC ClusterとDatabase構成の確認。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oralce RAC ClusterとDatabase構成の確認を行う。

オリジナルと異なるところは、環境変数NLS_LANGが、日本語のキャラクタセットだというところだけなので、特に追記することもなく、一気に確認を。
CentOSがUTF-8ベースであることもあり、環境変数LANG=ja_JP.UTF-8、環境変数NLS_LANG=japanese_japan.AL32UTF8 としてある。データベースキャラクタセットもAL32UTF8としてある。
MacOSXのTerminalは、これらに併せて、UTF-8に設定してある。

尚、手順など、OTN USの元ネタ「27. Verify the RAC Cluster & Database Configuration」とほぼ同様なのでそちらも参照されたい。


以下の確認作業は、Oracle RACの全ノードで実施する。(下記例は、discus1から実施したもの)

[oracle@discus1 ˜]$ srvctl status database -d orcl
Instance orcl1 is running on node discus1
Instance orcl2 is running on node discus2
[oracle@discus1 ˜]$ srvctl status instance -d orcl -i orcl2
Instance orcl2 is running on node discus2
[oracle@discus1 ˜]$ srvctl status service -d orcl -s orcltest
Service orcltest is running on instance(s) orcl2, orcl1
[oracle@discus1 ˜]$ srvctl status nodeapps -n discus1
VIP is running on node: discus1
GSD is running on node: discus1
Listener is running on node: discus1
ONS daemon is running on node: discus1
[oracle@discus1 ˜]$ srvctl status asm -n discus1
ASM instance +ASM1 is running on node discus1.
[oracle@discus1 ˜]$ srvctl config database
orcl
[oracle@discus1 ˜]$ srvctl config database -d orcl
discus1 orcl1 /u01/app/oracle/product/10.2.0/db_1
discus2 orcl2 /u01/app/oracle/product/10.2.0/db_1
[oracle@discus1 ˜]$ srvctl config nodeapps -n discus1 -a -g -s -l
VIP exists.: /discus1-vip.macdeoracle.jp/192.168.1.100/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.
[oracle@discus1 ˜]$ srvctl config asm -n discus1
+ASM1 /u01/app/oracle/product/10.2.0/db_1
[oracle@discus1 ˜]$

[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 金 1月 12 00:37:21 2007

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

SQL> conn / as sysdba
接続されました。
SQL> l
1 select
2 inst_id,
3 instance_number inst_no,
4 instance_name inst_name,
5 parallel,
6 status,
7 database_status db_status,
8 active_state state,
9 host_name host
10 from
11 gv$instance
12 order by
13* inst_id
SQL> /

INST_ID INST_NO INST_ PARALLEL STAT DB_STATU STATE HOST
---------- ---------- ----- --------- ---- -------- -------- ----------------------
1 1 orcl1 YES OPEN ACTIVE NORMAL discus1.macdeoracle.jp
2 2 orcl2 YES OPEN ACTIVE NORMAL discus2.macdeoracle.jp

SQL>
SQL> l
1 select name from v$datafile
2 union
3 select member from v$logfile
4 union
5 select name from v$controlfile
6 union
7* select name from v$tempfile
SQL> /

NAME
--------------------------------------------------------------------------------
+FLASH_RECOVERY_AREA/orcl/controlfile/current.268.611867601
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_1.269.611867617
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_2.270.611867647
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_3.271.611873595
+FLASH_RECOVERY_AREA/orcl/onlinelog/group_4.272.611873627
+ORCL_DISK_GRP1/orcl/controlfile/current.277.611867599
+ORCL_DISK_GRP1/orcl/datafile/example.262.611867781
+ORCL_DISK_GRP1/orcl/datafile/indx.270.611876095
+ORCL_DISK_GRP1/orcl/datafile/sysaux.257.611867731
+ORCL_DISK_GRP1/orcl/datafile/system.267.611867671
+ORCL_DISK_GRP1/orcl/datafile/undotbs1.258.611867715
+ORCL_DISK_GRP1/orcl/datafile/undotbs1.269.611876347
+ORCL_DISK_GRP1/orcl/datafile/undotbs2.265.611876455
+ORCL_DISK_GRP1/orcl/datafile/undotbs2.275.611867793
+ORCL_DISK_GRP1/orcl/datafile/users.274.611867809
+ORCL_DISK_GRP1/orcl/onlinelog/group_1.276.611867607
+ORCL_DISK_GRP1/orcl/onlinelog/group_2.268.611867637
+ORCL_DISK_GRP1/orcl/onlinelog/group_3.273.611873585
+ORCL_DISK_GRP1/orcl/onlinelog/group_4.271.611873619
+ORCL_DISK_GRP1/orcl/tempfile/temp.272.611867743

20行が選択されました。

SQL>
SQL> l
1 select path
2 from
3 v$asm_disk
4 where
5 group_number in
6 (
7 select group_number
8 from
9 v$asm_diskgroup
10 where
11 name = 'ORCL_DISK_GRP1'
12* )
SQL> /

PATH
--------------------
ORCL:VOL1
ORCL:VOL2

SQL>

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月16日 (金)

Mac De Oracle - 10万円 de RAC #37

10万円 de RACのつづき。表領域の作成と変更。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、表領域の作成と変更を行う。

尚、手順など、OTN USの元ネタ「26. Create / Alter Tablespaces」とほぼ同様なのでそちらも参照されたい。

クラスタデータベースの作成も無事終わり、お遊び用データベースの環境をそれなりに整えておくことにする。
尚、以降にリストされるファイル名は、OMF(Oracle Managed Files)ファイルであるため、環境が異なれば名称もことなることにご注意を。私の環境では以下のようなファイル名になっているだけなのである。

SQL*Plusを起動し、sysdbaユーザとして接続後、 scottユーザの作成及び、権限付与、USERS表領域の拡張(データファイルサイズの拡張)、SYSTEM、SYSAUX表領域の拡張(データファイルサイズの拡張)、UNDOTBS1とUNDOTBS2表領域の拡張(データファイルの追加)、一時表領域の拡張(データファイルサイズの拡張)などをダ〜〜〜〜〜ッとやっちゃいます。
(クラスタデータベースは作成されているので、どちらのノードから接続しても同じです。以下の例では、discus1で SQL*Plusを起動して接続しています)

[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 1月 11 23:00:06 2007

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

SQL> conn / as sysdba
パスワードを入力してください:
接続されました。

SQL> l
1 select
2 tablespace_name,file_name
3 from
4 dba_data_files
5 union
6 select
7 tablespace_name,file_name
8 from
9* dba_temp_files
SQL> /

TABLESPACE_NAME FILE_NAME
-------------------- ------------------------------------------------------------
EXAMPLE +ORCL_DISK_GRP1/orcl/datafile/example.262.611867781
SYSAUX +ORCL_DISK_GRP1/orcl/datafile/sysaux.257.611867731
SYSTEM +ORCL_DISK_GRP1/orcl/datafile/system.267.611867671
TEMP +ORCL_DISK_GRP1/orcl/tempfile/temp.272.611867743
UNDOTBS1 +ORCL_DISK_GRP1/orcl/datafile/undotbs1.258.611867715
UNDOTBS2 +ORCL_DISK_GRP1/orcl/datafile/undotbs2.275.611867793
USERS +ORCL_DISK_GRP1/orcl/datafile/users.274.611867809

7行が選択されました。

SQL>
SQL> create user scott identified by xxxxxx
2 default tablespace users
3 temporary tablespace temp
4* quota unlimited on users
SQL> /

ユーザーが作成されました。

SQL> grant create session,create table,create procedure,alter session to scott;

権限付与が成功しました。

SQL> conn scott/xxxxxx
接続されました。
SQL> conn / as sysdba
接続されました。
SQL>
SQL> alter database datafile '+ORCL_DISK_GRP1/orcl/datafile/users.274.611867809' resize 1024m;

データベースが変更されました。

SQL> create tablespace indx datafile '+ORCL_DISK_GRP1' size 1024m
2 autoextend off
3 extent management local autoallocate
4 segment space management auto;

表領域が作成されました。

SQL> alter database datafile '+ORCL_DISK_GRP1/orcl/datafile/system.267.611867671' resize 800m;

データベースが変更されました。

SQL> alter database datafile '+ORCL_DISK_GRP1/orcl/datafile/sysaux.257.611867731' resize 500m;

データベースが変更されました。

SQL> alter tablespace undotbs1 add datafile '+ORCL_DISK_GRP1' size 1024m
2 autoextend on next 50m maxsize 2048m;

表領域が変更されました。

SQL> alter tablespace undotbs2 add datafile '+ORCL_DISK_GRP1' size 1024m
2 autoextend on next 50m maxsize 2048m;

表領域が変更されました。

SQL> alter database tempfile '+ORCL_DISK_GRP1/orcl/tempfile/temp.272.611867743' resize 1024m;

データベースが変更されました。

SQL>
SQL> l
1 select
2 t.status,
3 t.tablespace_name,
4 t.contents as "TS Type",
5 t.extent_management as "Ext.Mgt.",
6 t.segment_space_management as "Seg.Mgt.",
7 sum(f.bytes) as "TS size"
8 from
9 dba_tablespaces t join dba_data_files f
10 on t.tablespace_name = f.tablespace_name
11 group by
12 t.status,
13 t.tablespace_name,
14 t.contents,
15 t.extent_management,
16 t.segment_space_management
17 order by
18* t.tablespace_name
SQL> /

STATUS TABLESPACE_NAME TS Type Ext.Mgt. Seg.Mgt. TS size
--------- --------------- ------------ -------- -------- ----------
ONLINE EXAMPLE PERMANENT LOCAL AUTO 157286400
ONLINE INDX PERMANENT LOCAL AUTO 1073741824
ONLINE SYSAUX PERMANENT LOCAL AUTO 524288000
ONLINE SYSTEM PERMANENT LOCAL MANUAL 838860800
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1283457024
ONLINE UNDOTBS2 UNDO LOCAL MANUAL 1283457024
ONLINE USERS PERMANENT LOCAL AUTO 1073741824

7行が選択されました。

SQL>


Terminal

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月15日 (木)

Speech Recognition

「秋元@サイボウズラボ・プログラマー・ブログ:Vistaの音声認識でPerlプログラミング」。で紹介されているYouTubeの音声認識との格闘?!が面白しろいのなんの、久々に腹筋が痛くなるほど笑ってしまった。。。



ところで、Macにも、System 7.x?/漢字Talk 7?(その頃はPlain Talkと呼ばれていた!)の時代からSpeech recognition機能が存在している。
そう、MacOSが、cooperative multitasking(non-preemptive multitaskingと言ったほうが分かりやすいか?) だったころから存在している。

当時、どのような使い道があるのか試したくて遊んでいたのだが、その時の感想として、「音声リモコン替わりには使えるかも」という感想だったと記憶している。やはりなかなか認識してくれない言葉もありイライラしたこともあった。(YouTubeの映像でも伝わってくるイライラ感は、日本人の私にも、というか英語の発音大丈夫?って感じの私でもよくわかります。はい。)
結局、私の英語の発音がダメなのね。と妙に納得してしまった(笑)。。という記憶はある。


MacOSXの時代となった今、MacOSXのSpeech Recognition機能はどうなったのか??
存在してます、今でもしっかりと。(ただ、MacOSXになってから使ったことないですけど。。)

おかげで、久々にちょっと遊びたくなってきましたねぇ。。。

Control_panel


Vistaの音声認識にセキュリティーホールがあるという記事もあるのですが、MacOSXの音声認識でもmp3ファイルなどで音声コマンドを再生した音声コマンドを実行させることはできますが、大きな問題では無いと感てじます。MacOSXの場合、例えば、shellコマンドを音声で入力して実行するなんてことは標準ではできないです。(AppleScriptを使って作り込めばできるかもしれませんがね。)
(Vistaの場合、DOSコマンドがそのまま音声入力できちゃうんですかね? だったら怖いかも。。)。

MacOSXの場合、音声認識を有効にすると、Listen key(ESCキーがデフォルト)を押しながら話さないと音声コマンドを認識しない、という設定がデフォルトです。(Vistaではどうなんでしょうね?。あとでVistaに詳しい方に聞いてみますかね。)

MacOSXでは、Listen keyを押しながら音声コマンドを認識させる方法以外に、任意のキーワード(デフォルトでは、computer)を音声コマンドの前に加えることで、Macに話しかけた言葉が音声コマンドであると認識させるオプションもあります。(下記の画面スナップショットを参照のこと)
いちいちキーを押しながら話す必要が無くなるわけなので、ちょいと離れた場所から、音声コマンドで操作できちゃうわけです。

例えば、音声コマンドの前に付加するキーワードを "Hello Mac"とした場合、
"Hello Mac! Empty the trash."のように言えばよいわけです。 (画面のスナップショットでは、"what time is it?"と時間を聞いています。。

どんな音声コマンドを認識するかは、Speech Commandsウィンドウ開いて、Commands Paneを見れば確認できます。

まさに、音声リモコンですね。

Speech_recognition


キーワードもmp3ファイルなどに含まれていた場合は、例外かもしれませんが、ここまでは、音声コマンドの実行にはある程度のプロテクトがあるわけです。

例えば、ゴミ箱を空にしようとすれば、確認用ダイアログが表示されるだろうし、いきなりゴミ箱が空になるなんて、、、あるのか?? 

あ、。。DOSコマンド?!が音声コマンドで実行できるのであれば、GUIなんて関係ないか。。

(Windows Vistaの音声コマンドでは、それらの確認ダイアログの表示なしにWindowsをリブートしたり、
 ゴミ箱を空にすることが可能なんだろうか??? 
 ようするに音声でDOSコマンドを入力して、DOSコマンドが実行可能なのであれば、
 GUIの各種確認ダイアログなんて回避できるので、可能かも。。
 これまた、Vistaに詳しい方に確認してみましょうかね。)

参考:
Speech Recognition
PlainTalk wikipedia

| | | コメント (0) | トラックバック (0)

Mac De Oracle - 10万円 de RAC #36

10万円 de RACのつづき。Oracle Net Service構成ファイルの確認。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle Net Serviceの確認。

tnsnames.oraに作成した(された)Cluster Databaseの各サービス名で接続できるか確認する。

尚、手順など、OTN USの元ネタ「25. Verify TNS Networking Files」とほぼ同様なのでそちらも参照されたい。

どちらのノードから行ってもいよいのだが、下記例では、discus1から行っている。

[oracle@discus1 ˜]$ 
[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 1月 11 22:52:06 2007

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

SQL> conn system@orcl2
パスワードを入力してください:
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
orcl2

SQL> conn system@orcl1
パスワードを入力してください:
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
orcl1

SQL> conn system@orcltest
パスワードを入力してください:
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
orcl2

SQL> conn system@orcl
パスワードを入力してください:
接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
orcl1

SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining optionsとの接続が切断されました。
[oracle@discus1 ˜]$

とまあ、こんな感じです。


次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月14日 (水)

Mac De Oracle - 10万円 de RAC #35

10万円 de RACのつづき。Oracle Cluster databaseの作成(第二回目)。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1/その2
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle Cluster databaseの作成を行う。(第二回目)。

尚、手順など、OTN USの元ネタ「24. Create the Oracle Cluster Database」とほぼ同様なのでそちらも参照されたい。

以降の操作は、Oracle RACを構成する1つのノード(この例ではdiscus1)から実行する。
前回から継続して作業を行っているのであれば、特に問題はないと思うが、このステップから作業を再開したような場合、かつ、sshを利用して他のノードをアクセスする方法を取っている場合は、ユーザーの等価化又は、その再確認をしておくといいだろう。)


● dbca (Database Configuration Assistanct)を起動してCluster databaseを作成する

dbca (Database Configuration Assistant)を起動する際も文字化け回避策として、環境変数LANGを一時的に、en_USにしておく。
[oracle@discus1 ˜]$ export LANG=en_US.UTF-8
[oracle@discus1 ˜]$ dbca &
[1] 13291
[oracle@discus1 ˜]$



(再生にはQuickTimeが必要です。)
dbca

● データベース作成後の確認

SQL*Plusを利用し、作成したデータベースのサービス名を各ノードで確認しておく。下記は、作成したインスタンス(orcl1とorcl2)にSQL*Plusで接続し確認している。
[oracle@discus1 ˜]$
[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 1月 11 22:45:04 2007

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

SQL> conn sys@orcl1 as sysdba
パスワードを入力してください:
接続されました。
SQL> show parameter service

NAME TYPE VALUE
----------------- -------------------- ----------------------------
service_names string orcl.discus.info, orcltest
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining optionsとの接続が切断されました。
[oracle@discus1 ˜]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 1月 11 22:48:18 2007

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

SQL> conn sys@orcl2 as sysdba
パスワードを入力してください:
接続されました。
SQL> show parameter service

NAME TYPE VALUE
----------------- -------------------- ----------------------------
service_names string orcl.discus.info, orcltest
SQL>

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月13日 (火)

Mac De Oracle - 10万円 de RAC #34

10万円 de RACのつづき。Oracle Cluster databaseの作成(第一回目)。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成 その1
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle Cluster databaseの作成を行う。その第一回目。

尚、手順など、OTN USの元ネタ「24. Create the Oracle Cluster Database」とほぼ同様なのでそちらも参照されたい。

以降の操作は、Oracle RACを構成する1つのノード(この例ではdiscus1)から実行する。
前回から継続して作業を行っているのであれば、特に問題はないと思うが、このステップから作業を再開したような場合、かつ、sshを利用して他のノードをアクセスする方法を取っている場合は、ユーザーの等価化又は、その再確認をしておくといいだろう。)

● まずは、Cluster Database作成前のチェックから

環境変数LANGは、en_USでも ja_JPどちらでも問題ないが、この例では、ja_JPに戻した。
[oracle@discus1 ˜]$ cd /tmp/ora
[oracle@discus1 ora]$ ll
total 12
dr-xr-xr-x 9 oracle dba 4096 Jan 7 22:18 clusterware
dr-xr-xr-x 6 oracle dba 4096 Jan 7 23:07 companion
dr-xr-xr-x 6 oracle dba 4096 Jan 7 22:39 database
[oracle@discus1 ora]$ echo $LANG
en_US.UTF-8
[oracle@discus1 ora]$ export LANG=ja_JP.UTF-8
[oracle@discus1 ora]$ ./clusterware/cluvfy/runcluvfy.sh stage -pre dbcfg -n discus1,discus2 -d ${ORACLE_HOME} -verbose

データベース構成の事前チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus1"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus1 はい
discus2 はい
結果: ノード"discus1"からのノード到達可能性チェックに合格しました。

ユーザー等価をチェック中...

チェック: ユーザー"oracle"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus2 合格
discus1 合格
結果: ユーザー"oracle"のユーザー等価チェックに合格しまし結果: ユーザー"oracle"のユーザー等価チェックに合格しました。

管理権限をチェック中...

チェック: ユーザー"oracle"の存在
ノード名 ユーザーが存在します コメント
------------ ------------------------ ------------------------
discus2 はい 合格
discus1 はい 合格
結果: "oracle"のユーザーの存在チェックに合格しました。

チェック: グループ"dba"の存在
ノード名 ステータス グループID
------------ ------------------------ ------------------------
discus2 存在します 510
discus1 存在します 510
結果: "dba"のグループの存在チェックに合格しました。

チェック: グループ"dba"内のユーザー"oracle"[プライマリ]のメンバーシップ
ノード名 ユーザーが存在します グループが存在します グループ内のユーザー プライマリ コメント
---------------- ------------ ------------ ------------ ------------ ------------
discus2 はい はい はい はい 合格
discus1 はい はい はい はい 合格
結果: グループ"dba"内のユーザー"oracle"[プライマリ]のメンバーシップ・チェックに合格しました。

管理権限チェックに合格しました。

ノード接続性をチェック中...

ノード"discus2"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.4 192.168.1.0
eth0 192.168.1.101 192.168.1.0
eth1 192.168.2.4 192.168.2.0

ノード"discus1"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.3 192.168.1.0
eth0 192.168.1.100 192.168.1.0
eth1 192.168.2.3 192.168.2.0

チェック: サブネット"192.168.1.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth0 discus2:eth0 はい
discus2:eth0 discus1:eth0 はい
discus2:eth0 discus1:eth0 はい
discus2:eth0 discus1:eth0 はい
discus2:eth0 discus1:eth0 はい
discus1:eth0 discus1:eth0 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.1.0"のノード接続性チェックに合格しました。

チェック: サブネット"192.168.2.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth1 discus1:eth1 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.2.0"のノード接続性チェックに合格しました。

サブネット"192.168.1.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth0:192.168.1.4 eth0:192.168.1.101
discus1 eth0:192.168.1.3 eth0:192.168.1.100

サブネット"192.168.2.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth1:192.168.2.4
discus1 eth1:192.168.2.3

ERROR:
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。

CRS整合性をチェック中...

デーモン活性をチェック中...

チェック: "CRS daemon"の活性
ノード名 実行中
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: "CRS daemon"の活性チェックに合格しました。

デーモン活性をチェック中...

チェック: "CSS daemon"の活性
ノード名 実行中
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: "CSS daemon"の活性チェックに合格しました。

デーモン活性をチェック中...

チェック: "EVM daemon"の活性
ノード名 実行中
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: "EVM daemon"の活性チェックに合格しました。

すべてのデーモンの活性
ノード名 CRS daemon CSS daemon EVM daemon
------------ ------------------------ ------------------------ ----------
discus2 はい はい はい
discus1 はい はい はい

CRS状態をチェック中...

チェック: CRSの状態
ノード名 CRS OK?
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: CRS状態チェックに合格しました。

CRS整合性チェックに合格しました。

データベース構成の事前チェックはすべてのノードで失敗しました。
[oracle@discus1 ora]$


以前も何度か出てきた以下のエラーメッセージだが、VIPの設定が正しいことは既に確認済みなので無視して問題はない。

ERROR:
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。


ログが長いので、今日はここまで。 次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月12日 (月)

Mac De Oracle - 10万円 de RAC #33

10万円 de RACのつづき。TNS Listenerの構成。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle Net Service(TNS Listenerの構成を含む)の構成を行う。面倒な作業ではないがしっかり行っておきたいところですね。結構ここら辺りでつまらないミスをする方が多いし。

尚、手順など、OTN USの元ネタ「23. Create TNS Listener Process」とほぼ同様なのでそちらも参照されたい。


この作業は、Oracle RACを構成する1つのノード(この例では、discus1)から行えばよい。前回の作業に続けて行っているのであれば、特に問題はないと思うが、このステップから作業を再開したような場合、かつ、sshを利用して他のノードをアクセスする方法を取っている場合は、ユーザーの等価化又は、その再確認をしておくといいだろう。)

● Oracle Netサービスの構成は、netcaを利用して行う。

ouiの場合と同様に、文字化け回避策として、環境変数LANGをja_JPではなく、en_USにしておく。以下、netca起動時のログ
[oracle@discus1 &title;]$ echo $LANG
en_US.UTF-8
[oracle@discus1 &title;]$
[oracle@discus1 &title;]$
[oracle@discus1 &title;]$
[oracle@discus1 &title;]$ netca &
[1] 18800
[oracle@discus1 &title;]$
Oracle Net Services Configuration:
Configuring Listener:LISTENER
Default local naming configuration complete.
discus1...
discus2...
Listener configuration complete.
Profile configuration complete.
Profile configuration complete.
Oracle Net Services configuration successful. The exit code is 0

[1]+ Done netca
[oracle@discus1 &title;]$


以下、netcaを操作してOracle Netサービスの構成を行っている様子をQuickTimeムービーにしたもの。TNS Listenerの構成に続き、Naming methodsの構成(tnsnames.oraやsqlnet.ora)を行っている。


(再生にはQuickTimeが必要です。)
netca



● 確認!

netcaによるOracle Netサービスの構成が済んだら、念のためリスナープロセスが起動されているか確認しておく。
尚、確認は、Oracle RACを構成する全ノードで行う。
[oracle@discus1 &title;]$ hostname
discus1.macdeoracle.jp
[oracle@discus1 &title;]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_DISCUS1
[oracle@discus1 &title;]$ ssh discus2 hostname
discus2.macdeoracle.jp
[oracle@discus1 &title;]$ ssh discus2 ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_DISCUS2
[oracle@discus1 &title;]$

次回へつつく。

| | | コメント (0) | トラックバック (0)

2007年2月11日 (日)

Mac De Oracle - 10万円 de RAC #32

10万円 de RACのつづき。Oracle10g R2 Companion CD softwareのインストール。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g R2 Companion CD softwareのインストール

尚、手順など、OTN USの元ネタ「22. Install Oracle 10g Companion CD Software」とほぼ同様なのでそちらも参照されたい。


また、今回は、Compaion CDに含まれるソフトウェアのうち、Oracle Database 10g Products 10.2.0.1.0だけをインストールした(サンプルスキーマなど)。このCompanion CDに含まれるソフトウェアのインストールはオプションであり、必要に応じてインストールすればよい。例えば、Oracle HTMLDBが必要であれば追加インストールすればよい。

● companion CDに含まれる OUIを起動し、追加プロダクトのインストールを開始する。

Oracle10g R2 Clusterware、Softwareのインストールと同様に、Oracle RACを構成する1ノード(この例ではdiscus1)にてインストールを実行すればよい。

※以下はOUI (Oracle Universal Installer)を起動するまでのログ、及び、OUIの実行画面のQuickTimeムービーである。

[oracle@discus1 ora]$ ll
total 12
dr-xr-xr-x 9 oracle dba 4096 Jan 7 22:18 clusterware
dr-xr-xr-x 6 oracle dba 4096 Jan 7 23:07 companion
dr-xr-xr-x 6 oracle dba 4096 Jan 7 22:39 database
[oracle@discus1 ora]$ ./companion/runInstaller -ignoreSysPrereqs
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed


All installer requirements met.

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2007-01-14_01-54-39PM. Please wait ...
[oracle@discus1 ora]$ Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999, 2005, Oracle. All rights reserved.



(再生にはQuickTimeが必要です。)
companion_cd

次回へつつく。

| | | コメント (0) | トラックバック (0)

2007年2月10日 (土)

Mac De Oracle - 10万円 de RAC #31

10万円 de RACのつづき。Oracle10g R2 Database softwareのインストール その2。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1/その2
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g R2 Database softwareのインストール(第二回目)

尚、手順などは、OTN USの元ネタ「21. Install Oracle Database 10g Software」と同じなので、そちらも参照のこと。


環境変数LANGがja_JPだと、OUIが文字化けしてしいましたが、表示だけの問題(フォントの問題)なので特に対処せず、一番簡単な方法である、en_USに変更することで対処。

以下、文字化けしたOUI

[oracle@discus1 ora]$ echo $LANG
ja_JP.UTF-8
[oracle@discus1 ora]$
[oracle@discus1 ora]$ ./database/runInstaller -ignoreSysPrereqs
Oracle Universal Installerを起動中です...v
インストーラ要件の確認中...

オペレーティング・システムのバージョンを確認中: 必須redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
問題なし


すべてのインストーラ要件を満たしています。

Oracle Universal Installerの起動を準備中 /tmp/OraInstall2007-01-11_06-13-04PM. お待ちください...
[oracle@discus1 ora]$ Oracle Universal Installer, バージョン 10.2.0.1.0 製品版
Copyright (C) 1999, 2005, Oracle. All rights reserved.

Warning: Cannot convert string "-watanabe-mincho-medium-r-normal--*-140-*-*-c-*-jisx0208.1983-0" to type FontStruct


041


以下、文字化けを回避した状態でインストールを行う。

[oracle@discus1 ora]$ export LANG=en_US.UTF-8
[oracle@discus1 ora]$
[oracle@discus1 ora]$ ./database/runInstaller -ignoreSysPrereqs

Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed

All installer requirements met.

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2007-01-11_06-19-23PM. Please wait ...
[oracle@discus1 ora]$ Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999, 2005, Oracle. All rights reserved.

[an error occurred while processing this directive]
042


(再生にはQuickTimeが必要です。)
rac_de_oracle31-1


● Oracle10g R2になっても無くならない、Oracleインストールのお約束、root.shの実行
root.shは、Oracle RACを構成する全ノードで実行する。

[an error occurred while processing this directive]
052

[root@discus1 ˜]# echo $LANG
ja_JP.UTF-8
[root@discus1 ˜]# /u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.

[root@discus1 ˜]#
[root@discus1 ˜]# ssh root@discus2 /u01/app/oracle/product/10.2.0/db_1/root.sh
root@discus2's password:
Running Oracle10 root.sh script...

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.

[root@discus1 ˜]#
[an error occurred while processing this directive]

(再生にはQuickTimeが必要です。)
rac_de_oracle31-2


次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月 9日 (金)

Mac De Oracle - 10万円 de RAC #30

10万円 de RACのつづき。Oracle10g R2 Database softwareのインストール その1。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール その1
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g R2 Database softwareのインストール(第一回目)

尚、手順などは、OTN USの元ネタ「21. Install Oracle Database 10g Software」と同じなので、そちらも参照のこと。

では早速取りかかる、まず、データベースインストール事前チェックを行う。


OUIを起動するノードは、discus1なのでdiscus1から実行している。
※ログの内容は、省略せず全ての内容を載せている為少々長いがご容赦を。
 (どのようなチェックが行われているか知るにはちょうどよいログなので)

[oracle@discus1 ora]$ pwd
/tmp/ora
[oracle@discus1 ora]$ echo $LANG
ja_JP.UTF-8
[oracle@discus1 ora]$
[oracle@discus1 ora]$ ll
dr-xr-xr-x 9 oracle dba 4096 1月 7 22:18 clusterware
dr-xr-xr-x 6 oracle dba 4096 1月 7 23:07 companion
dr-xr-xr-x 6 oracle dba 4096 1月 7 22:39 database
[oracle@discus1 ora]$
[oracle@discus1 ora]$ ./clusterware/cluvfy/runcluvfy.sh stage -pre dbinst -n discus1,discus2 -r 10gR2 -verbose

データベース・インストールの事前チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus1"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus1 はい
discus2 はい
結果: ノード"discus1"からのノード到達可能性チェックに合格しました。


ユーザー等価をチェック中...

チェック: ユーザー"oracle"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus2 合格
discus1 合格
結果: ユーザー"oracle"のユーザー等価チェックに合格しました。

管理権限をチェック中...

チェック: ユーザー"oracle"の存在
ノード名 ユーザーが存在します コメント
------------ ------------------------ ------------------------
discus2 はい 合格
discus1 はい 合格
結果: "oracle"のユーザーの存在チェックに合格しました。

チェック: グループ"dba"の存在
ノード名 ステータス グループID
------------ ------------------------ ------------------------
discus2 存在します 115
discus1 存在します 115
結果: "dba"のグループの存在チェックに合格しました。

チェック: グループ"dba"内のユーザー"oracle"[プライマリ]のメンバーシップ
ノード名 ユーザーが存在します グループが存在します グループ内のユーザー プライマリ コメント
---------------- ------------ ------------ ------------ ------------ ------------
discus2 はい はい はい はい 合格
discus1 はい はい はい はい 合格
結果: グループ"dba"内のユーザー"oracle"[プライマリ]のメンバーシップ・チェックに合格しました。

管理権限チェックに合格しました。

ノード接続性をチェック中...


ノード"discus2"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.4 192.168.1.0
eth0 192.168.1.101 192.168.1.0
eth1 192.168.2.4 192.168.2.0


ノード"discus1"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.3 192.168.1.0
eth0 192.168.1.100 192.168.1.0
eth1 192.168.2.3 192.168.2.0


チェック: サブネット"192.168.1.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth0 discus2:eth0 はい
discus2:eth0 discus1:eth0 はい
discus2:eth0 discus1:eth0 はい
discus2:eth0 discus1:eth0 はい
discus2:eth0 discus1:eth0 はい
discus1:eth0 discus1:eth0 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.1.0"のノード接続性チェックに合格しました。

チェック: サブネット"192.168.2.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth1 discus1:eth1 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.2.0"のノード接続性チェックに合格しました。

サブネット"192.168.1.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth0:192.168.1.4 eth0:192.168.1.101
discus1 eth0:192.168.1.3 eth0:192.168.1.100

サブネット"192.168.2.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth1:192.168.2.4
discus1 eth1:192.168.2.3

ERROR:
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。


システム要件をチェック中: 'database'...

チェック: メモリー合計
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 502.37MB (514428KB) 512MB (524288KB) 失敗
discus1 502.37MB (514428KB) 512MB (524288KB) 失敗
結果: メモリー合計チェックが失敗しました。

チェック: "/tmp"ディレクトリのディスク空き領域
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 8.33GB (8737036KB) 400MB (409600KB) 合格
discus1 6.81GB (7145740KB) 400MB (409600KB) 合格
結果: ディスク空き領域チェックに合格しました。

チェック: スワップ領域
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 2GB (2097144KB) 1GB (1048576KB) 合格
discus1 2GB (2097144KB) 1GB (1048576KB) 合格
結果: スワップ領域チェックに合格しました。

チェック: システム・アーキテクチャ
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 i686 i686 合格
discus1 i686 i686 合格
結果: システム・アーキテクチャチェックに合格しました。

チェック: カーネル・バージョン
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 2.6.9-42.EL 2.4.21-15EL 合格
discus1 2.6.9-42.EL 2.4.21-15EL 合格
結果: カーネル・バージョンチェックに合格しました。

チェック: "make-3.79"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 make-3.80-6.EL4 合格
discus1 make-3.80-6.EL4 合格
結果: "make-3.79"のパッケージの存在チェックに合格しました。

チェック: "binutils-2.14"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 binutils-2.15.92.0.2-21 合格
discus1 binutils-2.15.92.0.2-21 合格
結果: "binutils-2.14"のパッケージの存在チェックに合格しました。

チェック: "gcc-3.2"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 gcc-3.4.6-3 合格
discus1 gcc-3.4.6-3 合格
結果: "gcc-3.2"のパッケージの存在チェックに合格しました。

チェック: "compat-db-4.0.14-5"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 compat-db-4.1.25-9 合格
discus1 compat-db-4.1.25-9 合格
結果: "compat-db-4.0.14-5"のパッケージの存在チェックに合格しました。

チェック: "compat-gcc-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-gcc-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-libstdc++-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-libstdc++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "glibc-2.3.2-95.27"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 glibc-2.3.4-2.25 合格
discus1 glibc-2.3.4-2.25 合格
結果: "glibc-2.3.2-95.27"のパッケージの存在チェックに合格しました。

チェック: "openmotif-2.2.3"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 openmotif-2.2.3-10.RHEL4.5 合格
discus1 openmotif-2.2.3-10.RHEL4.5 合格
結果: "openmotif-2.2.3"のパッケージの存在チェックに合格しました。

チェック: "setarch-1.3-1"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 setarch-1.6-1 合格
discus1 setarch-1.6-1 合格
結果: "setarch-1.3-1"のパッケージの存在チェックに合格しました。

チェック: "semmsl"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 250 250 合格
discus1 250 250 合格
結果: "semmsl"のカーネル・パラメータチェックに合格しました。

チェック: "semmns"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 32000 32000 合格
discus1 32000 32000 合格
結果: "semmns"のカーネル・パラメータチェックに合格しました。

チェック: "semopm"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 100 100 合格
discus1 100 100 合格
結果: "semopm"のカーネル・パラメータチェックに合格しました。

チェック: "semmni"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 128 128 合格
discus1 128 128 合格
結果: "semmni"のカーネル・パラメータチェックに合格しました。

チェック: "shmall"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 2097152 2097152 合格
discus1 2097152 2097152 合格
結果: "shmall"のカーネル・パラメータチェックに合格しました。

チェック: "shmmni"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 4096 4096 合格
discus1 4096 4096 合格
結果: "shmmni"のカーネル・パラメータチェックに合格しました。

チェック: "file-max"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 65536 65536 合格
discus1 65536 65536 合格
結果: "file-max"のカーネル・パラメータチェックに合格しました。

チェック: "rmem_default"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 262144 262144 合格
discus1 262144 262144 合格
結果: "rmem_default"のカーネル・パラメータチェックに合格しました。

チェック: "rmem_max"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 1048576 262144 合格
discus1 1048576 262144 合格
結果: "rmem_max"のカーネル・パラメータチェックに合格しました。

チェック: "wmem_default"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 262144 262144 合格
discus1 262144 262144 合格
結果: "wmem_default"のカーネル・パラメータチェックに合格しました。

チェック: "wmem_max"のカーネル・パラメータ
ノード名 構成済 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 1048576 262144 合格
discus1 1048576 262144 合格
結果: "wmem_max"のカーネル・パラメータチェックに合格しました。

チェック: "dba"のグループの存在
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus2 存在します 合格
discus1 存在します 合格
結果: "dba"のグループの存在チェックに合格しました。

チェック: "nobody"の既存ユーザー
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus2 存在します 合格
discus1 存在します 合格
結果: "nobody"の既存ユーザーチェックに合格しました。

システム要件が失敗しました 'database'

CRS整合性をチェック中...

デーモン活性をチェック中...

チェック: "CRS daemon"の活性
ノード名 実行中
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: "CRS daemon"の活性チェックに合格しました。

デーモン活性をチェック中...

チェック: "CSS daemon"の活性
ノード名 実行中
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: "CSS daemon"の活性チェックに合格しました。

デーモン活性をチェック中...

チェック: "EVM daemon"の活性
ノード名 実行中
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: "EVM daemon"の活性チェックに合格しました。

すべてのデーモンの活性
ノード名 CRS daemon CSS daemon EVM daemon
------------ ------------------------ ------------------------ ----------
discus2 はい はい はい
discus1 はい はい はい

CRS状態をチェック中...

チェック: CRSの状態
ノード名 CRS OK?
------------------------------------ ------------------------
discus2 はい
discus1 はい
結果: CRS状態チェックに合格しました。

CRS整合性チェックに合格しました。

ノード・アプリケーションの存在をチェック中...


VIPノード・アプリケーションの存在をチェック中です
ノード名 必須 ステータス コメント
------------ ------------------------ ------------------------ ----------
discus2 はい 存在します 合格
discus1 はい 存在します 合格
結果: チェックに合格しました。

ONSノード・アプリケーションの存在をチェック中です
ノード名 必須 ステータス コメント
------------ ------------------------ ------------------------ ----------
discus2 いいえ 存在します 合格
discus1 いいえ 存在します 合格
結果: チェックに合格しました。

GSDノード・アプリケーションの存在をチェック中です
ノード名 必須 ステータス コメント
------------ ------------------------ ------------------------ ----------
discus2 いいえ 存在します 合格
discus1 いいえ 存在します 合格
結果: チェックに合格しました。


データベース・インストールの事前チェックはすべてのノードで失敗しました。
[oracle@discus1 ora]$


以下のエラーがレポートされるが、メモリーは512MB載せており最低要件は満たしているので無視して構わない。その他のエラーは、以前書いた通り、無視しても構わない。

ERROR:
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。


チェック: メモリー合計
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 502.37MB (514428KB) 512MB (524288KB) 失敗
discus1 502.37MB (514428KB) 512MB (524288KB) 失敗
結果: メモリー合計チェックが失敗しました。


チェック: "compat-gcc-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-gcc-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-libstdc++-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-libstdc++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在チェックが失敗しました。


次回Oracle10g R2 Database softwareのインストール(第二回目)へつづく

| | | コメント (0) | トラックバック (0)

2007年2月 8日 (木)

Mac De Oracle - 10万円 de RAC #29

10万円 de RACのつづき。Oracle10g Clusterwareのインストール。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g Clusterwareのインストール

尚、手順などは、OTN USの元ネタ「20. Install Oracle 10g Clusterware Software」と同じなので、そちらも参照のこと。

OUIは、Oracle RACを構成する1ノードで起動すればよい。下記例は、discus1で実行したもの。

前のステップで作成したOracle Cluster File Systemに Oracle Clusterwareが利用する2つの共有ファイル(ファイルグループ)を作成する。

1つは、Oracle Cluster Registry (OCR)というCRS及び、Oracle Databaseが利用するレジストリファイル、
もう一つは、CRS Voting Diskというスプリット・ブレイン発生時に生き残るサブクラスタを決めるために利用されるファイルである。

Oracle Clusterwareなどの詳細は、マニュアル「Oracle Database Oracle ClusterwareおよびOracle Real Application Clusters管理およびデプロイメント・ガイド 10g リリース2(10.2)」を参照されたい。


OUIを起動してOracle Clusterwareのインストール。
画面数がそれなりに多いので画面のスナップショットではなく、QucikTimeムービーで!。

(再生にはQuickTimeが必要です。)

rac_de_oracle


orainstRoot.shとroot.shをOracle RACを構成する全ノードで実施しろというダイアログが表示されるので、それに従い各ノードで実行する。

[root@discus1 ˜]# /u01/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oracle/oraInventory to 770.
Changing groupname of /u01/app/oracle/oraInventory to dba.
The execution of the script is complete
[root@discus1 ˜]# ssh discus2
root@discus2's password:
Last login: Mon Jan 8 14:33:54 2007 from discus1.macdeoracle.jp
[root@discus2 ˜]# /u01/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oracle/oraInventory to 770.
Changing groupname of /u01/app/oracle/oraInventory to dba.
The execution of the script is complete
[root@discus2 ˜]# exit
logout

Connection to discus2 closed.
[root@discus1 ˜]#
[root@discus1 ˜]# /u01/app/oracle/product/crs/root.sh
WARNING: directory '/u01/app/oracle/product' is not owned by root
WARNING: directory '/u01/app/oracle' is not owned by root
WARNING: directory '/u01/app' is not owned by root
WARNING: directory '/u01' is not owned by root
Checking to see if Oracle CRS stack is already configured
/etc/oracle does not exist. Creating it now.

Setting the permissions on OCR backup directory
Setting up NS directories
Oracle Cluster Registry configuration upgraded successfully
WARNING: directory '/u01/app/oracle/product' is not owned by root
WARNING: directory '/u01/app/oracle' is not owned by root
WARNING: directory '/u01/app' is not owned by root
WARNING: directory '/u01' is not owned by root
assigning default hostname discus1 for node 1.
assigning default hostname discus2 for node 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: discus1 discus1-priv discus1
node 2: discus2 discus2-priv discus2
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Now formatting voting device: /u02/oradata/orcl/CSSFile
Now formatting voting device: /u02/oradata/orcl/CSSFile_mirror1
Now formatting voting device: /u02/oradata/orcl/CSSFile_mirror2
Format of 3 voting devices complete.
Startup will be queued to init within 90 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
discus1
CSS is inactive on these nodes.
discus2
Local node checking complete.
Run root.sh on remaining nodes to start CRS daemons.
[root@discus1 ˜]#
[root@discus1 ˜]# ssh discus2
root@discus2's password:
Last login: Mon Jan 8 14:33:54 2007 from discus1.macdeoracle.jp
[root@discus2 ˜]# /u01/app/oracle/product/crs/root.sh
WARNING: directory '/u01/app/oracle/product' is not owned by root
WARNING: directory '/u01/app/oracle' is not owned by root
WARNING: directory '/u01/app' is not owned by root
WARNING: directory '/u01' is not owned by root
Checking to see if Oracle CRS stack is already configured
/etc/oracle does not exist. Creating it now.

Setting the permissions on OCR backup directory
Setting up NS directories
Oracle Cluster Registry configuration upgraded successfully
WARNING: directory '/u01/app/oracle/product' is not owned by root
WARNING: directory '/u01/app/oracle' is not owned by root
WARNING: directory '/u01/app' is not owned by root
WARNING: directory '/u01' is not owned by root
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
assigning default hostname discus1 for node 1.
assigning default hostname discus2 for node 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: discus1 discus1-priv discus1
node 2: discus2 discus2-priv discus2
clscfg: Arguments check out successfully.

NO KEYS WERE WRITTEN. Supply -force parameter to override.
-force is destructive and will destroy any previous cluster
configuration.
Oracle Cluster Registry for cluster has already been initialized
Startup will be queued to init within 90 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
discus1
discus2
CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
指定のインタフェース"eth0"はパブリックではありません。パブリック・インタフェース
を使用して仮想IPを構成する必要があります。

[root@discus2 ˜]#

以下のエラーメッセージが表示されるが、最後のノード(この例では discus2)でVIP Configuration Assistant を起動し手動で構成すれば解決できる。

指定のインタフェース"eth0"はパブリックではありません。パブリック・インタフェース
を使用して仮想IPを構成する必要があります。

とういうことで、vipcaをdiscus2で実行したQuickTimeムービーをどうぞ。
尚、vipcaの実行は、rootユーザで実行すること。

rac_de_oracle_vipca

vipca終了後、Oracle Clusterwareインストールの確認!
Oracle RACを構成する全ノードで確認する。下記例はdiscus1で実施したもの

[oracle@discus1 ˜]$ $ORA_CRS_HOME/bin/olsnodes -n
discus1 1
discus2 2
[oracle@discus1 ˜]$ ls -l /etc/init.d/init.*
-r-xr-xr-x 1 root root 1951 Jan 8 17:44 /etc/init.d/init.crs
-r-xr-xr-x 1 root root 4714 Jan 8 17:44 /etc/init.d/init.crsd
-r-xr-xr-x 1 root root 35394 Jan 8 17:44 /etc/init.d/init.cssd
-r-xr-xr-x 1 root root 3190 Jan 8 17:44 /etc/init.d/init.evmd
[oracle@discus1 ˜]$ ps ax | grep [c]rs
5135 ? Ss 0:00 /bin/su -l oracle -c sh -c 'ulimit -c unlimited; cd /u01/app/oracle/product/crs/log/discus1/evmd; exec /u01/app/oracle/product/crs/bin/evmd '
5144 ? Ssl 0:00 /u01/app/oracle/product/crs/bin/crsd.bin reboot
5845 ? Ssl 0:00 /u01/app/oracle/product/crs/bin/evmd.bin
5961 ? S 0:00 /bin/su -l oracle -c /bin/sh -c 'ulimit -c unlimited; cd /u01/app/oracle/product/crs/log/discus1/cssd; /u01/app/oracle/product/crs/bin/ocssd || exit $?'
5962 ? S 0:00 /bin/sh -c ulimit -c unlimited; cd /u01/app/oracle/product/crs/log/discus1/cssd; /u01/app/oracle/product/crs/bin/ocssd || exit $?
5988 ? Ssl 0:00 /u01/app/oracle/product/crs/bin/ocssd.bin
6255 ? S 0:00 /u01/app/oracle/product/crs/bin/evmlogger.bin -o /u01/app/oracle/product/crs/evm/log/evmlogger.info -l /u01/app/oracle/product/crs/evm/log/evmlogger.log
6585 ? Ss 0:00 /u01/app/oracle/product/crs/opmn/bin/ons -d
6586 ? Sl 0:00 /u01/app/oracle/product/crs/opmn/bin/ons -d
[oracle@discus1 ˜]$


● 最後に、discus1のOUIを終了させれば、Oracle Clusterwareのインストールは完了!


039 040

次回へつづく。

| | | コメント (0) | トラックバック (0)

2007年2月 7日 (水)

Mac De Oracle - 10万円 de RAC #28

10万円 de RACのつづき。今回は、Oracle10g R2インストール事前作業のその4。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3/その4
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g R2インストール前の事前作業のつづき(第四回目というか、おまけ)。


尚、手順などは、OTN USの元ネタ「19. Pre-Installation Tasks for Oracle10g Release 2」と同じなので、そちらも参照のこと。

前回でOracle10g R2インストール前の事前作業は終わっているのだが、前回のエントリで発生した共有ディスクのチェックが失敗する原因について補足されていたので、ついでに試してみることにする。


理由の1つは、cvu自体が、SCSIデバイス以外では正常に動作しないというもの。SCSIデバイス以外のデバイスには、Openfilerのボリュームグループも含まれるとこのと。(Metalink上で公開されているらしいgが、未確認)


また、もう一つ理由として、Linuxのcvuは、内部で smartctlを呼び出しており、それが、iSCSIデバイスのシリアル番号を返さないことが影響しているというもの。

試してみると、確かに、 Serial numberが取れていない!

[oracle@discus1 cluvfy]$ /usr/sbin/cvuqdisk /dev/sdd
smartctl version 5.33 [i686-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: Openfile Virtual disk Version: 0
Serial number:
Device type: disk
Local Time is: Sun Jan 7 14:45:15 2007 JST
Device supports SMART and is Disabled
Temperature Warning Disabled or Not Supported



[root@discus1 cluvfy]# /usr/sbin/smartctl -i /dev/sdd
smartctl version 5.33 [i686-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: Openfile Virtual disk Version: 0
Serial number:
Device type: disk
Local Time is: Sun Jan 7 14:48:50 2007 JST
Device supports SMART and is Disabled
Temperature Warning Disabled or Not Supported
[root@discus1 cluvfy]#

ということで、次回、Oracle10g Clusterwareのインストールへつづく。

| | | コメント (0) | トラックバック (0)

2007年2月 6日 (火)

帰ってきた Stumbler

iStumblerというソフトを発見。以前、MacStumblerというソフトを紹介したが、iStumblerのほうがよさそう。
というのも、無線LANだけでなく、BluetoothやBonjourも検出できる。

というこことで、早速、移動途中のコーヒーブレイクしたスタバで試してみた。

SecureがOpenになっている無線LANが3つも!! 大丈夫か?? 


ウチの近所なら自治会の回覧で注意するように促すことはできるのだが・・・・。ここでは無理だな。

Istumbler


AirMac Expressのセキュアな設定は、こちら

で、帰宅後、再度遊んでみる。

ウチのAirMacは問題なし。。。ここまでなら、MacStumblerとおなじ。
Myairportexpress


お〜〜〜。Bluetooth plug-inで、コードレスマウスが・・・・

Bluetooth


お〜〜〜。Bonjour plug-inで、プリンタや、他のMacが・・・・

Bonjour


いいじゃないですか〜〜iStumbler

Icon

| | | コメント (0) | トラックバック (0)

Mac De Oracle - 10万円 de RAC #27

10万円 de RACのつづき。今回は、Oracle10g R2インストール事前作業のその3。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2/その3
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g R2インストール前の事前作業のつづき(第三回目)。


尚、手順などは、OTN USの元ネタ「19. Pre-Installation Tasks for Oracle10g Release 2」と同じなので、そちらも参照のこと。


● cvuでハードウェアとOSの設定チェックを行う。
この操作は、OUIを起動するノード(この例ではdiscus1)で実施する。

[oracle@discus1 cluvfy]$ ./runcluvfy.sh stage -post hwos -n discus1,discus2 -verbose

ハードウェアとオペレーティング・システム設定の事後チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus1"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus1 はい
discus2 はい
結果: ノード"discus1"からのノード到達可能性チェックに合格しました。


ユーザー等価をチェック中...

チェック: ユーザー"oracle"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus2 合格
discus1 合格
結果: ユーザー"oracle"のユーザー等価チェックに合格しました。

ノード接続性をチェック中...


ノード"discus2"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.4 192.168.1.0
eth1 192.168.2.4 192.168.2.0


ノード"discus1"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.3 192.168.1.0
eth1 192.168.2.3 192.168.2.0


チェック: サブネット"192.168.1.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth0 discus1:eth0 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.1.0"のノード接続性チェックに合格しました。

チェック: サブネット"192.168.2.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth1 discus1:eth1 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.2.0"のノード接続性チェックに合格しました。

サブネット"192.168.1.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth0:192.168.1.4
discus1 eth0:192.168.1.3

サブネット"192.168.2.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth1:192.168.2.4
discus1 eth1:192.168.2.3

ERROR:
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。


共有記憶域アクセス可能性をチェック中...

WARNING:
パッケージcvuqdiskがインストールされていません。
discus2,discus1


ノード"discus2,discus1"で共有記憶域チェックが失敗しました。

ハードウェアとオペレーティング・システム設定の事後チェックはすべてのノードで失敗しました。
[oracle@discus1 cluvfy]$


レポートされたエラーやワーニングを再確認する。
まず、VIPに関するエラーだが、これは、クラスタサービスインストール事前チェックと同様、/etc/hostsに正しく設定してあるので無視する。

ERROR: 
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。


次のcvuqdiskパッケージがインストールされていないというワーニングは解決しておく。

共有記憶域アクセス可能性をチェック中...

WARNING:
パッケージcvuqdiskがインストールされていません。
discus2,discus1


ノード"discus2,discus1"で共有記憶域チェックが失敗しました。


以下のようにcvuqdisk-1.0.1-1を追加。これはOracle RACを構成する全ノード(この例ではdiscus1とdiscus2)で行う。

[root@discus1 ora]# cd /tmp/oraclusterware/rpm
[root@discus1 rpm]# ll
合計 8
-rwxr-xr-x 1 oracle dba 5339 1月 7 22:12 cvuqdisk-1.0.1-1.rpm

[root@discus1 rpm]# export CVUQDISK_GRP=dba
[root@discus1 rpm]# rpm -iv cvuqdisk-1.0.1-1.rpm
Preparing packages for installation...
cvuqdisk-1.0.1-1
[root@discus1 rpm]# ls -l /usr/sbin/cvuqdisk
-rwsr-x--- 1 root dba 4168 6月 3 2005 /usr/sbin/cvuqdisk
[root@discus1 rpm]#
[root@discus1 rpm]# scp ./cvuqdisk-1.0.1-1.rpm discus2:/tmp
root@discus2's password:
cvuqdisk-1.0.1-1.rpm 100% 5339 5.2KB/s 00:00
以下、discus2でdiscus1と同様の作業を行う。

cvuqdiskのインストールが済んだら、cvuで再度チェックする。

[oracle@discus1 cluvfy]$ ./runcluvfy.sh stage -post hwos -n discus1,discus2 -verbose

ハードウェアとオペレーティング・システム設定の事後チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus1"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus1 はい
discus2 はい
結果: ノード"discus1"からのノード到達可能性チェックに合格しました。


ユーザー等価をチェック中...

チェック: ユーザー"oracle"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus2 合格
discus1 合格
結果: ユーザー"oracle"のユーザー等価チェックに合格しました。

ノード接続性をチェック中...


ノード"discus2"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.4 192.168.1.0
eth1 192.168.2.4 192.168.2.0


ノード"discus1"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.3 192.168.1.0
eth1 192.168.2.3 192.168.2.0


チェック: サブネット"192.168.1.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth0 discus1:eth0 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.1.0"のノード接続性チェックに合格しました。

チェック: サブネット"192.168.2.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth1 discus1:eth1 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.2.0"のノード接続性チェックに合格しました。

サブネット"192.168.1.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth0:192.168.1.4
discus1 eth0:192.168.1.3

サブネット"192.168.2.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth1:192.168.2.4
discus1 eth1:192.168.2.3

ERROR:
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。


共有記憶域アクセス可能性をチェック中...


ノード"discus2,discus1"で共有記憶域チェックが失敗しました。

ハードウェアとオペレーティング・システム設定の事後チェックはすべてのノードで失敗しました。

これで無視可能なエラー以外のチェックはパスできた。


長いので、次回へづつく。

| | | コメント (0) | トラックバック (0)

2007年2月 5日 (月)

Mac De Oracle - 10万円 de RAC #26

10万円 de RACのつづき。今回は、Oracle10g R2インストール事前作業のその2。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1/その2
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g R2インストール事前作業のつづき(第二回目)。
前回は、cvuの事前確認で、ユーザー等価化までを確認した。
尚、手順などは、OTN USの元ネタ「19. Pre-Installation Tasks for Oracle10g Release 2」と同じなので、そちらも参照されたい。

● クラスタ・サービス設定の事前チェックの実行
尚、cvuは、Oracle RACを構成する1つのノードで実行すればよい。下記、discus1で実行した例である。

cvuを起動し、Oracle RACを構成するノード、discus1とdiscus2にクラスタ・サービスインストール事前チェックを行う。
[oracle@discus1 cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n discus1,discus2 -verbose

クラスタ・サービス設定の事前チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus1"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus1 はい
discus2 はい
結果: ノード"discus1"からのノード到達可能性チェックに合格しました。


ユーザー等価をチェック中...

チェック: ユーザー"oracle"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus2 合格
discus1 合格
結果: ユーザー"oracle"のユーザー等価チェックに合格しました。

管理権限をチェック中...

チェック: ユーザー"oracle"の存在
ノード名 ユーザーが存在します コメント
------------ ------------------------ ------------------------
discus2 はい 合格
discus1 はい 合格
結果: "oracle"のユーザーの存在チェックに合格しました。

チェック: グループ"oinstall"の存在
ノード名 ステータス グループID
------------ ------------------------ ------------------------
discus2 存在します 511
discus1 存在します 511
結果: "oinstall"のグループの存在チェックに合格しました。

チェック: グループ"oinstall"内のユーザー"oracle"[プライマリ]のメンバーシップ
ノード名 ユーザーが存在します グループが存在します グループ内のユーザー プライマリ コメント
---------------- ------------ ------------ ------------ ------------ ------------
discus2 はい はい いいえ 該当なし 失敗
discus1 はい はい いいえ 該当なし 失敗
結果: グループ"oinstall"内のユーザー"oracle"[プライマリ]のメンバーシップ・チェックが失敗しました。

管理権限チェックが失敗しました。

ノード接続性をチェック中...


ノード"discus2"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.4 192.168.1.0
eth1 192.168.2.4 192.168.2.0


ノード"discus1"のインタフェース情報
インタフェース名 IPアドレス サブネット
------------------------------ ------------------------------ ----------------
eth0 192.168.1.3 192.168.1.0
eth1 192.168.2.3 192.168.2.0


チェック: サブネット"192.168.1.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth0 discus1:eth0 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.1.0"のノード接続性チェックに合格しました。

チェック: サブネット"192.168.2.0"のノード接続性
ソース 宛先 接続しましたか
------------------------------ ------------------------------ ----------------
discus2:eth1 discus1:eth1 はい
結果: ノードdiscus2,discus1を持つサブネット"192.168.2.0"のノード接続性チェックに合格しました。

サブネット"192.168.1.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth0:192.168.1.4
discus1 eth0:192.168.1.3

サブネット"192.168.2.0"のプライベート・インターコネクトに適したインタフェース:
discus2 eth1:192.168.2.4
discus1 eth1:192.168.2.3

ERROR:
VIPに適したインタフェースのセットが見つかりませんでした。

結果: ノード接続性チェックが失敗しました。


システム要件をチェック中: 'crs'...

チェック: メモリー合計
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 502.37MB (514428KB) 512MB (524288KB) 失敗
discus1 502.37MB (514428KB) 512MB (524288KB) 失敗
結果: メモリー合計チェックが失敗しました。

チェック: "/tmp"ディレクトリのディスク空き領域
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 8.98GB (9414872KB) 400MB (409600KB) 合格
discus1 7.28GB (7628652KB) 400MB (409600KB) 合格
結果: ディスク空き領域チェックに合格しました。

チェック: スワップ領域
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 2GB (2097144KB) 1GB (1048576KB) 合格
discus1 2GB (2097144KB) 1GB (1048576KB) 合格
結果: スワップ領域チェックに合格しました。

チェック: システム・アーキテクチャ
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 i686 i686 合格
discus1 i686 i686 合格
結果: システム・アーキテクチャチェックに合格しました。

チェック: カーネル・バージョン
ノード名 使用可能 必須 コメント
------------ ------------------------ ------------------------ ----------
discus2 2.6.9-42.EL 2.4.21-15EL 合格
discus1 2.6.9-42.EL 2.4.21-15EL 合格
結果: カーネル・バージョンチェックに合格しました。

チェック: "make-3.79"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 make-3.80-6.EL4 合格
discus1 make-3.80-6.EL4 合格
結果: "make-3.79"のパッケージの存在チェックに合格しました。

チェック: "binutils-2.14"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 binutils-2.15.92.0.2-21 合格
discus1 binutils-2.15.92.0.2-21 合格
結果: "binutils-2.14"のパッケージの存在チェックに合格しました。

チェック: "gcc-3.2"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 gcc-3.4.6-3 合格
discus1 gcc-3.4.6-3 合格
結果: "gcc-3.2"のパッケージの存在チェックに合格しました。

チェック: "glibc-2.3.2-95.27"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 glibc-2.3.4-2.25 合格
discus1 glibc-2.3.4-2.25 合格
結果: "glibc-2.3.2-95.27"のパッケージの存在チェックに合格しました。

チェック: "compat-db-4.0.14-5"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 compat-db-4.1.25-9 合格
discus1 compat-db-4.1.25-9 合格
結果: "compat-db-4.0.14-5"のパッケージの存在チェックに合格しました。

チェック: "compat-gcc-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-gcc-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-libstdc++-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-libstdc++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 欠落 失敗
discus1 欠落 失敗
結果: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

チェック: "openmotif-2.2.3"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 openmotif-2.2.3-10.RHEL4.5 合格
discus1 openmotif-2.2.3-10.RHEL4.5 合格
結果: "openmotif-2.2.3"のパッケージの存在チェックに合格しました。

チェック: "setarch-1.3-1"のパッケージの存在
ノード名 ステータス コメント
------------------------------ ------------------------------ ----------------
discus2 setarch-1.6-1 合格
discus1 setarch-1.6-1 合格
結果: "setarch-1.3-1"のパッケージの存在チェックに合格しました。

チェック: "dba"のグループの存在
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus2 存在します 合格
discus1 存在します 合格
結果: "dba"のグループの存在チェックに合格しました。

チェック: "oinstall"のグループの存在
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus2 存在します 合格
discus1 存在します 合格
結果: "oinstall"のグループの存在チェックに合格しました。

チェック: "nobody"の既存ユーザー
ノード名 ステータス コメント
------------ ------------------------ ------------------------
discus2 存在します 合格
discus1 存在します 合格
結果: "nobody"の既存ユーザーチェックに合格しました。

システム要件が失敗しました 'crs'

クラスタ・サービス設定の事前チェックはすべてのノードで失敗しました。
[oracle@discus1 cluvfy]$

と、幾つかのチェックに不合格となったので、不合格になった問題を再確認する。


  1. まず、最初は、oracle所有者のプライマリグループが "oinstall"ではないというエラーだ。

    チェック: グループ"oinstall"内のユーザー"oracle"[プライマリ]のメンバーシップ
    ノード名 ユーザーが存在します グループが存在します グループ内のユーザー プライマリ コメント
    ---------------- ------------ ------------ ------------ ------------ ------------
    discus2 はい はい いいえ 該当なし 失敗
    discus1 はい はい いいえ 該当なし 失敗
    結果: グループ"oinstall"内のユーザー"oracle"[プライマリ]のメンバーシップ・チェックが失敗しました。


    このエラーは、OTN USの元ネタの通り、oracle所有者のプライマリグループが "oinstall"ではない為に発生するようなのだが、無視できるエラーなので特に対処はしない。どうしても気になるのであれば、インストールガイド通りに、oracle所有者のプライマリグループを "oinstall"した上で、"dba"グループにも所属させればいいだろう。今回は、特に対処せず、このエラーは無視する。

  2. 次は、VIPに関するエラーがある。

    ERROR: 
    VIPに適したインタフェースのセットが見つかりませんでした。

    結果: ノード接続性チェックが失敗しました。



    インターコネクト用のVIPは、間違いなく /etc/hostsに定義済みであるが、このエラーが出力される。これはバグということなので、これまた無視する。

  3. その次に、メモリサイズが最小要件を満たしていないというエラーが表示された。

    チェック: メモリー合計 
    ノード名 使用可能 必須 コメント
    ------------ ------------------------ ------------------------ ----------
    discus2 502.37MB (514428KB) 512MB (524288KB) 失敗
    discus1 502.37MB (514428KB) 512MB (524288KB) 失敗
    結果: メモリー合計チェックが失敗しました。



    メモリの最小要件は、512MBのはずで、実際に搭載していメモリも512MBなのだが、メモリ合計サイズのチェックは失敗する。
    OUIの実行時にもワーニングが出そうだが、最小要件は満たしているため、このエラーも無視する。

  4. 最後は、RPMパッケージに関するエラーがある。
    チェック: "compat-gcc-7.3-2.96.128"のパッケージの存在 
    ノード名 ステータス コメント
    ------------------------------ ------------------------------ ----------------
    discus2 欠落 失敗
    discus1 欠落 失敗
    結果: "compat-gcc-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

    チェック: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在
    ノード名 ステータス コメント
    ------------------------------ ------------------------------ ----------------
    discus2 欠落 失敗
    discus1 欠落 失敗
    結果: "compat-gcc-c++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

    チェック: "compat-libstdc++-7.3-2.96.128"のパッケージの存在
    ノード名 ステータス コメント
    ------------------------------ ------------------------------ ----------------
    discus2 欠落 失敗
    discus1 欠落 失敗
    結果: "compat-libstdc++-7.3-2.96.128"のパッケージの存在チェックが失敗しました。

    チェック: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在
    ノード名 ステータス コメント
    ------------------------------ ------------------------------ ----------------
    discus2 欠落 失敗
    discus1 欠落 失敗
    結果: "compat-libstdc++-devel-7.3-2.96.128"のパッケージの存在チェックが失敗しました。



    上記、4パッケージが存在しないというエラーが表示されるが、実際には、下記の、3パッケージがインストールされていれば問題ないので、このエラーも無視する。

    [oracle@discus1 cluvfy]$ rpm -qv compat-gcc-32-3.2.3-47.3 compat-gcc-32-c++-3.2.3-47.3 compat-libstdc++-33-3.2.3-47.3
    compat-gcc-32-3.2.3-47.3
    compat-gcc-32-c++-3.2.3-47.3
    compat-libstdc++-33-3.2.3-47.3
    [oracle@discus1 cluvfy]$ ssh discus2 rpm -q compat-gcc-32-3.2.3-47.3 compat-gcc-32-c++-3.2.3-47.3 compat-libstdc++-33-3.2.3-47.3
    compat-gcc-32-3.2.3-47.3
    compat-gcc-32-c++-3.2.3-47.3
    compat-libstdc++-33-3.2.3-47.3
    [oracle@discus1 cluvfy]$

今回はここまで、この続きは次回。

| | | コメント (0) | トラックバック (0)

2007年2月 4日 (日)

Mac De Oracle - 10万円 de RAC #25

10万円 de RACのつづき。今回は、Oracle10g R2インストール事前作業のその1。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業 その1
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



今回は、Oracle10g R2インストール前の事前作業。
尚、手順などは、OTN USの元ネタ「19. Pre-Installation Tasks for Oracle10g Release 2」と同じなので、そちらも参照してもらうとして、早速取りかかることにする。


● javaのバージョン確認

事前にjavaのバージョンが、1.4.2であることを確認。
[root@discus1 ˜]# java -version
java version "1.4.2"
gcj (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


● 必須パッケージの確認

以下のパッケージがインストールされていることを確認しておく。

[root@discus1 ˜]# rpm -q binutils compat-db compat-gcc-32 compat-gcc-32-c++ compat-libstdc++-33 compat-libgcc-296 control-center cpp gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers glibc-kernheaders gnome-libs libaio libstdc++ libstdc++-devel make openmotif openmotif21 pdksh setarch sysstat xscreensaver
binutils-2.15.92.0.2-21
compat-db-4.1.25-9
compat-gcc-32-3.2.3-47.3
compat-gcc-32-c++-3.2.3-47.3
compat-libstdc++-33-3.2.3-47.3
compat-libgcc-296-2.96-132.7.2
control-center-2.8.0-12.rhel4.5
cpp-3.4.6-3
gcc-3.4.6-3
gcc-c++-3.4.6-3
glibc-2.3.4-2.25
glibc-common-2.3.4-2.25
glibc-devel-2.3.4-2.25
glibc-headers-2.3.4-2.25
glibc-kernheaders-2.4-9.1.98.EL
gnome-libs-1.4.1.2.90-44.1
libaio-0.3.105-2
libstdc++-3.4.6-3
libstdc++-devel-3.4.6-3
make-3.80-6.EL4
openmotif-2.2.3-10.RHEL4.5
openmotif21-2.1.30-11.RHEL4.6
pdksh-5.2.14-30.3
setarch-1.6-1
sysstat-5.0.5-11.rhel4
xscreensaver-4.18-5.rhel4.11
[root@discus1 ˜]#


● CVUによるCRSインストール要件の事前チェック

oracle所有者で cvu (Cluster Verification Utility)を実行して要件の事前チェックを行う。

尚、環境変数LANGは、ja_JP.UTF-8で行った。

[root@discus1 cluvfy]# su - oracle
[oracle@discus1 cluvfy]$ echo $LANG
ja_JP.UTF-8
[oracle@discus1 cluvfy]$
[oracle@discus1 cluvfy]$
[oracle@discus1 clusterware]$ cd /tmp/ora/clusterware/cluvfy
[oracle@discus1 cluvfy]$ ll
合計 29188
-rwxr-xr-x 1 root root 8477663 1月 7 22:11 cvupack.zip
-rwxr-xr-x 1 root root 21356849 1月 7 22:12 jrepack.zip
-rwxr-xr-x 1 root root 3107 1月 7 22:12 runcluvfy.sh


注意点:ユーザーの等価化は事前に確認しておきたい。もし、ユーザーの等価化を怠ると以下のようなエラーが表示される。

[oracle@discus1 cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n discus1,discus2 -verbose

クラスタ・サービス設定の事前チェックを実行しています

ノード到達可能性をチェック中...

チェック: ノード"discus1"からのノード到達可能性
宛先ノード 到達可能ですか
------------------------------------ ------------------------
discus1 はい
discus2 はい
結果: ノード"discus1"からのノード到達可能性チェックに合格しました。


ユーザー等価をチェック中...

チェック: ユーザー"oracle"のユーザー等価
ノード名 コメント
------------------------------------ ------------------------
discus2 失敗
discus1 失敗
結果: ユーザー"oracle"のユーザー等価チェックが失敗しました。

ERROR:
ユーザー等価はすべてのノードでは使用できません。
検証を続行できません。


クラスタ・サービス設定の事前チェックはすべてのノードで失敗しました。
[oracle@discus1 cluvfy]$


上記エラーが表示された場合は、ユーザー等価化を行った後、cvuを再実行すればよい。

[oracle@discus1 cluvfy]$ exec /usr/bin/ssh-agent $SHELL
[oracle@discus1 cluvfy]$ /usr/bin/ssh-add
Enter passphrase for /u01/app/oracle/.ssh/id_rsa:
Identity added: /u01/app/oracle/.ssh/id_rsa (/u01/app/oracle/.ssh/id_rsa)
Identity added: /u01/app/oracle/.ssh/id_dsa (/u01/app/oracle/.ssh/id_dsa)
[oracle@discus1 cluvfy]$

長くなるので、次回へづづく。

| | | コメント (0) | トラックバック (0)

2007年2月 3日 (土)

Mac De Oracle - 10万円 de RAC #24

10万円 de RACのつづき。今回は、Oracle 10gソフトウェアのダウンロード。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/その2/その3
  13. Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成
  14. Oracle 10gソフトウェアのダウンロード
  15. Oracle10g R2インストール事前作業
  16. Oracle10g Clusterwareのインストール
  17. Oracle10g R2 Database softwareのインストール
  18. Oracle10g R2 Companion CD softwareのインストール
  19. TNS Listenerの構成
  20. Oracle Cluster databaseの作成
  21. Oracle Net Serviceの確認
  22. 表領域の作成と変更
  23. Oralce RAC ClusterとDatabase構成の確認
  24. Clusterの開始と停止の確認
  25. 簡単なTransparent Application Failover (TAF)の確認
  26. PowerBook G4のJDeveloper10g/SQL Developer/SQL*Plusなどからの接続確認(Mac De Oracleではお約束!なので)
注)
MacOSX 10.4.8(PowerPC)へのOracle10g clientインストールは特に新しいネタでもないので記事として書く予定はないが、MacOSX 10.4.8(PowerPC)のJDeveloper10g、SQL DeveloperやSQL*Plusからの接続確認等の記録は載せる予定である。



さて、今回は、Oracle10g及び、RAC関連ソフトウェアのダウンロード。

OTN USの元ネタ「18. Download Oracle RAC 10g Software」も参考程度に見てもらうとして、ソフトウェアをダウンロードしてもよかったのだが、Linux版のOracle10gのお遊び用環境がないこともあり、今回は、OTN ProfessionalのSoftware kitを利用することにした。

ただ、提供されているメディアは、DVDのみで今回利用しているDELL Optiplex GX260にはDVDドライブが無い。(CDとCDRWのタイプ)

ということで、PoewrBook G4にDVDをマウントし、OUI(Oracle Universal Install)を起動するdiscus1からPowerBook G4からscpコマンドでdiscus1の/tmp/ora以下にコピーすることにした。(PowerBook G4の IPアドレスは、192.168.1.13)。


以前にも載せたが、下記配置図を見ていただくと、どのような構成になっているかイメージしやすいと思う。

Rac_de_oracle_3

尚、MacOSXで、sshを許可するには、「システム環境設定」を起動->「共有」をクリック->「リモートログイン」チェックボックスをクリック->「開始」ボタンをクリックする。

Enable_ssh_1


● Apple PowerBook G4にDVDをセット。

Set_dvd_rom_to_powerbook_1


● clusterware、database、companionの各フォルダをscpでコピーする。

[root@discus1 ˜]# cd /tmp
[root@discus1 tmp]# mkdir ora
[root@discus1 tmp]# cd ora
[root@discus1 ora]# scp -r oracle@192.168.1.13:/Volumes/oracle_database_/clusterware .
The authenticity of host '192.168.1.13 (192.168.1.13)' can't be established.
RSA key fingerprint is f3:4b:5d:86:77:4d:3f:87:65:b7:51:e3:bd:39:04:2d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.13' (RSA) to the list of known hosts.
Password:
cvupack.zip    100% 8279KB 1.2MB/s 00:07
jrepack.zip     100% 20MB 563.7KB/s 00:37
・・・中略・・・
[root@discus1 ora]# scp -r oracle@192.168.1.13:/Volumes/oracle_database_/database .
Password:
blafdoc.css 100% 7061 6.9KB/s 00:00
darbbook.css˜ 100% 5145 5.0KB/s 00:00
darbbook.css 100% 141 0.1KB/s 00:00
・・・中略・・・
[root@discus1 ora]# scp -r oracle@192.168.1.13:/Volumes/oracle_database_/companion .
Password:
blafdoc.css 100% 7061 6.9KB/s 00:00
darbbook.css˜ 100% 5145 5.0KB/s 00:00
darbbook.css 100% 141 0.1KB/s 00:00
・・・中略・・・

と、まぁ、こんな具合。

| | | コメント (0) | トラックバック (0)

Mac De Oracle - 10万円 de RAC #23

10万円 de RACのつづき。今回は、Oracle Automatic Storage Management(ASMLib 2.0)のインストール及び構成。

  1. ハードウェアの価格構成
  2. Linux (CentOS 4.4)のインストール
  3. ネットワークの構成
  4. Openfilerのインストール
  5. OpenfilerによるiSCSIボリュームの構成
  6. Oracle RACノードでのiSCSIボリュームの構成 その1。 その2
  7. Oracle所有者と関連ディレクトリの作成及び環境変数の設定
  8. Oracle向けLinuxサーバーの構成(カーネルパラメータの設定)
  9. hangcheck-timerカーネル・モジュールの構成
  10. Oracle RACノード間リモートアクセスの構成
  11. Oracle RACノード構成ファイルの確認
  12. Oracle Cluster File System (OCFS2)のインストール及び構成 その1/