■SI Object Browser 掲示板


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

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

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

よくある質問(FAQ)

検索オプション 矢印

~
リセット
新規投稿
平素は格別のお引立てを賜り、厚く御礼申し上げます。
誠に勝手ながら、弊社では以下の期間を年末年始休業とさせていただきます。

2022年12月29日(木) ~ 2023年1月4日(水)

■お問い合わせについて
最終日2022年12月28日(水)の技術サポート受付は15:00までとさせていただきます。
※年末のため混雑が予想され、お問い合わせ内容によっては
 年内にご返信できない場合がございますが、
 2022年1月5日(木)より順次ご返信させていただきます。

ご不便をおかけ致し誠に申し訳ございませんが、何卒ご了承ください。
お世話になっております。

・外部出力の列タイトル出力をコメントを使用に設定
・テーブルのデータタブで項目一覧を使用し表示する項目を絞り込み

以上の状態でクリップボード出力を行った際に明細は問題ないのですが
列タイトルが絞り込み前の状態で順に表示されています。

例)A B C D という列名で BとCに絞った場合
A Bという列タイトルが表示される。(数は正常ですが内容が誤り)

コメントではなくテーブルの項目名で出す場合は正常に出力されています。
こちらは不具合でしょうか?
OBサポートです。
本件、ご回答が大変遅くなってしまい誠に申し訳ありません。

■クリップボード出力時の列タイトルの挙動について
お問い合わせ頂いた事象につきまして、弊社でも同様の事象を再現いたしました。
列名をタイトルとした場合には正常に出力されていることからも
ご認識の通りでSI Object Browser側の内部の不具合と考えられます。

大変ご迷惑をおかけしてしまい、誠に申し訳ありません。
本件、開発側に伝えた上で修正を検討させていただきます。

大変お手数ですが、何卒よろしくお願い申し上げます。
SELECT文の実行結果、約40万件のレコードをExcelファイルに出力した際、処理の途中で「クリップボードアクセスが拒否されました。を開けません」というエラーメッセージが表示され、出力に失敗します。

エラーが発生するのは20万~30万件が出力されたタイミングが多いですが、常に同じ件数ではありません。
また、PC再起動直後であれば正常出力する場合があることも確認しています。

SQLを編集して複数回に分けてデータ取得すれば回避できるとは思いますが、できれば1回で取得したく、対処方法があれば教えていただけないでしょうか。

実施環境
・製品:SI Object Browser for Oracle 21(x64)
・OS :Windows 10 Enterprise LTSC
・Office:Microsoft Office Professional Plus 2019
・Oralce:Oracle Client 18.0.0
OBサポートです。

ご回答が大変遅くなってしまい誠に申し訳ありません。

■Excel出力時のエラーについて
お問い合わせ頂いた事象につきましては、
Excel側の仕様やご利用環境に依存することから、現在の実装上有効な対策ができていない状況でございます。
大変ご不便、ご迷惑をおかけしてしまい、誠に申し訳ありません。

CPUやメモリの利用状況によって事象の改善が図れる可能性がございますので、
別途下記方法にて事象の緩和されるかどうかお試しいただけますと幸いです。

例1:Excel出力時には他アプリケーションの実行を終了する
 Excel出力時に不要なアプリケーションを起動している際には、
 大変お手数ですがあらかじめアプリケーションを終了した上で出力の実行をお願いいたします。

例2:最新のデータを事前に読み込んだ状態でExcel出力を実施する
 Excel出力実行前の画面において、「最新のデータを読み直してから出力する」のオプションがございますが、
 こちらを利用するのでなく、事前にデータグリッド上でデータを最新化した上での出力をお願いいたします。

大変お手数ですが、何卒よろしくお願い申し上げます。

ご回答いただき、ありがとうございます。

環境に依存する問題とのこと、承知しました。
他のアプリを事前に終了させる等で対応いたします。

テーブルの複製、およびデータ取込について質問です。
初めてこちらの掲示板を使用して質問します。
至らぬ点等あるかもしれませんが、解決策についてご教示いただければ幸いです。


【Object Browser情報】
OBの製品名 :SI Object Browser for Oracle 21
OBバージョン :21.1.0.0
OBエディション :通常版

●要望
①既存テーブルのバックアップ作成
②既存テーブルのコピーを作成、既存テーブルと入れ替えて使用

例)実績結果(テーブル名)
①テーブルのコピー
②テーブルの貼り付け
③実績結果の名前を変更「実績結果_BK」
④貼り付けしたテーブルの名前を「実績結果」として使用したい。

●要望②
既存テーブルのデータ件数が約50,000レコードあります。
バックアップ後に入れ替えたテーブルで項目の型を変更したいです。
既存データがあると型の変更ができないので、中身を一度csv等で出力して退避、
型の変換後にcsvデータを取り込みたいと思っています。

