Readme

提供: InterBase
移動: 案内, 検索

メインページ へ戻る


本リリースでは、不具合修正が行われています。 解決された問題のリストについては、こちらを参照してください。 本リリースでは新機能が導入されています。詳細については、「新機能」を参照してください。

この Readme は、次のセクションから構成されています:


メモ: InterBase 2017 より前のリリース情報については、「以前のリリース」を参照してください。

新機能

ODS の新バージョン

InterBase 2017 で作成されたデータベースは、ODS 17 を使用します。

isql

新しい RECONNECT コマンド
isql は新しいコマンド、RECONNECT をサポートしました。RECONNECTisql や SQL スクリプトで使用して、最後に接続に成功したデータベースに再接続します。詳細については、RECONNECT を参照してください。
新しい -names コマンドライン オプション
isql は、新しいコマンドライン オプション、-names <文字セット名> をサポートします。このオプションを使用すると、現在のデータベース接続に使用する文字セットを指定することができます。詳細については、「コマンドライン オプション」を参照してください。


全オンライン データベースのモニタリング

InterBase 2017 では、単一のコネクションで、サーバー内の全オンライン データベースのモニタリングを提供します。管理者は、サーバー レベルの統計を使用して、インスタンスの利用状況をさらにモニタリングすることができます。

メモ:この機能は、ODS 17 以降でのみ利用可能です。

この機能を使用するには:

  1. システム上の管理データベースに接続します。
  2. 単一のデータベースで行うのと同じ要領で、パフォーマンス モニタリング クエリを、任意の TMP$ テーブルに対して実行します。現在オンライン上にあるすべてのデータベースの累積データを見ることができます。

制限事項

  • admin 以外のデータベースに対する SWEEP、FLUSH、RECLAIM については、TMP$DATABASE に対して UPDATE オペレーションを実行します。
  • admin 以外のデータベースに対する COMMIT、ROLLBACK については、TMP$TRANSACTIONS に対して UPDATE オペレーションを実行します。


サブスクリプションは、ALTER TABLE の変更を反映する

サブスクリプションは、ALTER TABLE で列が追加された際に、変更を反映するようになりました。たとえば、次のコード FOO_SUBS は、新たに追加された列 BID を表示します。

CREATE TABLE FOO (AID INT);
CREATE SUBSCRIPTION FOO_SUBS ON FOO;
INSERT INTO FOO VALUES (1);
 
ALTER TABLE FOO ADD BID INT;
UPDATE FOO SET BID=2;
COMMIT;
メモ: データベースは ODS 17 でなければなりません。


排他的隔離レベル

排他的隔離により、トランザクションは、対象テーブルに対して排他的ロックを取得することができ、テーブルに対して、SELECTINSERTUPDATEDELETE を実行できる唯一のものとなることができます。詳細については、「排他的隔離レベル」を参照してください。


SQL 派生テーブルのサポート

InterBase が、よく使用される SQL 開発機能である、派生テーブルをサポートするようになりました。派生テーブル構文により、既存のアプリケーションの機能を強化して、InterBase をバックエンド RDMBS として使用できるようにします。詳細については、「派生テーブル」ドキュメントを参照してください。


Truncate Table

Truncate Table コマンドにより、ユーザーおよびアプリケーションは、データベース テーブルのコンテンツを空にします。この機能は、行を頻繁に削除する必要があるテーブルの場合に便利です。Truncate Table コマンドは、同等の DELETE FROM テーブル コマンドに比べ、実行はより高速であり、必要な入出力はより少なく、そしてはるかに少ない情報をジャーナル記録およびアーカイブします。詳細については、「Truncate Table」を参照してください。


トランザクション待機時間

ロック可能なリソースを取得するために、トランザクションが待機する時間を指定します。ロック可能なリソースが取得できるまで、トランザクションが待機する時間を指定できるようになりました。詳細については、「待機時間」を参照してください。


一行コメント

2 つのダッシュを使用して、SQL 文に一行コメントを追加することができます。詳細と例については、「コメント」を参照してください。

--This is a comment line.


