db

論理的な一意性はユニーク制約にて示し、物理的な一意性を主キーによって示します。したがって、業務上の主キーは物理的な主キーにはしません。これには強いこだわりがあって、業務は常に変化し続けるものである 現在の業務上の主キーが将来的に主キーではな…

DHCP環境でインストールするときはループバック・アダプタをインストールしておく

しないと泣きを見る。

動的SQL EXECUTE IMMEDIATE

以前は、DBMS_SQL パッケージで動的 SQL を使用していたが、 最近は、EXECUTE IMMEDIATE を使用すると簡単である。 尚、解析のオーバーヘッドはかなりある。うみゅ・・知らんかった。

組み込み関数 USERとかUSERENVとか

なんかコミいったことするとき使えるかも。 SQL> select user from dual; USER ------------------------------------------------------------ SYSTEM SQL> select USERENV('sessionid') from dual; USERENV('SESSIONID') ----------------…

DBがオープンできない(ORA-00312)

ノートパソコンにいれてるOracleが不可解な動きをしていた。 oradimで起動させても、OEMではダウン中と表示されたり、起動させたあとでshutdown processing・・とか出てた。 そもそもOEMの認証まわりの動きがなんかおかしい気もするけど、いろいろやってたら…

プライマリキー

db

プライマリキーをどう決めますか? ある集合の中の1つを特定するキーを探してそれをPKにする ある出来事・事実を存在(特定)させるためにつけるID(単なる連番)をPKにする 世の流れは2番・・? 1番 select 売上明細.商品コード ,商品.商品名 from 売上 joi…

フラッシュバック体験

SQL> select * from scott.a as of scn 6677174; ID NAME ---------- ---------- 1 one 3 three 5 five 7 seven SQL> select * from scott.a; ID NAME ---------- ---------- 8 eight 1 one 3 three 5 five 7 seven SQL> alter table scott.a enable row mov…

CONNECTロールって

たいがいのCREATE権限があると思ってたのに ワタスのOracle10gR2ではCREATE SESSIONしか付加されない! なにゆえ!! http://jibun.atmarkit.co.jp/lskill01/rensai/bronzedba08/bronzedba01.html

代理キーとかサロゲートキーとか。の続き

id:bottleneckさんからトラックバックをもらいました。ぐはあぁぁあ。 1つの棚に複数の商品が置けてもいいつもりだったのに、 1つの商品しか置けないモデルになってしまってますね。 というわけで考え直しました。 改善版 わたなべさんとid:bottleneckさん…

ER図かんがえる

部署と従業員のER図。 簡単な入門書とかだとこんな感じかな。 その1 これは、見た瞬間に疑問が湧くわけで。 部署に所属してない従業員の部署IDはNULL?ダミー値? NULLにした場合、SQLの世界だとTRUE/FALSE/NULLの3値論理なのでイヤーな感じです。 ダミー値…

代理キーとかサロゲートキーとか。