Object Browserで上記のような対応はできますでしょうか。
または、SQLplus等でやる場合はどのような対応をすればできますでしょうか。

●対応案
Object Browser内の機能のExport、Import、ロードを使用しようかと思いましたが、
フォルダ内に使用ツールが見当たらずうまく出来ませんでした。
(expdp.exe、impdp.exe、sqlldr.exe)

●確認したフォルダ
C:\app\client\Administrator\product\12.2.0\client_1\bin

●現状のテーブルサンプル

CREATE TABLE [スキーマ名].実績結果
(
実績NO NUMBER(6,0) NOT NULL,
名称ID VARCHAR2(10) NOT NULL,
値 VARCHAR2(10) NOT NULL, ※←「値」項目の型を変更したい
日時 DATE NOT NULL,
CONSTRAINT PK_実績結果 PRIMARY KEY (実績NO, 名称ID) USING INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
TABLESPACE USERS
STORAGE(INITIAL 904K NEXT 16K MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
NOLOGGING
ENABLE,
CONSTRAINT FK_実績結果 FOREIGN KEY (実績NO) REFERENCES [スキーマ名].実績テーブル (実績NO) ON DELETE CASCADE,
CONSTRAINT FK_実績結果_名称 FOREIGN KEY (名称ID) REFERENCES [スキーマ名].名称マスタ (名称ID) ON DELETE CASCADE
)
OBサポートです。

■テーブルをコピーした上での定義変更について
お問い合わせ頂いた内容につきましては、下記方法で実現可能と考えられます。

例①)テーブルの定義のみをコピーして定義変更後にinsert ~ select を実施する方法
 1. SI Object Browserのテーブルリスト上で既存のテーブルをリネームします。
  ⇒今回のケースでは、はじめに「実績結果_BK」などにリネームを実施する

 2. その後、リネームしたテーブルを選択し、
  ショートカットもしくは右クリック > 「コピー」からオブジェクトのコピーを行います。
  ⇒コピー後、同じテーブルリストの画面上へ貼り付けを行います。
  この時
  ・インデックスを含める
  ・テーブルデータを含める
  のチェックははずしてください。
  また、テーブル名についても変更を行ってください。(元の「実績結果」へ変更しておく)

 3. 空のテーブルの定義を変更後、SQL実行画面からinsert ~ select文によるデータ追加を実行する
 2.までの手順で作成されたテーブルに対してSQL実行画面よりinsert ~ select 文を実行することで、
 退避しておいたテーブルから新規に作成したテーブルへデータを移行することが可能です。

 この際に、データの互換性を考慮する必要がある場合には、
 適宜selectする各列についてcastを行ってください。


例②)単純にテーブルコピーを行って定義変更する
 もし例①が可能であれば、既存のテーブルをコピーした状態でも定義変更は可能と考えられます。
 例えばvarchar2型のサイズを変えるのであれば、既存のデータで変更後の列を超過しないのであれば
 変更は可能です。
 また、char⇒numberについても元々あるデータを暗黙的に数値へ変更可能であれば、
 同様に定義変更が可能です。
 ⇒こちらにつきましては、弊社側で考慮不足がある可能性がございます。
  もしご利用環境で既にエラーとなり変更ができないなどであれば、
  恐れ入りますが上記方法はご利用いただけません。

■imp/expユーティリティの利用について
Oracle Instant Clientをご利用の場合でもimp/expユーティリティ自体の利用は可能です。
Oracle社が提供するTools-optional packages(Data PumpやSQL*Loaderの機能を含む拡張パッケージ)を入手し、付属のexp.exeファイル等を$ORACLE_HOME\bin配下に配置することで
SI Object Browserからもご利用いただけます。

ただし、imp/expユーティリティでは既存のテーブルデータをバイナリ形式で外部ファイルに出力
⇒その後インポート先の環境に対して同じテーブルを生成(既にある場合には上書き)といった動作で
データの作成を行うため、ご要望に沿った動作とならない可能性がございます。
恐らく今回のケースであればSQL*Loaderの機能を利用する方がご要望に沿えるかと存じます。
⇒SI Object Browser側では「ロード」機能して実行いただけますが、こちらもimp/expと同様に
 外部の実行ファイルが必要となります。

※なお、詳細な動作につきましては
 別途Oracle Databaseの公式リファレンス等をご確認ください。


大変お手数ですが、何卒よろしくお願い申し上げます。
ご確認、ご回答ありがとうございます。

例②は、既存データの関係で変換が不可と判断しました。
(型がVARCHARの為、データ内に数値と文字が混在している)

