■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。

よくある質問(FAQ)

検索オプション 矢印

~
リセット
新規投稿
テーブル名の項目名の変更をしたいのですが、
ALTER TABLE テーブル名 RENAME COLUMN 旧項目名 新項目名
と
ALTER TABLE 組織マスタ CHANGE 旧項目名 新項目名 型
で試したのですがうまく行きません。
どのような方法があるでしょうか?教えてください。
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
Oracleでは、テーブルの列名だけを変更することはできませんので、
テーブル単位で再作成するなどの対応をお願いできますでしょうか。
(列名だけを変更し、データ型が同じということであれば、
データをスクリプト出力などで待避しておき、再作成後、INSERTすることが可能です。)

どうぞよろしくお願いいたします。
Oracleのリリース9.2以降では列名の直接変更が可能です。

構文は

ALTER TABLE テーブル名 RENAME COLUMN 旧項目名 TO 新項目名


です。(リリース9.1以前ではできません。)
こんにちは
後迫@SIです。

ご指摘いただいた方法で、列名の変更ができました。
このたびは知識不足で申し訳ございませんでした。
お詫びして訂正させていただきます。

バージョン9.2.0移行である場合は、
ALTER TABLE文で列名変更をご利用いただけますでしょうか。

どうぞよろしくお願いいたします。

タイミング等はわからないのですが、
特に変更等を行っていないテーブルなのに、
リンクキーがいつの間にか変わってしまうということが何度も発生しています。
例えば、以下のような項目でリンクを張っていたものが、A→Bのように変わってしまう。
A)
親キー属性 子キー属性
資金管理番号 = 精算書作成元資金管理番号
明細番号 = 精算書作成元明細番号
↓
B)
親キー属性 子キー属性
資金管理番号 = 資金管理番号
明細番号 = 明細番号

回避策等がありましたら教えていただけますよう、
よろしくお願い致します。
こんにちは
後迫@SIです。

お問い合わせいただきました件につきまして
お手数ですが、以下の追加情報をいただいてもよろしいでしょうか。

①リンク先のテーブル(子テーブル)を変更しているということはありますでしょうか?
それともリンク先のテーブルもまったく編集していませんでしょうか?

②問題の発生するエンティティで
複数のリレーションをはっているということはありますでしょうか?

お手数をお掛けしてしまい申し訳ございません。
どうぞよろしくお願いいたします。

以下お答え致します。

>①リンク先のテーブル(子テーブル)を変更しているということはありますでしょうか?
>それともリンク先のテーブルもまったく編集していませんでしょうか?
親・子各テーブルに対する変更はしておりません。
リンク先のテーブルがリンクしているテーブルを変更致しました。


>②問題の発生するエンティティで
>複数のリレーションをはっているということはありますでしょうか?
複数のリレーションをはっております。

リンクキーが変更されるタイミングが判りました(再現できました)ので、追記させて頂きます。

以下のようなリンクがはられたテーブルが存在します。

Aテーブル
|
Bテーブル(Aテーブルを親とする(依存))
|
Cテーブル(Bテーブルを親とする(非依存))


Aテーブルの項目の属性を変更します
(例)CHAR(1) → CHAR(3)

そうすると
Cテーブルのリンクが以下のように置き換わってしまう。

BEFORE)
親キー(Bテーブル)属性/子キー(Cテーブル)属性
A = C
B = D
↓
AFTER)
親キー(Bテーブル)属性/子キー(Cテーブル)属性
A = A
B = B

子キー属性の中に、親キー属性と同じ名前の項目が存在していることも
原因のひとつのようにみえるのですが、回避策がありましたら、お教えください。

以上、よろしくお願い致します。
こんにちは
後迫@SIです。

追加情報をいただきありがとうございます。
2点だけ、再現方法について確認させていただきたいのですが、

①
 Cテーブルには、Bテーブルと同じ属性名が存在し、
 かつ、その属性はBテーブルの外部キーとは
 なっていないということでしょうか。

 例えば以下のようなA→B→Cのリンクになっている場合に、
 Aのデータ型を変更すると、
 CエンティティにはってあるAAA,BBBの外部キーが
 AA、BBのに置き換わるということでよろしいでしょうか。

 Aエンティティ
 ------------
 A(PK)

 Bエンティティ
 -------------
 AA(PK)(AのFK)
 BB(PK)

 Bエンティティ
 -------------
 AAA(AAのFK)
 BBB (BBのFK)
 AA
 BB