InterBase 2017 の移行における問題

  • InterBase 2017 は、デフォルトでは ODS 17 でデータベースを作成しますが、ODS 13 およびトランザクション負荷のためのデータベースにも接続できます。
  • InterBase 2017 では、ODS 11 および ODS 12 のデータベースのバックアップは、クライアント/サーバー モード使用している gbak コマンドライン ツールを使用している場合にのみ可能で、サーバー マネージャ モードではできません。古い InterBase ODS 11 や 12 のデータベースから移行する場合、この機能を使用することができます。
  • 本リリースでは、次の新しい InterBase キーワードが導入されています: DEFERRED および IMMEDIATE は、未予約のキーワードです。EXCLUSIVEEXCLUSIVITYRECURSIVETRUNCATE は、InterBase 2017 における予約キーワードです。
  • ODS 17 では、テーブル行全体に対する変更ビュー サブスクリプション定義のサポートが有効になっており、それ以降の ALTER TABLE オペレーションが継続されます。この利点を利用したい場合は、ODS 16 データベースをバックアップと取り、ODS 17 へリストアしてください。

InterBase XE7 の移行における問題

  • 古いクライアント(古い IBConsole)が、新しい ODS 16 データベースに接続しようとすると、例外が発生する点に注意してください。これは、そのクライアントが INTEGER として定義されていないデータ型に直面するためです。 回避策は、新たな IBConsole をインストールして、新旧の InterBase サーバーに接続します。 新しい IBConsole は、この用途のために後方互換性があります。
  • InterBase Lock Table サイズは、IBConfig パラメータを変更して増加させる必要があります。これは、すべてのエントリが領域を取るためです。 InterBase Lock Table サイズを増加させるには、ibconfig ファイルを編集して、V4_LOCK_MEM_SIZE エントリを変更してください。
  • InterBase XE7 は、ODS 16 と共にリリースされています。 新しいエンジンは、ODS 13 移行のみをサポートしています。 この変更により、サポートされているすべてのプラットフォームは、同じ ODS バージョン(13 から 16)をサポートします。
  • 古いバージョンの Visual Studio(2005 以前)で構築されている 64 ビット UDF ライブラリは、InterBase XE7 で動作しないというレポートが上がっています。 古い UDF ライブラリがある場合、新しい InterBase バージョンで念のためテストしてください。 もしくは、UDF 64 ビット ライブラリを最新バージョンの Visual Studio で再ビルドしてください。
  • 新しいキーワード ROW が、SQL キーワード トークンとして「予約語」になりました。

InterBase XE3 の移行における問題

Windows レジストリおよびプログラム ファイルの変更

InterBase XE3 では、よりよい Windows 互換性のために変更が行われています。 InterBase XE3 では、[Program Files] の場所への製品のインストールがデフォルトになり、Windows レジストリ階層でも「Borland」サブ キーを使用しなくなりました。 現在では、インスタンス固有の情報の追跡には、「Embarcadero」サブ キーを使用しています。 お使いのアプリケーションを、なるべく早く新しい環境へ移行することを、強くお勧めします。

  • プログラム ファイルのインストール場所
  • 2009 以降のバージョンの InterBase は、製品を Windows のデフォルト フォルダ [Program Files] 以下の場所へインストールされていました。 これは、Windows UAC ガイドラインによるもので、管理者権限のないアプリケーション周りには制限をおき、[Program Files] ファイル システム フォルダ下への書き込みを抑制しています。 InterBase XE3 でのサーバー ベース エディションでは、Windows アプリケーション互換性ガイドラインに準拠し、 デフォルト インストール場所が、C:\Embarcadero\InterBase から C:\Program Files\Embarcadero\InterBase へ変更されました。
  • プログラム データの場所
  • InterBase XE3 では、プログラム データ ファイルを、 %ALLUSERSPROFILE%\Embarcadero\InterBase ディレクトリに配置するようになりました。 インストールの各インスタンスについて、この下にフォルダが作成され、書き込みアクセスを必要とするすべてのファイルが、ここに配置されます。 たとえば、InterBase XE3 をデフォルトでインストールした場合、「gds_db」インスタンスを取得し、InterBase の書き込み場所とファイルは次のようになります:
    • ディレクトリ:  %ALLUSERSPROFILE%\Embarcadero\InterBase\gds_db
    • ファイル:
      • admin.ib (古いバージョンの InterBase から移行している場合には、ここに古い admin.ib ファイルを配置する)
      • license/ (ここに InterBase ライセンス ファイルを配置する)
      • examples のサブフォルダ構造と、すべての関連ファイル
      • OTW SSL 関連ファイルは、「secure」サブフォルダに
      • 実行時作成されるファイル(interbase.log、*.lck、*.env など)