例①ですが、
これは、私が既存テーブルではなく、コピー後に作成したテーブルを使用したい。
と記載した為、INSERT処理にてデータを追加する方法をご教示していただいた。
という認識で合っていますでしょうか。

対応方法を以下のようにする場合、
ご教示していただいたINSERT処理とテーブルコピー時に「テーブルデータを含める」の処理は、
同等の対応と思っていますが、INSERT処理と「テーブルデータを含める」に違いはありますでしょうか。

●対応方法
元々は、既存テーブルは変更せず、コピー後のテーブルを使用したいが、
制約も絡む為、やり方を変更することにしました。

実績結果テーブルのバックアップは、2種類のバックアップを作成。
・SQLPlusからExport処理でdmpファイルの取得。
 (※万が一、テーブルが破損等してもImport処理で戻せるように)
・SI Object Browser上からテーブルのコピー。
 「テーブルデータを含める」にチェックして、データのみの「実績結果_BK」テーブルの作成。 

実績結果テーブルの定義構成(ソース)をコピーしておいて、既存のテーブルは削除。
その後、項目を追加、型の変更をした定義構成でCRETE文にて実績結果テーブルを作成。
CSVデータは、SQL*Loaderにて取り込むつもりです。

■imp/expユーティリティの利用について
記載してから気づいたのですが、Oracleの機能なのに質問してしまいすみませんでした。
Oracleのリファレンスを参考に必要があれば、インストールするようにします。

OBサポートです。

■例①について
例①につきましては、
・テーブルのコピー(DDLによる同じ定義のテーブルを作る)
・コピーしたテーブルの定義を変更
・後付けでデータを追加
の手順における例をご提示しておりましたが、型や既存のデータの問題で単純にinsertが行えないようであれば、こちらの方法も難しいと考えられます。
※実質 例1. 例2のどちらも同じ手順となります.
 例2 につきましては例1 が可能だった場合に、より単純な方法をご提示させていただきました。


■テーブルコピー時にテーブルデータを含む設定の動作について
「テーブルデータを含める」のチェックをONの状態でコピーした際の動作と
insert~selectによるinsert処理については、ご認識の通りで同等の動作となります。
⇒どちらもinsert文による既存のデータを追加する動作となります。

■imp/expユーティリティについて
本件、外部製品となりお力添え出来ず誠に申し訳ありません。

何卒よろしくお願い申し上げます。
ご確認、ご回答ありがとうございます。

Insert処理とテーブルコピー時に「テーブルデータを含める」の動作が同じとのことでしたので、
そちらの方法でデータBKとして対応しました。

想定通りの処理が出来ましたので、解決いたしました。

ご対応ありがとうございました。
SI Object Browser for Postgres 22で、オブジェクト比較機能について質問です。

オブジェクト比較結果のうち一部のFUNCTIONについて、それぞれのDBでソースコードが同じでも比較結果が比較1のみ、比較2のみ存在すると扱われています。
比較結果の補足①の内容が異なるために起きているのではないかと思いますが、補足①、補足②についてヘルプに具体的な説明がないので理由がわからない状況です。

補足①、補足②に表示される内容について分かる方がいらっしゃいましたら教えて頂けないでしょうか。
OBサポートです。

■オブジェクト比較の補足欄について
マニュアル等に明確な記載がされておらず、誠に申し訳ありません。
SI Object Browserのオブジェクト比較の補足欄は
通常下記項目を表示いたします。

・補足①
引数の型

・補足②
戻り値の型

何卒よろしくお願い申し上げます。
ご回答ありがとうございます。

比較したDBではFUNCTIONのソースコードに差異はありませんでした。やはりオブジェクト比較結果は差異有(補足①で片方の引数が結果異なる)なので調べてみましたが、ソースコードの引数に複合型を使用していると、比較がうまく機能していないのではないかと思います。

FUNCTIONの引数に指定している複合型のオブジェクトは、pg_typeに個別で登録されたもので、比較した環境では、oidがそれぞれ異なっていました。ObjectBrowserの内部仕様はわかりませんが、補足①の引数の名称取得に比較先1の情報を使って比較2の名称を取得したために、比較結果が異なり、差異ありと判断しているのではないかと推測しております。

確認して頂ければと思います。
OBサポートです。
本件、情報提供いただき誠にありがとうございます。

■SI Object Browserの想定するデータ型
お問い合わせ頂いた事象につきまして、弊社環境でも再現を確認いたしました。

SI Object Browserのオブジェクト比較においては
PotgreSQLが既定で定義するデータ型を想定しているため
create typeによって新規作成したデータ型を同じ型として判定できていないことが原因と考えられます。
⇒厳密には、ご指摘いただいたようにoidの異なる引数について正しく比較を行えていないことが原因と考えられます。