②
 Aエンティティのデータ型を変更した場合に、
 「主キー項目の情報を外部キー項目に反映させますか?」とメッセージボックスが
 表示されると思うのですが、いいえを押した場合でも同様なのでしょうか。

以上、たびたび
お手数をお掛けしてしまい申し訳ございませんが、
どうぞよろしくお願いいたします。
お世話になっております。

以下、回答させて頂きます。
>①
> Cテーブルには、Bテーブルと同じ属性名が存在し、
> かつ、その属性はBテーブルの外部キーとは
> なっていないということでしょうか。
>
> 例えば以下のようなA→B→Cのリンクになっている場合に、
> Aのデータ型を変更すると、
> CエンティティにはってあるAAA,BBBの外部キーが
> AA、BBのに置き換わるということでよろしいでしょうか。
>
> Aエンティティ
> ------------
> A(PK)
>
> Bエンティティ
> -------------
> AA(PK)(AのFK)
> BB(PK)
>
> Cエンティティ
> -------------
> AAA(AAのFK)
> BBB (BBのFK)
> AA
> BB

はい。上記のようなリレーションとなっております。
更に補足させて頂きます。

AとBが依存の関係かつ、
BとCが非依存。
AとBエンティティのFK項目名は同名。
(上記図で言うと、Aエンティティの属性はAでなくAA)
(※FK項目名称が異なると「反映しますか?」のメッセージは出力されないようです)
BとCのFK項目名は異なる。

>②
> Aエンティティのデータ型を変更した場合に、
> 「主キー項目の情報を外部キー項目に反映させますか?」とメッセージボックスが
> 表示されると思うのですが、いいえを押した場合でも同様なのでしょうか。

はい。「いいえ」を押した場合で起こりました。

こちらでサンプルEDMを作成したので、
そちらをメールにて送信させていただきます。

以上、よろしくお願い致します。
SI Object Browser ER Ver.2.0.1.3 製品版(トライアル版)を使わせていただいております。

エンティティの定義内容はドメイン情報から取得できるようにはならないのでしょうか?
ヘルプには、「ドメインを指定すると、データ型、長さ、必須、デフォルト値、制約欄は、ドメイン情報が反映されます。」と定義内容の反映は記載されていませんが、
エンティティエディタでドメインを選択し、定義内容は記述せずに一度保存して、ドメインの定義を修正した後にエンティティを開くと反映されています。
こんにちは
後迫@SIです。

返信が遅れまして申し訳ございません。
現象を確認いたしました。

ドメインの「定義内容」のみ、ドメインの指定直後に反映されておりません。
Object Browser Ver.2の不具合です。
たびたび不具合を出してしまい、大変申し訳ございません。

この不具合につきましては、次回バージョンアップで修正いたしますので、
どうぞよろしくお願いいたします。
初めまして。使い始めて間もない者です。
過去ログをある程度までは読んだんですが、無さそうなので教えて下さい。

質問1
既存のedmファイルに、リバース機能を使って任意のテーブル(エンティティ)を
追加するにはどうすれば良いのでしょう?
メインモデルでもサブモデルでもどこでも構いませんので。

質問2
edmファイル間でエンティティをやり取りできないとのことですが、
ドメインもダメですか?

質問3
テーブルでもビューでも、ソースの列名定義行と同じ行ににコメント('--')が付けて
あると上手くリバースできないようですが、私だけでしょうか?


以上です。宜しくお願いします。
こんにちは
後迫@SIです。

お問い合わせいただきました件について回答させていただきます。

>質問1
>既存のedmファイルに、リバース機能を使って任意のテーブル(エンティティ)を
>追加するにはどうすれば良いのでしょう?
>メインモデルでもサブモデルでもどこでも構いませんので。