InterBase XE 以前の移行に関わる問題

  • 旧バージョンをアンインストールする前に、セキュリティ データベースを含むすべてのデータベースを必ずバックアップしてください。
  • SUSE 11 SP1(もしくはそれ以降)のサーバーを対象と考えているのなら、InterBase クライアントを 10.0.0.292 以上にアップグレードすることをお薦めします。 SUSE 11 SP1 サーバーからのイベントを待機する、古いバージョンのクライアントには、既知の問題があります。
  • カスタマイズされている場合は、ibconfig をバックアップします。
  • このバージョンでは、新しいデータベースは ODS バージョン 15 で作成されます。
  • 64 ビット版の InterBase では、64 ビット UDF ライブラリだけを使用してください。 64 ビット サーバーでは、これまでの 32 ビット UDF ライブラリを読み込めません。 提供されている UDF ライブラリ(OOTB、ib_udf)は、既に 64 ビット用にビルドされており、製品と一緒にインストールされています。
  • InterBase XE では、1 つのテーブルに格納できるレコード数が増えています。 現在のカウントには 32 ビットという限界があります。 32 ビットよりも大きいレコード値の数のカウントが必要であれば、以下の手順を実行してください。
    • テーブルの行数が 2 G を超える場合には、CAST(COUNT(*) AS NUMERIC(18,0)) というコードを使用してカウントを 64 ビットにしなければなりません。
  • InterBase XE で、強度の高いパスワード保護 が実装されました。 古いバージョンの InterBase クライアントが(ローカルまたはリモート システムから)このインストール ファイルと通信する場合には、システムを InterBase XE3 にアップグレードする際に、次の点に留意してください。
    • 既存の(旧バージョンの InterBase で使用していた)ユーザー認証データベースがある場合には、そのデータベース ファイルを(InterBase XE フォルダにコピーして)使用すると、ローカルやリモートのクライアントの認証は正しく動作します。
    • InterBase XE の新しい admin.ib を使用する場合には、このデータベースで強度の高い "SHA-1" パスワード(デフォルト)が使われていることに注意してください。 強度の低い DES パスワード アルゴリズム(これまでの InterBase リリースのもの)を引き続き使用する場合には、「強度の高いパスワード保護」のトピックで説明した ALTER DATABASE コマンドを使用してください。
    • InterBase XE で提供されている "強度の高い長いパスワード" を使用する場合には、ユーザー アカウントを作り直し、かつ、この InterBase XE サーバーに接続しているリモート マシンに新しい InterBase クライアントをインストールする必要があります。 これは、"古い" InterBase クライアントでは "SHA-1" パスワードを計算することができず、"DES" の強度のパスワードを渡すので、InterBase XE サーバー側で予期しているものと一致しないためです。 その結果、"Your user name and password are not defined...(ユーザー名とパスワードが定義されていません)" というエラーが出力されます。
  • InterBase XE の更新された SSL パラメータ名。 古い OTW クライアント プロパティは、新しい OTW プロパティによって置き換えられました。 操作ガイドの「OTW 暗号の設定」と、第5章にある表 5.2 を参照してください。