例)
比較先1:
複合型:complex_sampleという名前でtypeオブジェクトを作成

比較先2:
比較先1と同名・同じソースでcomplex_sampleを作成

⇒それぞれの環境でcomplex_sampleを引数にもつ同じソースの関数を生成し、比較を行うと
比較先1と比較先2で異なるoidを持つ引数(引数の異なる関数)として比較される


本事象につきましては、
現状製品の内部動作的に回避ができないため、
同一のfunctionについても異なるfunctionとして差分が表示されてしまいます。

大変ご不便ご迷惑をおかけしてしまい、誠に申し訳ありません。
本件、開発に情報連携した上で、動作の改善を検討させていただきます。

何卒よろしくお願い申し上げます。
ご確認ありがとうございます。

再現できた旨、承知しました。

一部の結果に問題があると比較結果全体を信用することができないのでぜひとも修正の検討をお願いします。

対応ありがとうございました。
SI Object Browser for Postgresを使っています。

テーブルAに項目Bがあります。
項目Bの型がdaterangeです。
テーブルAに登録したデータを確認するとき、下記のエラーが起きます。
"型[3912]を記述できません。Complex type must be an array,composite or enum type."

OBサポートです。
ご回答が大変遅くなってしまい、誠に申し訳ありません。

■SI Object Browserがサポートするデータ型について
誠に恐れ入りますが、SI Object Browserではdaterange型を含む一部のデータ型に対応しておらず、
テーブル > データタブによるデータ表示時に該当のエラーが表示されます。

大変ご不便、ご迷惑をおかけしてしまい、誠に申し訳ありません。
何卒宜しくお願い致します。
SI Object Browser ERで作業していると、テーブル定義に、FKカラムが勝手に追加される事があります。
新規にリレーションを追加した時に、FKカラムが追加されるなら、まだ理解できるのですが、ユニークキーとは関係の無い定義変更をしていて、気づくと、思いもよらない別のテーブルにFKカラムが追加され、せっかくリレーション設定していたカラムが勝手に置き換わっています。

どんな条件でFKが追加されるか、再現の仕方はわかりませんが、論理名が異なるカラム同士をリレーションしていると、勝手にFKが追加され事があるようです。
知らないうちにFKが追加されるので、もし気づかないと致命的な定義ミスに繋がります。

勝手にFKを追加しないようなオプションがあれば教えてください。
OBサポートです。
ご回答が大変遅くなってしまい、誠に申し訳ありません。

■リレーション作成時にFKが追加される動作について
SI Object Browser ERでは、
主キー属性を持つエンティティ(親エンティティ)と他のエンティティ(子エンティティ)のリレーションを作成する際には、
主キー列を参照する同名の属性を子エンティティ側に自動で作成する動作仕様となります。
⇒表記揺れの防止を想定する動作となります。

誠に恐れ入りますが、本動作については現状オプションによる制御が行えません。

上記ケースでリレーションを作成した際にもし意図しない属性が追加される場合には、
・リレーションシップ画面からの使用キーの変更
・子エンティティ側で自動作成された属性を削除
などの運用をお願いできますと幸いです。

大変ご不便、ご迷惑をおかけしてしまい、誠に申し訳ありません。
何卒よろしくお願い申し上げます。

意図しない属性が追加される事と、オプションによる制御が行えない事は、まだ納得できたのですが、定義済みのリレーションが勝手に置き換わるのは、不具合ではないでしょうか。
勝手に変わった定義を検出する工数が、週に数時間、余分にかかっています。
対応の検討をお願いします。
本日起動すると、タスクバーにアイコンは出てきますが、
画面が起動されません。
5分位待ってみましたが、タスクマネージャのCPUは
0%のままで起動されません。
何が原因でしょう。
昨日、当日で設定を変えたり追加のインストールをした
などはありません。
よろしくお願いいたします。
OBサポートです。

■SI Object Browserのウィンドウが表示されない事象について
お問い合わせ頂いた事象につきましては、
SI Object Browserの初期表示位置がメインウィンドウの外に出てしまっていることが原因と考えられます。
本事象はマルチモニター環境からシングルモニター環境への切り替えを行った際に発生することがございます。

誠に恐れ入りますが、下記方法にて正常起動が可能かどうか
ご確認をお願いできますでしょうか。

【解消手順】
1. タスクマネージャでSI Object Browserを終了させる
2. 付属の「画面レイアウト初期化ツール」によって各種レイアウト設定を初期化する
 ・「画面レイアウト初期化ツール」の配置場所:C:\Program Files\OBOXX\guiinit.exe
 ※XXはSI Object Browserのメジャーバージョン番号に対応します。

3. SI Object Browserを再起動する
 
大変お手数ですが、何卒よろしくお願い申し上げます。