[buy][book] WEB+DB PRESS Vol.43 / Oracle研修受講 / [book]オラクルマスター教科書 Bronze Oracle Database 10g(DBA10g)編 / Oracle 10g R2をWindows XP SP2にインストール

Oracle研修受講

先週はOracleの研修を受講してきた。受講したコースは「Oracle Database 10g Release2 管理ネクストステップ」。

Oracleをインストールしたことがあるという程度の自分には、ちょうど良いレベルのコース。

オラクルマスター教科書 Bronze Oracle Database 10g(DBA10g)編

オラクルマスター教科書 Bronze Oracle Database 10g(DBA10g)編(林 優子)

早速Oracle Masterを受けることにしたので借りた。

Oracle 10g R2をWindows XP SP2にインストール

Enterprise Managerからホストログイン(ホスト資格証明)ができなくてハマった。

解決策としては下のアドレス参照。

確認するのは下記の2点。

  • 環境変数%TEMP%,%TMP% ディレクトリへの権限をEnterprise Manager用のユーザーに与える
  • ローカルセキュリティポリシーで「バッチジョブとしてログオン権限」をEnterprise Manager用のユーザーに与える
最終更新時刻: 2008年10月26日

Oracle 10g Release2 for Windowsをインストール / Oracle 10gの勉強(1) / Oracleの勉強(2) / PostgreSQLとOracleの使い方比較 / [buy]ThinkPad X31のメモリを増設

Oracle 10g Release2 for Windowsをインストール

Oracle 10gのバイナリはoracle.comから無料でダウンロードできるので誰でも勉強を始められる。

バイナリ的には製品版と同じだと思うが、リリース後の細かいアップデートやサポート情報はライセンスを買わないと受けることができないし、もちろん商用利用もできない。詳しくはライセンスを参照。

自分がダウンロードしたのは「10201_database_win32.zip」というファイル。

これを解凍して「setup.exe」を実行。

  • 標準インストール
  • 「初期データベースの作成」のチェックを外す

上記の設定でインストール。

インストールユーザに対して「バッチジョブとしてログオン」する権限を付与するため以下の設定を行う。

  • [管理ツール]-[ローカルセキュリティ設定]を開く。
  • [ローカルポリシー]-[ユーザー権利の割り当て]で[バッチジョブとしてログオン]を選択。
  • インストールユーザを追加する。

上記セキュリティの設定をしないと、Enterprise Manager上でホストログインできない。20080303#p04

Oracle 10gの勉強(1)

まずは準備。

データベースの作成

スタートから「データベース・コンフィギュレーション・アシスタント」を起動してデータベースを作成。

  1. データベースの作成を選択。
  2. テンプレートは「汎用」を選択。
  3. グローバル・データベース名は「orcl.oracle.com」を入力。
  4. SIDは「orcl」
  5. サンプル・スキーマを選択。
  6. 合計物理メモリは200MBくらい割り当て。
  7. キャラクタセットはUnicodeを使用。

後はデフォルト。

リスナーの作成

スタートから「Net Configuration Assistant」を起動してリスナーを作成。

全部デフォルト。

サービスの確認

下記3つのサービスが登録されて起動していることを確認する。

  • OracleServiceORCL
  • OracleOraDb10g_home1TNSListener
  • OracleDBConsoleorcl

上から、Oracle本体、リスナー、Database Console(EnterpriseManager)。

ちなみにリスナーはOracle本体に依存、DatabaseConsoleはリスナーに依存する。

そのため起動順も上から順番のほうが安全。たぶん。

EnterpriseManagerを使ってみる。

http://localhost:1158/em/

にアクセス。

まずはsysユーザ、インストール時に設定したパスワード、sysdba権限でログイン。

ここで運が良ければ「ステータス」が「稼働中」でグラフとかアラートとかが表示される画面が出るが、一発で出た試しはない。

リスナーより先にDatabase Consoleが起動していたりとか、リスナーがデータベースを自動認識(10gからの機能らしい)するまでのタイムラグだったりとかするんじゃないだろうか。

確認方法として下記のようなコマンドも有効。