データベースを復元すると "unassigned code(割り当てられていないコード)" というエラーが出力される
InterBase XE でデータベースを復元すると、"unassigned code(割り当てられていないコード)" というエラーが出力されます。 長く使われているデータベースや、InterBase 2009 でバックアップして InterBase XE で復元したデータベースでは、メタデータ セキュリティの設定が異なります。 So when selecting a system table (for example: RDB$RELATIONS) you get the error message: no permission for read/select access to table RDB$RELATIONS by user SYSDBA."no permission for read/select access to table RDB$RELATIONS by user SYSDBA" (ユーザー SYSDBA は RDB$RELATIONS の読み取り/検索アクセスを行う権限がありません)
このエラーは、次の基準に当てはまるデータベースで発生します。
  • 元々は InterBase 6.5 より前のバージョンで作成された。
  • InterBase 2009 より前のバージョンでバックアップされた。
  • Readmeta.sql がまだ適用されていない。
このような動作が生じるのは、データベースの復元を行うときに、InterBase XE ではメタ データ権限が厳密に適用されるためです。
解決方法:
この問題を解決するには、バックアップする前に readmeta.sql をデータベースに対して実行します。 readmeta.sql は、多くの場合、\examples\security にあります。 isql または IBConsole を使用して、readmeta.sql をデータベースに対して実行することができます。
説明:
長い間使われているデータベースでこの問題が発生します。 (1)データベースが IB6 -> IB7 -> IB2007 -> IB2009 -> IBXE と復元されてきた、(2)データベースが IB2009 でバックアップされて IBXE で復元された、という 2 つの状況が考えられます。 それぞれの状況で、メタデータ セキュリティ設定は異なります。 (1)の場合は、最初に IB6 で作成されているため、そもそもメタデータ セキュリティが設定されていません。 それに対して(2)の場合には、IB2009 で作成されているため(復元はされていません)、すべてのシステム テーブルにあらゆるセキュリティ権限が設定されています。
前者の場合、データベースはバックアップと復元が繰り返され、新しいリリースになるたびに、そのリリースで追加されたシステム テーブル(RDB$USERS、RDB$ENCRYPTIONS、RDB$ROLES など)の権限が設定されます。 ただし、元々存在するシステム テーブルについては、データベース所有者が既にセキュリティ権限を変更しているかどうかを判断できないため、変更は行われません。 たとえば、ユーザーが RDB$TRIGGERS および RDB$PROCEDURES に対する権限をすべて取り消して、トリガーやストアド プロシージャのコードを隠していることも考えられます。
また、前者の場合には、何年も前に SYSDBA が readmeta.sql を実行し、その基準のメタデータを変更してカスタム セキュリティ プロファイルを作成している可能性もあります。 XE の復元の後で InterBase が自動的に既定値に戻して、そのカスタマイズを上書きすることはできません。 InterBase XE では、個々のデータベースのこれまでの履歴を把握していないため、復元するすべてのデータベースに無条件にデフォルトのメタデータ権限を設定するべきだと想定することはできません。
そのため、readmeta.sql を実行し、そのデフォルト値を出発点として望ましい状態に構成することをお勧めします。 これは、移行先が XE 以外の場合でも同じです。
isql の使用例:
isql "path to database"
-USER sysdba -password masterkey -i readmeta.SQL
IBConsole での readmeta.sql の実行
  1. IBConsole でデータベースに接続します。
  2. [ツール|対話型 SQL...] を選択します。
  3. [クエリー|SQL スクリプトの読み込み] を選択し、readmeta.sql を選択して [開く] をクリックします。
ERROR: No Permission for read/select access to table RDB$XXXX by user SYSDBA(ユーザー SYSDBA はテーブル RDB$XXXX の読み取り/検索アクセスを行う権限がありません)
InterBase 6.5 より前のバージョンで作成されたデータベースでは次のエラーを発生させる可能性があります: no permission for read/select access to table RDB$XXXX by user SYSDBA with InterBase XE. (ユーザー SYSDBA は InterBase XE でテーブル RDB$XXXX の読み取り/検索アクセスを行う権限がありません)
解決方法:
InterBase XE ではメタ データのセキュリティが厳しくなっているため、バージョン 6.5 よりも前の InterBase で最初に作成されたデータベースに対してメタ データ操作を行うと、このエラーが出力される可能性があります。 メタ データ操作には、システム オブジェクトの一覧の作成などシステム オブジェクトの情報を要求する、それを更新する、パフォーマンス モニタを使用する、といったものがあります。
このエラーを解決するには、よく似た 2 つの操作を実行する必要があります。 最初の操作では、システム テーブルに対する権限を付与します。 そのためには、InterBase インストール ディレクトリの examples\security フォルダにある readmeta.sql を実行します。 isql または IBConsole を使用して、readmeta.sql をデータベースに対して実行することができます。
isql の使用例:
isql "path to database"
-USER sysdba -password masterkey -i readmeta.SQL
IBConsole での readmeta.sql の実行
  1. IBConsole でデータベースに接続します。
  2. [ツール|対話型 SQL...] を選択します。
  3. [クエリー|SQL スクリプトの読み込み] を選択し、readmeta.sql を選択して [開く] をクリックします。
