Home > Oracle Archive

Oracle Archive

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Comments (Close): -
  • TrackBack (Close): -

Oracle一意キー制約

  • Posted by: tam
  • 2010-05-03 Mon 10:37:14
  • Oracle
黒本8章の仕上げに章末問題を解いた。

選択肢「一意キー制約が定義されているのでNULLは1行分であれば入力できる」をYesと信じて疑わない自分。
間違いにも気づかない自分。
「なぜ?NULLは1件だけでしょ」って言い張る自分。
ふと我に返る。・・それはSQL Serverじゃんorz

OracleからSQL Serverに流れたとき、自分的にどうしても許せなかったのが一意キーの扱いだった。
トリガーで条件満たしたらID発行とかしたくても出来ない。
表を分けるほどではないときこれはすごく不便。
SQL ServerってGUI便利だしストアド関連が扱いやすいけど、世間一般の標準から外れてることが多々あるのが問題だ・・

データディクショナリ

  • Posted by: tam
  • 2010-05-03 Mon 10:09:03
  • Oracle
今日は早起きしたので頭が冴えているうちにデータディクショナリについてさらっと流した。
データディクショナリとは、オブジェクトや各種情報を格納するための表、ビューの集合とのこと。

とりあえずsystemでログインして、データディクショナリを確認。

データディクショナリ確認

データディクショナリの一覧はDICTIONARYに格納されており、制約関連はこれら3つのデータディクショナリで用途別に管理しているらしい。

これらディクショナリの構成はDICT_COLUMNSデータディクショナリで求められるらしいので、とりあえず定義を確認。

データディクショナリ2

テーブル名にディクショナリを指定してやれば構成を展開できそう。
せっかくなのでユーザー制約を確認してみる。

SQL> select * from dict_columns where table_name = 'user_constraints';

レコードが選択されませんでした。



あれ、何もない。

とりあえず他の2つも確認してみたけど該当なし。 はて?

そういえば、表の長さは30バイトまでが上限だけど、それってディクショナリ内のサイズが30バイトだからなんだろうか。カラムも同様なのかな。
データベースリンク(128バイト)に関する情報はここでは管理できなさそうだ。

よくよく考えてみると、検索条件が小文字だったので大文字に変更して再度チャレンジ。
結構件数多そうなので念のため5件だけピックアップ。

SQL> select * from dict_columns where table_name = 'USER_CONSTRAINTS' and rownum
<= 5;

TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------
COMMENTS
--------------------------------------------------------------------------------

USER_CONSTRAINTS OWNER
Owner of the table

USER_CONSTRAINTS CONSTRAINT_NAME
Name associated with constraint definition

USER_CONSTRAINTS CONSTRAINT_TYPE
Type of constraint definition


TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------
COMMENTS
--------------------------------------------------------------------------------

USER_CONSTRAINTS TABLE_NAME
Name associated with table with constraint definition

USER_CONSTRAINTS SEARCH_CONDITION
Text of search condition for table check


こんな感じで格納されているらしい。

今日の勉強内容

  • Posted by: tam
  • 2010-04-19 Mon 23:47:06
  • Oracle
今日は教科書の7章+8章途中まで進めた。
なるべく内容をきちんと噛み砕きながら読んでいるけど、8章のスキーマオブジェクト管理は正直苦手だ。
っていうかだるいorz
とりあえず本当は先週末までにはとっくに進んでないとダメな範囲なので気合いれていこう。


ORA-00922

  • Posted by: tam
  • 2010-04-19 Mon 23:31:15
  • Oracle
DBCAでデータベース作成中、ORA-00922が発生。
ORA00922

無視すると次はORA-28000が発生。
ORA28000

はて、これは何だろう。
とりあえずこれも無視して続行。

作業完了後、とりあえず以下フォルダ内のログを確認。
{ORACLE_BASE}\cfgtoollogs\dbca\orcl

確認したところpostScriptsに上記エラーが書き込まれていた。
alter user CTXSYS account unlock identified by ******
でこけてるようだけど、ユーザーCTXSYSってなんだ?どうやらOracleTEXTのアカウントらしい。
OracleTEXTって何だ・・は置いとこう。

ちなみに以下内容がログに2回ほど書き込まれてた。
どうもCTXSYSでログインして、drop文を実行したかったようだけど、アカウントロックで削除できなかったようだ。
alter user CTXSYS account unlock identified by ******
*
行1でエラーが発生しました。:
ORA-00922: オプション指定されていないか、または無効です。


ERROR:
ORA-28000: アカウントがロックされています。


警告: 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: ファイル"C:\app\tam\product\11.2.0\dbhome_1\ctx\admin\defaults\drdefset.sql"をオープンできません。


調べてみたところ、OracleTextのデフォルトの削除およびdrdefset.sqlの実行に失敗した模様。
あまり重要そうでもないのでここだけ再実行するほどでもないのかな。
でも気になるのでファイルの中身を確認しておこう。
drdefset
・・・ファイル名ちがうがなorz
これはインストーラの不具合だよね。
っていうかテストくらいしなさいw

つまりテストされずにスルーされる程度重要なものってことはわかった。
無視しとこう。



オラクルマスター教科書

  • Posted by: tam
  • 2010-04-18 Sun 22:55:13
  • Oracle
翔泳社の正誤表ページを確認したところ、以前指摘した内容が反映されていた。
ちょっと嬉しい。

しかし他にも色々あるなぁ。
なるべく正誤表の内容を教科書に書き込むようにしているけど、これってメール登録したら更新時にメール送ってくれないのかな。
見に行くのが面倒・・

Index of all entries

Home > Oracle Archive

タグクラウド
検索フォーム
Twitter
リンク
QRコード
QR
RSSリンクの表示

Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。