emctl status dbconsole
lsnrctl status
tnsping localhost

後は下記コマンドでリスナー/エンタープライズマネージャを再起動してみるとか。(順番はリスナー→EM)

lsnrctl stop
lsnrctl start
emctl stop
emctl start

Oracleの勉強(2)

SQL*Plusを使ってみる

コマンドラインで下記コマンドを実行。

sqlplus / as sysdba

本来は下記のようにユーザ(ex.sys)とパスワード(ex.sysdba)を指定するが、上記のように省略するとOS認証になるらしい。(インストールユーザで実行すればSYSDBA権限になる)

sqlplus sys/oracle as sysdba

今後の勉強用に一般ユーザを使いたい。既に存在するhrユーザを使いたいが、セキュリティのためロックされている。下記コマンドでアンロックする。

ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK;

パスワードを「hr」にしてアンロックした。

改めて別のユーザでログインするには下記コマンド。

CONNECT hr/hr

現在ログインしているユーザは下記コマンドで確認できる

SHOW USER

有名(?)なemployees表を参照する権限がある。

SELECT * FROM employees;

今後、勉強用に使うテーブルを上記表を基に作っておく。

CREATE TABLE test AS SELECT * FROM employees;

この構文ってPostgreSQLでも使えるんだっけ?((-リファレンス見たら使えた。「Oracleの機能を元に設計されました」とのこと。-))

PostgreSQLとOracleの使い方比較

パフォーマンスじゃなく使い方とか機能の違い。

psql(PostgreSQL)/sqlplus(Oracle)

今のところpsqlのほうが使いやすい。(慣れてるから当然なんだが)

  1. psqlはテーブル名等を入力補完してくれるけど、sqlplusはしてくれない。(面倒)
  2. psqlはSQL以外の文の前に\がつくけど、sqlplusではつかない。(SQLとコマンドの区別がつきづらい)
  3. psqlは問い合わせ結果の列幅をデータ内容に応じて自動伸縮してくれるが、sqlplusではしてくれない。(見づらい)

1.についてはpsqlだと

SELECT * FROM empl

まで入力してタブを押すとbash等みたく

SELECT * FROM employees

のように補完してくれるがsqlplusは補完してくれないということ。

2.については例えばテーブルの定義を調べるときpsqlだとこう。

\d employees

sqlplusだとこう。(DESCはDESCRIPTIONの省略形)

DESC employees

psqlを終了するとき

\q

sqlplusを終了するとき

QUIT

3.については実行結果を見れば一目瞭然。

sqlplusでも見やすいようにするためにまずは行幅を適当に増やす。(デフォルトでは80文字で折り返しが入る)

SET linesize 1000

列幅をデータに応じて設定する。(固定幅)

COLUMN first_name FORMAT A10

employeesテーブルのfirst_nameカラムの列幅を10文字に設定した。

SQL

Oracleだと下記が通らなかった。

SELECT salary, * FROM employees;

PostgreSQLだと同様の構文は通る。

Oracleの場合、下記のようにすると通る。

SELECT salary, employees.* FROM employees;

別にいいけど。

あとよく使うDML/DDLの違いは

  • PostgreSQLにはMERGEがない

まだMERGEがなんなのかkwsk知らないけどINSERTとかUPDATEで代用可能なモノっぽいので困らない。

ThinkPad X31のメモリを増設

BUFFALO DDR メモリモジュール DN333-A512MZ

Firefoxを使い始め、さらにOracleをインストールしたことでThinkPad X31のメモリ使用量がきつくなってきた。そこでメモリを増設することにした。

768MB(512MB+256MB)だったが、512MBのメモリを購入して1024MB(512MB+512MB)に。

購入したのはBuffaroのDN333-A512MZ。本当は1GB増設して1.5GBにしたかったが、X31の上限が1024MBのため断念。

正直きびしいのはメモリ容量だけでなくCPU負荷もなんだけど、買い換える予算がないのと、X31以上に魅力のある製品が見あたらない。

最終更新時刻: 2008年11月08日