次に、パフォーマンス監視機能を使用する場合には、システム一時テーブルに対する権限を付与する必要があります。 セキュリティ上の問題が起きる可能性があるため、ほとんどのインストールでは、システム一時テーブルに対する権限を sysdba およびデータベース所有者にしか付与しないようになっています(以下で紹介しているのはそれです)。 すべてのユーザーがシステム一時テーブルを閲覧できるようにするには、この例を GRANT TO PUBLIC に変更してください。 特定のユーザーだけに権限を付与したい場合もあるでしょう。そのときにはさらにカスタマイズされたスクリプトが必要になる可能性があります。
システム一時テーブルに対する権限を付与するには、以下のコードをテキスト ファイルに保存し、上記の readmeta.sql と同様に実行してください。
CREATE PROCEDURE granttmp AS
   DECLARE variable stmt VARCHAR(1024);
   DECLARE variable ownername VARCHAR(66);
   DECLARE variable tablename VARCHAR(66);
 BEGIN
   SELECT rdb$owner_name FROM rdb$relations WHERE rdb$relation_name = 'RDB$RELATIONS'
   INTO :ownername;
 FOR SELECT rdb$relation_name FROM rdb$relations WHERE rdb$system_flag>0 AND rdb$relation_name 
 starts WITH 'TMP$' INTO :tablename 
 do 
 BEGIN
   stmt = 'grant all on ' || tablename || ' to sysdba';
   EXECUTE statement stmt;
   stmt = 'grant all on ' || tablename || ' to ' || ownername;
   EXECUTE statement stmt;
 END
 END;
 EXECUTE PROCEDURE granttmp;
 DROP PROCEDURE granttemp;
 commit;
 exit;


既知の問題点

  • 問題: admin.ib を介したサーバー側パフォーマンス モニタリングは、ISQL コマンドライン ツールを使用している場合には機能しますが、IBConsole パフォーマンス モニタ UI を介して使用した場合には、「Key violation」例外を発生させます。

解決されたバグ

外部バグ # 説明
(QC)SalesForce #
内部バグ #
InterBase 2017 Update 1: 2017年9月、バージョン 2017 Update 1 で修正されたバグ
INTB-3382 更新レコードがあり、インデックスを使用した SELECT ... ORDER BY を行ったテーブルに対して、矛盾したクエリ結果が発生する。
INTB-3336 ビューにストアド プロシージャがない。
INTB-3330 テーブルとストアド プロシージャの外部結合で、サーバーがクラッシュする。
INTB-3326 isc_dsql_fetch が変更レコードを返さない。
IBP-60

SF Case 573995

INTB-3314

InterBase 64 ビットが、Windows 10 の 64 ビット版 v.1703(Creators Update として知られている)にインストールできない。
INTB-3308 インデックスを使用するストアド プロシージャを実行する際に、インデックスの予期しない削除エラー(260)。
INTB-3287 トランザクション管理情報ページのクリーンアップが、極端なケースで、データベースを破壊する場合があります。
SF Case 561733

INTB-3280

InterBase 2017 IBConsole ヘルプ | 製品についてで、XE7 と表示される。
SF Case 558139

INTB-3265

変更ビュー サブスクリプションがバックアップのパフォーマンスを劣化させる場合がある。
InterBase 2017: 2017年3月。バージョン 2017 で解決された不具合。
INTB-3262 InterBase XE7 Linux 64bit インストーラが、"LD_LIBRARY_PATH" 設定を /etc/profile に重複して追加する
INTB-3196 COMMIT の後、DROP GLOBAL TEMPORARY TABLE できない
SF Case 536921