恐れ多いですが、わたなべさんのモデルに対しての自分の意見を。 要件はこんなところですね。 倉庫が複数あるとして、倉庫にはさまざまな商品が保管されるとする それぞれの商品は倉庫毎の特定の棚に保管される(つまり、商品と倉庫の組み合わせで棚が決まる…

ファンクション・ベース索引

ファンクション・ベース索引を使う際に設定しておかなければならない初期化パラメータのことを忘れていた。 ファンクション・ベース索引を使用するためには、以下の設定を行うか、 SQL中に明示的にHINT句を指定する必要があります。 初期化パラメータ「QUERY…

BLOB操作ができた

以前、BLOBにExcelファイルを入れて・取り出したらファイルが壊れる現象にソウグウした。 そこで、"hello"と書いたファイルをBLOBに入れて・取り出した結果をみてみた。 "hell"と改行コード(0x0D,0x0A)が出てる・・・ 調べてみると、BLOBデータを書き込むフ…

すごそう

db

『自社製品開発に専念したい』そんな想いに応えます 札幌から世界に挑むDBMSメーカー! 誰か使ったことあるかな?

Oracleのserializable

トランザクション内ではSELECT時のデータを保証する 同じレコードに更新が複数からあった場合、先勝ち後負け(ORA-08177: このトランザクションのアクセスをシリアル化できません) SELECT FOR UPDATEと同じ動作ではない(SELECT時にロックかからない・更新…

BLOBにExcelファイル入れたら壊れた

BLOBを触ってみようと思いまして。 こちらのサンプルソースを使ってやってみました。 ディレクトリオブジェクトとかあるのね。知らなかった。 で、Excelファイルを入れて、取れたー!ってファイル開いたら「破損しています」 エエエエエー。なんでだよう。 j…

ORADIM

サービス/インスタンスの作成・起動・停止・削除がコマンドラインでさくっとできる。 DBCAは起動しているインスタンスしか削除できないが、ORADIMだと起動してなくても消せる。 とかいうシロモノらしい。。 WindowsでOracle使うのには必須のようだ。 マターク知…

OEM 10gってどうなの

Oracle10g(開発用ライセンス)を入れたマシンで DBCAで2つ目のインスタンスを作り、削除しました(ちょっとテスト用途) そのあとで emctl status dbconsoleやったら、立ち上がんないでヤンの! なんかORACLE_HOSTNAMEもホスト名に「.home」がついてヤンの…

db_cache_size

Oracleのアーキテクチャーとしてdb_cache_size * 2%を超えるよう な大きな表をFull Scanした場合は、LRUリストの最後方に置かれ長くキャッシ ュされることはない。http://www.insight-tec.com/mailmagazine/ora3/vol252.html へえ。そういう閾値なんだ。

「>=」&「<=」よりBETWEENを使ったほうが効率的

ということが分かった。 こんなテーブルで20マン件つくって検証。 CREATE TABLE TEST ( START_NO NUMBER(8,0) NOT NULL, END_NO NUMBER(8,0) NOT NULL, NOTE VARCHAR2(20) NOT NULL ) / ALTER TABLE TEST ADD(PRIMARY KEY (START_NO, END_NO) USING INDEX) /…

Oracle 10g SEにはpartition機能がない 01:33

http://www.oracle.co.jp/database/function.html えええええーーーーまじで・・・orz

Oracle 10g SEにはマテリアライズド・ビューの機能がない

http://www.oracle.co.jp/database/function.html えええええーーーーまじで・・・

外部結合のON句の条件

SELECT a.deptno, a.delete_flg, b.ename, b.delete_flg FROM dept a LEFT JOIN emp b ON (a.deptno = b.deptno AND b.delete_flg = 0 AND a.delete_flg = 0)左外部結合で、ON句で左表の条件にリテラルを入れても まったく考慮されないんですなあ。。

WHERE句にリテラルの条件を入れることでクエリをスキップ

オプティマイザはデータベース列ではない定数や変数の比較をまず実行するように、 実行計画を生成する。らしい。 たとえば、こんなSQLがあったとします。 SELECT * FROM A WHERE ・・・ UNION ALL SELECT * FROM A WHERE ・・・ このSQLはこんな内容だったと…

サブプロシージャで例外が発生した場合、戻り値はNULLだ!

ということがわかった。 サブファンクションの場合は例外処理部でRETURNを記述する必要がある。 create or replace package hoge is procedure parent; end hoge; / create or replace package body hoge is procedure child(in_i IN NUMBER, in_rtn OUT NUM…

結合インデックスせんりゃく

こんなテーブルがありましたとさ。 CREATE TABLE TBL ( COL1 VARCHAR2(1), COL2 NUMBER(5,0) ) そして、このテーブルを検索するこのSQLを速くしたいと。 SELECT * FROM TBL WHERE col1 = &#39;A&#39; AND col2 BETWEEN 1 AND 333333 TBLのレコード総数は100…

データベース実践講義 ―エンジニアのためのリレーショナル理論

まだAmazonに現れませんね。

ふむふむ。理解です。 DBの設計は、プログラムの都合を一切忘れて行わねばならない、というのが氏の主張するところである。 こういうことほんとに言ったのかな? 本来複雑なことをシステム化するのだから、DBをいいかげんにすればその分プログラムに複雑さが…

■ JDBC 4.0 仕様書翻訳Wiki http://ikda.net/fswiki/wiki.cgi?page=JDBC+4%2E0+%BB%C5%CD%CD%BD%F1 ROWIDがデータ型になるのかー。 DB2もROWIDないゾ。

きょうのITトレメ

【問題】 「WHERE deptno > ALL (20, 30, 40)」という条件をSELECT文で指定した場合、どの ような行が検索されますか?次の中から、最も適切なものを1つ選択してください。 このSQLを書く意味あるのか?