AJAX/Graphviz / こんなWebドキュメント管理ツールが欲しい / 行動理念

AJAX/Graphviz

http://ashitani.jp/gv/

こんなWebドキュメント管理ツールが欲しい

書いたけど消えたので再投稿。(tDiaryのバグ?自分のミス?)

  • 履歴管理
  • 検索
  • タグクラウド
  • WORD/PDF書き出し
  • アクセスコントロール
  • フィード
  • APP(ATOM Publishing Protocol)等のAPIによる更新(=クライアントソフト)

エンタープライズWikiもしくはシンプルなCMS

行動理念

主義、自戒、理念、原理、根幹、基準。自分の考えや行動を形成する「何か」。

  • 言い訳しない
  • 正論ありきで考える
  • 忙しそう/大変そうにしない
  • 迷ったときは極論で考える
  • 図に乗らない
  • 言う前にやれ

言い訳しない、のはこのブログを始めたときに決めたこと。

記事ごとに「よくわからないけど」とか言い訳しない。その代わり「このサイトについて」で「思いついたことをメモっていくので間違ったことがたくさん書いてあります。」と全体に対しては言い訳(というか誤解を招かないように)しておく。

といいながら「たぶん」とかいいわけしてるんだけど。だって人間だもの(言い訳)。自重すべき。

あと仕事面でも言われた。「言い訳」と「反論」は区別すべき。見苦しいし言う方も聞く方も時間の無駄。

正論ありき、は元上司の言葉。まずは正論で話すべき。いきなり詭弁を弄さない。信用を失う。

忙しそうにしない。はプライベートな友人と話すとき。例え毎日終電で、土日も仕事していようとも、「え?最近?忙しくないよ?」と言う。実際死ぬほどではない。若いんだから。終電逃したところで朝まで飲んで仕事に行けばいいし、遊びに行くときは仕事は切り上げる。

「だっておまえ飲みにに行くときの方が仕事ノッてるもんな…」とは元先輩の弁。

仕事面でも言われた。大変そうにしない。仕事がもらえなくなる。こっからは下っぱである自分の意見だが、忙しいならデータで示すべき。ただ忙しそうにして、たまに愚痴っても上司は「そうか大変だな」しか言えないだろう。

迷ったときは極論で。は遡ると中学生の時の理科の先生の問いと答え。

「外は雨が降っている。この教室から校庭の端まで石を投げるとき、速く直線的に投げるのと、ゆっくり円弧を描くように投げるのとどっちが濡れる面積が大きいのか?」

という問いに対する答え。

「極端に考えればいい。石が歩く速度で移動するのでは、石は全面濡れてしまうだろう。逆に超高速で駆け抜けるなら石に当たる雨粒は数滴だろう」

中学生の自分にとってはすごく納得のいく答えで、今でも迷ったときは極論で考える癖がついている。

図に乗らない、は親から言われること。「お前はすぐ図に乗るから」「実るほど頭を垂れろ」。ごもっともである。調子こかない。

言う前にやれ、は自戒。「あーすればいいのに」「あーだからだめなんだよ」と言うくらいなら実践する。一度「不言実行」した年は結構充実してたし達成感があった。ベストは「有言実行」なんだが。

どれも実践できてるわけではない。立ち止まって、自分はこの通り行動できてるだろうか。と判断する基準。また、僕は弱い人間であるので、「言い訳してるぞ」とか「それは詭弁だろう」「図に乗ってる」と指摘してください、というお願い。

最終更新時刻: 2008年11月07日

そろそろRORでもやっとくか

というわけでRuby On Railsをやってみることにした。

rubyはaptで導入済み(Ruby 1.8.2)なので、まずはRubyGemsを導入。

$ wget http://rubyforge.org/frs/download.php/29548/rubygems-1.0.1.tgz
$ tar xvfz rubygems-1.0.1.tgz
$ cd rubygems-1.0.1
$ sudo ruby setup.rb

そしたらrdocが無いと怒られた。