INTB-3168

InterBase バックアップが、変更ビューのサブスクリプションで、テーブルがハングする。
INTB-3155 オンライン ダンプ失敗: ディスク書き込みが終わらない
IBP-37

INTB-3154

SELECT COUNT(*) FROM TMP$STATEMENTS - 変換エラー
IBP-36

INTB-3153

APPDATA_DIRECTORY IBConfig 設定が、Windows 10 アップデートで壊れる
IBP-32

INTB-3145

シャドー機能が有効化されたシャドーに機能しない。
SF Case 528267

INTB-3144

クエリが、ORDER BY がインデックスを使用するよう最適化すると、顕著に遅くなる
QC 138129

INTB-3142

データベース シャットダウン時、ジャーナルとリンガの間隔が設定されたデータベースで、異常終了を起こす。
INTB-3104 CASE 文で "式評価がサポートされていない"
INTB-3058 [WISE インストーラ] インストーラは /s オプションが指定されない場合、プロパティ ファイルからの INSTANCE/TCP_PORT 値を認識しない
INTB-3044 IBConsole は データベース プロパティ フォームで、「ページ バッファ」に適切な値を表示しない
IBP-27

INTB-3043

IBConsole トリガ エディタが、CREATE または ALTER TRIGGER を実行する際にエラーを返す
IBP-26

Case IBP-26

INTB-3040

変更ビューのサブスクリプションで、グループごとの列が、null になる
SF Case 501670

INTB-3032

変更ビューのサブスクリプションで、グループごとの列が、null になる
IBP-24

SF Case 514550

INTB-3023

archive_recover がデータベースが ODS 15 の場合に動作しない
INTB-3000 GROUP BY が、列エイリアス名を許可しない
INTB-2971 複数のクライアントによる 1 つのテーブルの最初の展開で、データベースが壊れる
INTB-2970 データベース シャドーイング有効次、データベースのヘッダー ページでデッドロックが発生
SF Case 454420

INTB-2909

データベースに変更ビューのサブスクリプションが含まれているとバックアップの失敗
INTB-2900 [変更ビュー] ALTER TABLE ADD COLUMN は、別のテーブルにサブスクライブするサブスクリプションを反映していなければならない
INTB-2879 Windows 10 のアップデートで、AppData ディレクトリのファイルが削除される
INTB-2742 InterBase が、負荷がかかった状態で、EXECUTE 文を実行するとクラッシュする
INTB-2679 TMP$DATABASE フィールドの TMP$CURRENT_MEMORY および TMP$CACHE_POOL_MEMORY が、符号付き 32 ビット整数値をラッピングする
INTB-2670 "ソート エラー: メモリが十分ではありません" が、大規模データベースの復元中に報告される
SF Case 437482

INTB-2647

多くの並列同時ユーザーが、非 sysdba ユーザーと比べ、sysdba ユーザーだと高速に実行される
INTB-2464 IBConsole は、文字列を表示時に切り詰める


InterBase XE7 での解決済みの不具合については、こちら をクリックしてください。

ヘルプが必要なときには

Embarcadero Technologies の技術サポート

Embarcadero Technologies と正規の保守契約を結ばれている場合、お使いの弊社アプリケーションで何らかの問題があった際に Embarcadero の技術サポート チームが対応いたします。 また弊社の保守契約により、Embarcadero Technologies 製品の登録ユーザーは、その契約の有効期間の間、ソフトウェアの更新を無料でダウンロードする権利を有します。 評価者は、その評価期間の間、無料で技術サポートを受けることができます。 Web サイトの「カスタマー サポート」セクションをご覧ください。

Embarcadero Technologies の Web サイト

評価者は、その評価期間の間、無料で技術サポートを受けることができます。 Embarcadero Technologies 製品の評価版をダウンロードしたり、弊社および弊社製品についてさらにお調べになりたい場合には、http://www.embarcadero.com/ をご参照ください。
個人用ツール
以前のリリース:
他言語版