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

投稿日: 2008年03月05月

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のメモリを増設

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

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

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

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

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