./lib/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load
-- rdoc/rdoc (LoadError)
from ./lib/rubygems/custom_require.rb:27:in `require'
from setup.rb:39

しょうがないのでrdocをパッケージで導入する。

$ apt-cache search rdoc
...
rdoc - Generate documentation from ruby source files
...
$ sudo apt-get install rdoc

そうすると今度はe2fsprogsが云々言われてアップデートできない。「今RORやりたいだけで、ext2のユーティリティなんかどうでもいいんだよ(゜Д゜)ゴルァ!!」と叫びたい気持ちを抑えてググったところ、下記コマンドを実行している例があった。(注意。危険なのでお勧めしません。)

$ sudo apt-get install --reinstall e2fsprogs -o APT::Force-LoopBreak=true

が、これを実行したら依存パッケージがいくつか壊れてしまい、以降aptコマンドが使えなくなった。

最終更新時刻: 2008年10月07日

mylab.jpダウン / mylab.jp復旧状況 / mylab.jpダウン経緯 / tDiary更新時の検索インデックス作成を非同期化できないものか / Oracle Master Bronze Oracle Database 10g合格

mylab.jpダウン

13日(金)夜から、18日(火)の本日昼まで、実に4日間ダウン。

しかも未だブログしか復旧できていないという有様。

それというのも前回のエントリのRuby On Railsを入れようとして失敗、の延長だったんだけど。詳しくはまた今度。

mylab.jp復旧状況

ホストしていたサービスは4つ。

  • http
  • http
  • dns
  • smtp

現在、以前とは別のサーバ上でhttpのみが稼働中。しかもブログ以外のコンテンツはまだこれから。ブログですら検索ができない状況。

最初Apache2.2を入れたらRastがコンパイルできなかったので検索は保留。(APRのバージョンチェックでエラーになる)

結局他の問題もあってApache2.0を入れなおしたが、最近はRastの開発も止まっているし、他の検索エンジンを模索するのもありかも知れない。けどまずはサービスの復旧が優先事項。

mylab.jpダウン経緯

  • aptの依存環境が壊れ(金曜日の記事参照)、aptコマンドがすべて依存関係のエラーで実行できなくなる。
  • dpkgで強制的にいくつかのパッケージをインストールし、aptの実行ができる状態まで持っていく。
  • パッケージ依存関係の修復を行うのが面倒になりapt-get upgradeしようとして途中でコケる。
  • 数々の重要パッケージをアンインストールした状態に陥り起動もできない状況に。

正直、油断してた。丁度次のサーバを構築中であったこともあって、何かあっても最悪乗り換えればいいと思ってた。反省。

あれですよね、ロボットものアニメでも新ロボット開発中に旧ロボットやられますもんね。で、試験段階のまま新ロボット起動。みたいな。

今そんな感じです。前のサーバの2倍くらいはすごいスペックです。購入は2年くらい前で、稼働もせずに放置されてた水冷サーバですが…。

tDiary更新時の検索インデックス作成を非同期化できないものか

亡くなる前の旧サーバでは、最近tDiaryの更新に非常に時間がかかるようになっていた。新サーバになってからは超快適。さくさく更新できる。

おそらくrastのインデックス再構築によるものだったと思うのだが、他のエンジンにしたとしても「更新時にインデックスを作成」する方式だとどうしても重い。

検索結果にタイムラグがあっても仕方がないので、インデックス作成を非同期化できると嬉しい。って、インデックス作成コマンド実行してる関数を非同期関数に変えるだけっぽいな。ソース読んでないから何とも言えないけど。

こういうとき、いわゆるTheSchwartzみたいなジョブキューサーバに投げておく、とかできると最近のWeb2.0っぽいのかもしれない。

Oracle Master Bronze Oracle Database 10g合格

Bronze取得に必要な科目は2つ

  • Bronze DBA10g
  • Bronze SQL基礎I

先週の土曜日に2科目連続で受けて、無事2つとも合格しました。

最終更新時刻: 2008年08月03日

mylab.jpダウン(2)

おそらく21日くらいから本日31日まで再度アクセスできない状況だった。

原因はDNSサーバの復旧をさぼっていたら名前が引けなくなっていたから。

最終更新時刻: 2008年11月27日