リバースエンジニアリングをすると
新規にedmファイルを作成し、リバースエンジニアリングいたします。
既存のedmファイルに差分エンティティを追加することは出来ません。
(ただし、リバースエンジニアリング後、エンティティをコピーし、
もうひとつのedmファイルに貼り付けることは可能です。)

>質問2
>edmファイル間でエンティティをやり取りできないとのことですが、
>ドメインもダメですか?

エンティティのコピー&ペーストは可能ですが、
ドメインのコピー&ペーストはできません。

>質問3
>テーブルでもビューでも、ソースの列名定義行と同じ行ににコメント('--')が付けて
>あると上手くリバースできないようですが、私だけでしょうか?

こちらにつきましては操作を確認させていただきたいのですが、
エンティティの定義行に--をつけた後、
エンティティのデータベース同期するということでしょうか?
それとも、
エンティティの定義行に--をつけた後、
フォワード→リバースを行うということでしょうか?
(どちらの操作でもエラーにはなりませんでした。)

どうぞよろしくお願いいたします。

後迫さま

ありがとうございます。
もしかしてとっても恥ずかしいことを聞いているのかもしれませんが、

>質問1
>>(ただし、リバースエンジニアリング後、エンティティをコピーし、
>>もうひとつのedmファイルに貼り付けることは可能です。)

上記の操作方法を教えて下さい。
二つのedmファイルを開いて、一方のedmに存在するエンティティを
属性も含めて丸々他方へコピーする方法です。
D&Dでもダメだし、右クリックしてもそれらしきものは無いし、
ctl+c も効かないしで、どうにも先に進めないのです。。。

=========
0121 訂正
なるほど。判りました。
モデルエクスプローラ上で右クリックしてもダメなんですね。
ダイアグラム上で右クリックしたら、ちゃんと「コピー」がありました。
質問1は忘れて下さい。お騒がせしました。
=========



>質問2
>>ドメインのコピー&ペーストはできません。

質問を変えます。
ドメインリストにある「書出」と「読込」機能を使って何とか移送は
できました。が、ドメイングループが抜けてしまいます。
せっかくがんばって階層化したのに(;_;)
方法はありませんか?



>質問3
>>こちらにつきましては操作を確認させていただきたいのですが、

下記のようなソースで張られたテーブルなんですが。。。

CREATE TABLE WK_TB
-- ////////////////////////////////////////////////
-- I/Fテーブル
-- ////////////////////////////////////////////////
(
AA VARCHAR2(6) -- 040120 mod
,BB NUMBER(7,0)
)
;

どうも私の操作方法は怪しいようですから、再度確認してみます。

以上
こんにちは
後迫@SIです。

追加情報をいただきありがとうございます。
以下に回答を述べさせていただきます。

>質問を変えます。
>ドメインリストにある「書出」と「読込」機能を使って何とか移送は
>できました。が、ドメイングループが抜けてしまいます。
>せっかくがんばって階層化したのに(;_;)
>方法はありませんか?

申し訳ございませんが、
書出し→読込の手順で、ドメイングループまで復元することはできません。
ご迷惑をお掛けしてしまい申し訳ございません。
この不具合につきましては、
次回バージョンアップで修正を検討させていただきます。


>下記のようなソースで張られたテーブルなんですが。。。
>
>CREATE TABLE WK_TB
>-- ////////////////////////////////////////////////
>-- I/Fテーブル
>-- ////////////////////////////////////////////////
>(
>AA VARCHAR2(6) -- 040120 mod
>,BB NUMBER(7,0)
>)
>;

つまり、最初にSQL*Plusなどのほかのツールでテーブルを作成した後、
OBERでリバースエンジニアリングしたときにエラーになると
いうことでよろしいでしょうか。
こちらでは再現することが出来ませんでした。
大変申し訳ございません。
コメントをはずした場合は成功するか、
再度ご確認をおねがいしてもよろしいでしょうか?
また、1テーブルだけリバースしたときも発生いたしますでしょうか。

どうぞよろしくお願いいたします。

表と表領域が断片化しているかどうかを
オブジェクトブラウザで見るには、どうすればいいでしょうか?
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
現状では、表領域の使用率を表示することができますが、
断片化の状態を把握することはできません。
誠に申し訳ございません。

