320_oracleの最近のブログ記事

【 2007年4月24日 】

 以前書いたOracleの想定テーブルサイズ計算SQLが翔泳社のDMマガジン6月号に載りました。およそ1ページも使って(もっとも3分の2はSQLリストだけど)。

 ありがたいことです。

【 2007年1月22日 】

 いまさらながら、Oracle8iの8.1.6をインストールする必要ができた。

 構成はPentium4のWindows Server 2003R1に、VMware Serverをインストールして、仮想マシンにWindows NT 4.0 Serverを構築。Oracleをインストールしようとすると、Universal Installerが起動しない。

 構成をXeon、VMware ESX Server、Windows NT 4.0 Serverにしても同じ。ちなみに8.1.7はインストールできる。

 いろいろ調べてみた結果、OracleのインストールCDにPentium4(以降)に対応していないDLLが含まれているみたい。で、以下の手順でインストールできた。

  1. インストールCDの内容をすべてハードディスクにコピー
  2. コピーした中からsymcjit.dllを探して削除
  3. ハードディスクからインストール

 古いバージョンを使うと、いろいろめんどくさいね。

【 2006年11月21日 】

 オラクルでデータの検索には欠かせない索引機能には、通常の昇順(1、2、3とかA、B、C)索引以外にも、降順(9、8、7とかZ、Y、X)索引も作れる。でも、期待した動作と違ったり、ちょっと癖があるので、ここで自己満足的にまとめてみた。

【 2006年11月13日 】

 スキルアップ講座『Oracle9i 物理設計』を斜め読みして、既存のテーブルから想定レコード件数のサイズを求めるSQLを書いてみた。

 引数にスキーマ名、テーブル名、想定レコード件数を指定して実行すると、指定したテーブルのインデックスサイズを計算する。もっとも、求まる値はぎちぎちにレコードが詰まった状態なので、マージンやエクステント分は状況に応じて加えて欲しい。

 また以前公開した想定テーブルサイズ計算SQLもちょっと直した。計算結果は変わらないけど。

【 2006年10月27日 】

 OracleのLONGは最大2GBものデータを格納するデータ型。それをSQL*Plusで表示したら大変なことになってしまうので、初期値として先頭80バイトまでしか表示しないようになっている。でもこれではデータディクショナリなどで、必要な情報を表示しきれないことがある。

 これをSQL*Plusで“SET LONG 200”とすれば、200バイトまで表示する。この時、80バイトで折り返されてしまうのでさらに、“SET LONGCHUNKSIZE 200”とすれば一行に表示される。

 LONGがデータサイズ、LONGCHUNKSIZEが行サイズと覚えればいいかな。

【 2006年10月12日 】

 オラクルがSQLを実行するときに、実行計画を立てる。その方式にルールベースオプティマイザ(RBO) とコストベースオプティマイザ(CBO)があるのは、周知のとおり。ルールベースならインデックスがあるというだけで利用するのに対し、コストベースでは事前に取得した統計情報を元に、使うインデックスやそもそもインデックスを使うのか検討する。

 どちらも人の目から見ると、使ってほしいインデックスを無視することがある。そんなときはSQLにヒント句をもぐり込ませると、意図したインデックスを使ってくれるようになる(ヒント句にはもっといろいろな指示ができる)。

 ところがSQLにヒント句を入れると、そのSQLはコストベースで動くようになる。ヒント句で指示を出したんだからルールベースになるような気がしていたので、ちょっと意外。 

【 2006年2月28日 】

[過去記事 元:2004-12-09 10:11:36 一部変更]

WindowsサーバにOracleをインストールすると、サービスにOracleのプロセスを登録してくれて、特に設定しなくても自動起動するので便利だ。
しかし、Oracleのアンインストールやインスタンスの削除をしても、サービスに残されてしまうときがある。
そのときはOracle付属のoradimコマンドを使う。
インスタンスのサービスを削除するなら
oradim -delete -sid インスタンス名
とする。

[過去記事 元:2004-10-06 11:18:46]

 久々にオラクルネタを。

 スキルアップ講座『Oracle9i 物理設計』を斜め読みして、既存のテーブルから想定レコード件数のサイズを求めるSQLを書いてみた。

 引数にスキーマ名、テーブル名、想定レコード件数を指定して実行すると、テーブルサイズを計算する。もっとも求まる値はぎちぎちにレコードが詰まった状態なので、マージンやエクステント分は状況に応じて加えて欲しい。

[過去記事 元:2004-05-26 17:50:44]

Oracleのsqlplusで"&"を含む文字列を使いたいときには、エスケープ機能を利用する。
通常"&"を使うと、入力プロンプトになってしまうが、何か任意の文字をエスケープ記号として指定することによって、そのエスケープ記号に続いて"&"を書けば文字として利用できる。

たとえば":"をエスケープ記号として使いには以下のようにする。
SQL>SET ESCAPE ':'

SQL>INSERT INTO TEST VALUES ('A:&B');

1行が作成されました。

SQL>SELECT * FROM TEST;

TEST
----------
A&B

後日談
この話はよく人に尋ねられる。

[過去記事 元:2004-02-03 11:27:01]

OracleではテーブルにMONITORING属性をつけ監視モードにすることが出来る(CREATE、ALTERどちらでも可)。
では、監視モードとは何だろうか。

アーカイブ

広告

広告