今後のバージョンアップ項目として検討させていただきたいと思います。
どうぞよろしくお願いいたします。
Object BrowserVer7のトライアル版を使用しています。
DBサーバにObject BrowserVer7.0をインストールしました。
別のDBサーバのOracleには接続できるのですが、
自分自身のOracleに接続できません。
SQL*Plusでは、ホスト文字列をNullにすれば自分自身
に接続するのですが、Object Browserではどのようにするのでしょうか?
Oracleのバージョンは、8.0.5です。
こんにちは
後迫@SIです。

Object Browser Ver.7におきましては
NULLでローカル接続ができないため、
サービス名(接続文字列)を設定する必要があります。

ご希望に添えず誠に申し訳ございません。

(最新のVer.8ではローカル接続可能です。
Ver.8でのローカル接続方法は以下のページに記載しております。
http://www.sint.co.jp/siob/html/online8/faq/faq8tech1.html#8
)

どうぞよろしくお願いいたします。
オブジェクトブラウザ8で以下の不具合現象が発生しております。

[クライアント]
Oracle Client 8i 8.1.6.0.0

[サーバー]
Oracle 8i 8.1.5.1.0

OB8.0.3.8 -> サーバーA をSELECTすると、ORA-03113 が発生します。
と同時に、サーバーA で、ORA-07445が発生します。(アラートファイルに記録される。)

こちらの現象はオブジェクトブラウザのバグでしょうか?
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
こちらで現象の確認ができないため、
原因の特定が困難な状態です。
申し訳ございません。


つきましては手数ですが、以下の追加情報をいただいてもよろしいでしょうか。
①OSバージョン(クライアント、サーバの両方)
②SQL*Plusで同様のSQL文を実行した場合は発生しないでしょうか。
③他のクライアント端末でSQLを実行した場合も同様のエラーが発生いたしますでしょうか。

お手数をお掛けしてしまい誠に申し訳ございませんが、
どうぞよろしくお願いいたします。
OB8.0.3.8を使っています。
単純にスキーマのエクスポートをしようとしましたが
つぎのエラーでできませんでした。ちなみに、サーバの
コンソールでEXPコマンドで実行すると、ちゃんとダンプ
ファイルが作成されます。どうしてなんでしょう。。。
ご存知の方がいらっしゃれば、教えてください。。。
■OB8.0.3.8でのエラーの内容
EXP-00056: ORACLE error 942 encountered
ORA-00942: 表またはビューが存在しません。
EXP-00000: Export terminated unsuccessfully
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
以下の追加情報をいただいてもよろしいでしょうか。

①EXPの場合にエクスポートが正常にできたとのことですが、
 クライアント上のEXPを実行しましたでしょうか。
 それともサーバのEXPを実行しましたでしょうか?

②OBでエクスポートした場合とEXPで実行した場合のユーザは同一でしょうか?

どうぞよろしくお願いいたします。
返信が遅れてすみませんでした。このところの風邪にかかってしまって、
しばらく寝込んでしまってました。

①EXPの場合にエクスポートが正常にできたとのことですが、
 クライアント上のEXPを実行しましたでしょうか。
 それともサーバのEXPを実行しましたでしょうか?
→サーバのEXPを実行すると正常にできました。

②OBでエクスポートした場合とEXPで実行した場合のユーザは同一でしょうか?
→はい。同じユーザで実行しました。

ちなみにサーバ側とクライアント側でEXPのバージョンが異なります。
すみません。連絡が遅れました。よろしくお願いします。
サーバ側Export:  Release 8.1.7.0.0
クライアント側Export: Release 9.2.0.3.0
こんにちは
後迫@SIです。

追加情報をいただきありがとうございました。
おそらく、サーバが8iで、
エクスポートツールが9i付属のものであるためだと思われます。

Oracleのエクスポート、インポートについては、
同一バージョン間で行わないとエラーになることが多々あるようです。

例えば8.1.6と8.1.7間など、マイナーバージョンが異なるだけでもエラーになります。

そのため、
クライアントのエクスポートツールのバージョン(=クライアントのバージョン)を
サーバと同一バージョンにしていただくか、
サーバマシンで直接実行していただくという対処が必要になると思います。

どうぞよろしくお願いいたします。