Oracle TimesTen In-Memory Database 動作の変更点 部品番号: E05174-01 # このファイルでは、TimesTen APIの詳細と、リリース間での動作の変更点について # 説明します。 # 注意: このファイルの内容は、リリースごとに分冊されるものではありません。 # このファイルは、すべてのリリースに対する内容を記載しています。 # # このテキスト・ファイルは、任意のエディタを使用して表示できますが、 # Emacsのoutlineモード形式にも対応しています。 # Emacsでロードしている場合は、M-x describe-modeを実行すると、使用可能な # ナビゲーション機能を確認できます。 # アウトラインのヘッダーは、*で始まる行で示されています。 # 注意: 正常に動作するために、末尾にある「Local variables」で始まる行を # 削除しないでください。 * リリース7.0.1.0.0 ** Windowsインストール TimesTenに依存するdllは、System32からTIMESTEN_INSTALL/binに移動しました。 TimesTenのアプリケーションまたはデモを実行する前に、そのディレクトリが search PATH環境変数に指定されていることを確認してください。 ** SQL *** LENGTH、SUBSTRおよびINSTR関数 Unicode補助文字に適用されたときのLENGTH、SUBSTRおよびINSTR関数の動作は、 Oracleと一致するように変更されました。 以前のTimesTenの動作に対応するUCS4結果を得るには、新しいLENGTH4、 SUBSTR4およびINSTR4関数を使用します。 *** 組込みプロシージャ ttCacheUidPwdSetは、クライアント/サーバー接続では起動できません。 *** Cache Connect to Oracle Oracleのクライアントのバージョンが10gR2で、サーバーのバージョンが10.1.0.1と 10.1.0.4の間、または9.2.0.1と9.2.0.7の間の場合、Cache Connectでエラーが 発生します。 これは、Oracleクライアントの不具合を解決するためのものです。 Metalink Note 342791.1またはBug#4499298を参照してください。Oracleの 不具合は、Oracle Database 10g R2 10.2.0.1.0、Oracle Database 10g R1 10.1.0.5.0およびOracle9i 9.2.0.8.0で修正されています。 この修正は、クライアントとサーバーの両方に影響するため、両方に修正を 適用する必要があります。 ttDestroyユーティリティまたはttDestroyDataStore CユーティリティAPI関数の いずれかを使用してデータ・ストアを破棄する場合、ストアに、ONまたは PAUSED状態の増分自動リフレッシュ・キャッシュ・グループが含まれていると、 エラーが生成されます。データ・ストアは、ttDestroyに-forceオプションを 指定して使用するか、ttDestroyDataStoreForce関数を使用して破棄できますが、 表やトリガーなどのオブジェクトは、Oracleデータベースに残ったままに なります。OverWrite=1を指定して接続しようとした場合にも、同じエラーが 発生します。この場合も、既存のデータベースが破棄されるためです。 OverWrite=1にforceを指定することはできないため、はじめにttDestroy -forceを 実行する必要があります。 * リリース7.0.0.0.0 ** 型と型モード TimesTen 7.0では、Oracleのセマンティクスと動作に一致する新しい型が 実装されています。これらの型には、次のものがあります。 NUMBER FLOAT BINARY_FLOAT BINARY_DOUBLE CHAR VARCHAR2 NCHAR NVARCHAR2 DATE TIMESTAMP たとえば、小数秒を格納するために、新しいTIMESTAMP型を0〜9桁で作成できます。 新しいDATE型は、基本的に小数秒が0桁のTIMESTAMPです。BINARY_FLOATおよび BINARY_DOUBLE型は、Inf -InfおよびNaNを格納できる、マシン固有の 浮動小数点型です。NUMBER、VARCHAR2およびNVARCHAR2は、同じ名前のOracle型と 同じです。 以前のバージョンのTimesTenのユーザーが、TimesTen 6.0で使用していた型を そのまま使用することを希望する場合があります。また、これらの以前の型の かわりに、新しい型を使用することを希望する場合や、両方を使用することを 希望する場合もあります。 型モードの考え方は、TimesTenの既存ユーザーを対象とした下位互換性と、 TimesTenの新規ユーザーが期待するOracleの型セマンティクスの両方を可能に するために導入されています。 データ・ストア作成用のDSN属性であるTypeModeが追加されています。 この属性は、次の2つの値をとります。 TypeMode=0 ---------- これは、デフォルトの型モードです。 これをOracle型モードと呼びます。 TimesTen 7.0のすべての新規ユーザーは、Oracleデータベースに期待するものと 同様の型セマンティクスを持つデータ・ストアを使用できます。 このモードでは、両方の型モードに同じ名前の型が存在する場合、以前の TimesTen型にアクセスするときは、型名にTT_という接頭辞を付けます。 たとえば、TimesTenセマンティクスの型CHAR、TIMESTAMP、DATEおよびVARCHARを 持つ表の列を作成するには、次のようにします。 CREATE TABLE T1 (a TT_CHAR(15), b TT_TIMESTAMP, c TT_DATE, d TT_VARCHAR(12000)); TypeMode=1 ---------- これは、TimesTen型モード(下位互換性モード)です。このモードでは、 データ・ストアは、型に関して、TimesTen 6.0以前のバージョンとまったく同じ 動作をします。以前のバージョンからTimesTen 7.0に移行する場合は、 データ・ストアでこのDSN属性を設定します。 両方の型モードに同じ名前の型が存在する場合、TimesTen型モードの新しい型に アクセスするには、型名にORA_という接頭辞を付けます。 たとえば、Oracleセマンティクスの型CHAR、TIMESTAMP、DATE、NUMBERおよび VARCHAR2を持つ表の列を作成するには、次のようにします。 CREATE TABLE T1 (a ORA_CHAR(15), b ORA_TIMESTAMP(3), c ORA_DATE, d NUMBER(10,3), e VARCHAR2(12000)); ** 注意: TypeModeは、データ・ストア作成用の属性です。この属性を特定の データ・ストアに設定すると、そのデータ・ストアを破棄して 再作成しないかぎり、属性値を変更することはできません。 DSN属性TypeMode、および型名と型モードの関係の詳細は、TimesTenの ドキュメントを参照してください。 *** NCHAR、NVARCHARおよびNVARCHAR2の内部記憶形式: NCHAR、NVARCHARおよびNVARCHAR2型で内部的に使用する記憶形式は、すべての プラットフォームで、ネイティブ・エンディアンからビッグ・エンディアンに 変更されています。 SQL_C_BINARYバインド(ODBC)やResultSet.getBytes() (JDBC)などのバイナリ・インタフェースを使用して、これらの型のデータに アクセスするとき以外、この変更はユーザーに対して透過的です。 ** 接続属性: 次の接続属性または属性値は、リリース7.0では非推奨であり、将来のリリースで 削除される予定です。 SMPOptLevel=0: リリース7.0では、SMPOptLevel=0を使用すると警告が発生します。 これは、将来のリリースで削除される予定です。 Logging=2: リリース7.0では、Logging=2(ディスクレス・ロギング)を 使用すると警告が発生します。ディスクレス・ロギングは、 将来のリリースで削除される予定です。 ExclAccess=1: リリース7.0では、ExclAccess=1を使用すると警告が発生します。 排他接続は、将来のリリースで削除される予定です。 ThreadSafe=0: リリース7.0では、ThreadSafe=0を使用すると警告が発生します。 非スレッドセーフ接続は、将来のリリースで削除される予定です。 *** TempSize TempSizeで許容される最小値は、6MBに増加しました。 *** LogFileSize LogFileSize属性のデフォルト値は、64に増加しました。 ** 組込みプロシージャ: 次の組込みプロシージャの名前が変更されました。対応する以前の組込み プロシージャ名は、非推奨になりました。 それらをコールすると、警告が 発生します。それらは、将来のリリースで削除される予定です。 1. ttRepPolicyは、ttRepPolicySetに置き換えられました。 2. ttCachePolicyは、ttCachePolicySetに置き換えられました。 3. ttXlaDeleteBookmarkは、ttXlaBookmarkDeleteに置き換えられました。 ttDataStoreStatus組込みプロシージャの結果セットに、2つの列connection_name およびconnidが追加されています。 次の組込みプロシージャは、6.0での非推奨であり、このリリースで 削除されています。 ttcgmonitor (TT6.0でttcachemonitorに置き換えられました) ttcggensql (TT6.0でttcachesqlgetに置き換えられました) ttoracleagentpolicy (TT6.0でttcachepolicyに置き換えられました) ttoracleagentstart (TT6.0でttcachestartに置き換えられました) ttoracleagentstop (TT6.0でttcachestopに置き換えられました) ** ステータス情報のロギング: 以前は、エラーと警告のすべてのログ、およびTimesTenサポートのみで 使用する詳細情報は、同じデーモン・ログに記録されていました。それらの 情報は、ファイルに格納されるか、あるいはイベント・ログ(Windows)または syslog(UNIX/Linux)に送られていました。 現在、ロギングは、ユーザー・ ログ・ファイル(ドキュメントに記載されるエラーと警告のみを含む)と サポート・ログ・ファイル(エラー、警告および情報メッセージを含む)に 分割されます。 現在、TimesTenデーモンの-fオプションは、-userlogがサポートされるように なったために非推奨となり、ロギングを制御するいくつかの新しいオプションが 追加されています。 現在、TimesTenデーモンは、ログ・ファイルを循環させ、古いファイルを 削除します。 現在、Webサーバー・ログは、他のデーモン・ログ・メッセージと同じファイルに 記録されます。 以前は、Webサーバー・ログ・メッセージは、個別のファイルに 送られていました。 ** TimesTenのバージョン番号 現在、TimesTenのバージョン番号は、5つの部分(7.0.0.0.0など)で 構成されています。ttVersionユーティリティの出力、およびSQL_DBMS_VERまたは SQL_DRIVER_VERが渡されたときに SQLGetInfoから返される文字列は、この形式に 変更されています。これらの5つの数字の使用については、TimesTen 7.0.0.0.0の リリース・ノートを参照してください。 ** ユーティリティ: *** ttIsql cggensqlコマンドは、このリリースで削除されています。このコマンドは、 6.0では非推奨でした。cachesqlgetに置き換えられています。 ** JMS/XLA enabledTables属性は、JMX/XLA構成ファイルではサポートされなくなりました。 アプリケーションでは、XLAブックマークの管理用の組込みプロシージャを 使用する必要があります。このリリースでは、XLAブックマークを作成するための 新しい組込みプロシージャttxlabookmarkcreate()が追加されています。 詳細は、TimesTenのドキュメントを参照してください。 ** Cache connect to Oracle CREATE CACHE GROUPおよびALTER CACHE GROUP文でのWITH LIMIT句の使用は、 非推奨になりました。リリース6.0で自動リフレッシュのために改善された ログ切捨てメカニズムでは、完全リフレッシュを回避するために、より詳細に ログを追跡します。また、古いログも積極的に削除します。 TimesTen 7.0では、 WITH LIMITを設定すると警告が発生します。 設定は記録されますが、 効果はありません。 SELECT FOR UPDATE ON ORACLE機能は、非推奨になりました。パススルーの SELECT FOR UPDATE文を使用すると、同じ効果が得られます。 CREATE CACHE GROUP文でのDURATION句の使用は、非推奨になりました。 7.0で追加されたAGING機能を使用してください。 RESTRICTED CACHE GROUP機能は、非推奨になりました。 * リリース6.0.4 ** 接続属性: *** 接続 既存の接続数が、接続属性を使用して構成された値を超えた後、データ・ストアに 新しく接続すると、警告が発生します。 ** ユーティリティ: *** ttIsql 問合せで選択できる列の最大数は、255から32767に増加しました。 * リリース6.0.3 ** JDBC: Connection.setAutocommit(boolean autoCommit)では、Connection.commit()が 実行されます。 詳細は、http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Connection.html#setAutoCommit(boolean)を参照してください。 AUTOCOMMITがオフの場合、Connection.close()では、Connection.rollback()が 実行されます。 ** ユーティリティ: *** ttXactAdmin デフォルトで、トランザクションごとにすべてのロックが表示されるように なりました。-mlオプションを使用すると、トランザクションごとに表示される ロック数を制限できます。 -rowオプションは削除されました。かわりに、-tblオプションを使用して、 戻されるロック情報の範囲を制限できます。 * リリース6.0.2 ** 接続属性: *** ConnectionName ConnectionName属性に指定した文字列が30文字を超えていると、警告が発生し、 その値は先頭から30文字までに切り捨てられます。以前は、エラーが発生し、 接続に失敗しました。ttIsqlでは、デフォルトのConnectionName値に内部的に 置き換えることで、このエラーを回避していました。 * リリース6.0.1 ** 変更の理由: 次に示す多くの変更は、「Oracle Connect」から「TimesTen Cache」に名前が 変更されたために行われました。 ** SQL: *** 予約語 現在、次のキーワードを区切り文字のないオブジェクト名として使用すると、 エラーが発生します。 CASE CONNECTION CROSS DEFAULT DESTROY INNER INTERVAL JOIN LEFT RIGHT WHEN ** ODBC: *** SQL_C_ADDRは、このリリースで非推奨になりました。 ** 接続属性: *** DurableCommits DurableCommits属性のデフォルト値は、1(永続的)から0(ゼロ)(非永続的)に 変更されました。 *** SMPOptLevel SMPOptLevel属性のデフォルト値の決定方法が変更されました。 指定しない場合、単一プロセッサ・マシンでは0(ゼロ)に、マルチプロセッサ・ マシンでは1に設定されます。 この決定は、データ・ストアへの初期接続が行われるたびに実行されます。 前回の接続時に使用された値は、保持されません。デフォルトの動作を 受け入れない場合は、常にSMPOptLevel値を明示的に指定する必要があります。 *** TempSize TempSizeで許容される最小値は、4MBに増加しました。 ** 組込みプロシージャ: 次の組込みプロシージャの名前が変更されました。対応する以前の組込み プロシージャは、非推奨になりました。これらをコールすると、次のメジャー・ リリースで削除されることを示す警告が戻されます。 1. ttCGGenSQLは、ttCacheSqlGetに置き換えられました。 2. ttCGMonitorは、ttCacheMonitorに置き換えられました。 3. ttCacheSetMemoryThresholdは、ttCacheAgingMemoryThresholdSetに 置き換えられました。 4. ttCacheSetAgingIntervalは、ttCacheAgingIntervalSetに置き換えられました。 5. ttCachePropagateFlagは、ttCachePropagateFlagSetに置き換えられました。 6. ttOracleAgentStartは、ttCacheStartに置き換えられました。 ttCacheStartには、パラメータとしてキャッシュ管理ユーザーID(uid)および パスワード(pwd)がありません。 キャッシュ管理ユーザーID(uid)およびパスワード(pwd)を設定するには、 ttCacheUidPwdSetをコールする必要があります。 7. ttOracleAgentStopは、ttCacheStopに置き換えられました。 8. ttOracleAgentPolicyは、ttCachePolicyに置き換えられました。 ttCachePolicyには、パラメータとしてキャッシュ管理ユーザーID(uid) およびパスワード(pwd)がありません。 キャッシュ管理ユーザーID(uid)およびパスワード(pwd)を設定するには、 ttCacheUidPwdSetをコールする必要があります。 キャッシュ管理ユーザーID(uid)およびパスワード(pwd)を設定し、現行の キャッシュuidを取得する新しい組込みファンクションがあります。 1. ttCacheUidGet 2. ttCacheUidPwdSet キャッシュ・エージェントの開始時にキャッシュ管理ユーザーID(uid)および パスワード(pwd)を設定するかわりに、ttCacheUidPwdSetを使用して 設定してください。 ** ユーティリティ: *** ttAdmin 次のttAdminコマンドライン・オプションの名前が変更されました。 -oraAgentUIDは、-cacheUidに置き換えられました。 -oraAgentPWDは、-cachePwdに置き換えられました。 -oraAgentPolicyは、-cachePolicyに置き換えられました。 -oraAgentStartは、-cacheStartに置き換えられました。 -oraAgentStopは、-cacheStopに置き換えられました。 -cachePolicyおよび-cacheStartは、-cacheUidおよび-cachePwdとともに 使用することはできません。 キャッシュ管理ユーザーID(uid)および パスワード(pwd)は、-cacheUidPwdSet -cacheUid -cachePwd コマンドライン引数を使用して設定してください。 次のコマンドライン・オプションがttAdminに追加されました。 -cacheUidGet: 現行のキャッシュ管理ユーザーIDを取得します。 -cacheUidPwdSet: キャッシュ管理ユーザーIDおよびパスワードを設定します。 *** ttBackup チェックポイントまたは他のバックアップの処理中にttBackupが実行された場合、 エラーを戻すのではなく、そのチェックポイントまたはバックアップが 完了するまで待機するようになりました。 *** ttBulkCp -xpオプション(コミット頻度)のデフォルト値が、0(ゼロ)(終了時に コミット)から1000行に変更されました。(QA 18830) *** ttIsql 内部コマンドcgGenSqlは、cacheSqlGetに置き換えられました。 *** ttStatus ttStatusの出力形式が改善され、読みやすくなり、また追加の情報も 含まれるようになりました。これは、ttStatusの出力を解析する既存の スクリプトに影響します。ttStatusの以前の形式の出力を生成する場合は、 新しいコマンドライン・オプション-noprettyを使用してください。 *** ttXactAdmin -latchstats showオプションは、競合を示しているラッチのみを出力するように なりました。-latchstats showallを使用すると、アクセスされたすべての ラッチを表示できます。これには、競合を示していないものも含まれます。 ** システム表およびレプリケーション表 *** MONITOR LOCK_DENIALS_COND 列は、SYS19に名前が変更されました。 SYS10列は、REQUIRED_RECOVERYに名前が変更されました。これには、データ・ ストアへの初期接続時に、リカバリを実行する必要があるかどうかが示されます。 PERM_IN_USE_SIZEおよびTEMP_IN_USE_SIZE(PERM_IN_USE_HIGH_WATERおよび TEMP_IN_USE_HIGH_WATERも同様)の計算に使用する式が、内部メモリー管理で 行われた変更の内容を反映するように変更されました。 SYSn列に割り当てられた意味は、次のとおりです。 SYS1: カーソルのオープン SYS2: カーソルのクローズ SYS12: 現在のSMPOptLevel SYSn列に割り当てられた意味は、保証されたもの、サポートされたものでは ありません。また、将来変更される可能性があり、文書化されることは ありません。 ** ユーティリティAPI: *** ttBackup() チェックポイントまたは他のバックアップの処理中にttBackup()がコールされた 場合、エラーを戻すのではなく、そのチェックポイントまたはバックアップが 完了するまで待機するようになりました。 *** ttRepDuplicate()およびttRepDuplicateAcc() 既存のttRepDuplicate()およびttRepDuplicateAcc()ユーティリティAPI機能は、 新しいttRepDuplicateEx()がサポートされるようになったため非推奨に なりました。 ** Cache Connect(以前のOracle Connect): *** 全体的な変更: (a) TimesTenは、構文がTimesTenでサポートされておらず、passthrough接続属性が 1または2に設定されている場合に実行するSQL文をOracleに渡します。 このリリースで導入された新しいSQL機能では、以前のpassthrough SQL文を TimesTenで実行できるようになりました。 (b) 不正な操作によって発生するエラーは、リリース間で変更されることが あります。特定のエラー・コードを取得するアプリケーションでは、動作に 違いが生じる可能性があります。 *** デフォルト値: (a) READONLYキャッシュ・グループ、または自動リフレッシュ機能付きの キャッシュ・グループを作成した場合、自動リフレッシュのデフォルトの状態は PAUSEDです。 *** 機能しなくなったSQL文: (a) LOAD/REFRESH CACHE GROUP文は、COMMIT EVERY N ROWS文またはWITH ID文を 指定しないと機能しなくなりました。 ロギングをオフにしてキャッシュ・グループをロードするには、次の手順を 実行します。 手順1: logging=0を指定してTimesTen DSNに接続します。 手順2: COMMIT EVERY 0 ROWS句を指定してLOAD CACHE GROUP文を発行します。 LOAD文には、WHERE句を含めることはできません。 *** 表に異なる行を生成するSQL操作: (a) CREATE READONLYキャッシュ・グループまたはSYNCHRONOUS WRITETHROUGH キャッシュ・グループは、キャッシュ・グループへの暗黙的なロードを 行わなくなりました。ロギングを有効にする際に、次の手順を実行して、 キャッシュ・グループ表の内容を初期化することをお薦めします。 手順1: キャッシュ・エージェントを開始します。 手順2: キャッシュ・グループを作成します。キャッシュ・グループに 自動リフレッシュ機能がある場合は、自動リフレッシュのデフォルトの 状態(PAUSED)を使用します。 手順3: トランザクションをコミットします。 手順4: (オプション)キャッシュ・グループのロードが、 他のTimesTenデータ・ストアにレプリケートされるように、 レプリケーション・スキームを作成することができます。 キャッシュ・グループのロード後、別のユーザーがレプリケーション・ スキームを作成することができますが、この場合、ロード操作は レプリケートされません。 手順5: トランザクションをコミットします。 手順6: (オプション)レプリケーション・エージェントを開始します。 手順7: SQL文LOAD CACHE GROUP ... COMMIT EVERY N ROWSを発行します。 Nの適切な範囲は、20〜100です。 キャッシュ・グループの自動リフレッシュの状態がPAUSEDの場合、 これによって自動リフレッシュの状態が自動的にONに変更されます。 手順8: トランザクションをコミットします。 また、ロギングを伴わないロードには、次の手順もあります。 手順1: TimesTen DSNに未解決の接続がないことを確認します。 注意: レプリケーション・エージェントおよびキャッシュ・ エージェントの両方を停止する必要があります。 停止しないと、未解決の接続が発生します。 手順2: 次の接続属性の設定を使用して、DSNに接続します。 logging=0;durablecommits=0;locklevel=1; 手順3: 次のSQL文を発行します。 LOAD CACHE GROUP COMMIT EVERY 0 ROWS; commit; 手順4: チェックポイントを実行します。 手順5: 接続を切断します。 手順6: 通常のロギングで接続し、レプリケーション・エージェントおよび キャッシュ・エージェントを開始します。 ** SNMP: *** TimesTen MIB TimesTen-MIB.txtファイルでは、次の接頭辞および名前が全体的に 置き換えられました。 1. 「Ora」が「Cache」に置き換えられました。 2. 「Oracle Cache Agent」が「Cache Agent」に置き換えられました。 3. 「TimesTen Oracle Connect」が「TimesTen Cache」に置き換えられました。 ** TTClasses: 1. TTClassesは、TimesTenのコア製品に含まれるようになりました。以前は、 TTClassesは個別の製品として出荷されていました。この変更に伴い、TTClassesの 構成スクリプトは削除されましたが、TimesTenのインストール時に、 TTClasses Makeファイルの構成が行われます。 また、TTClassesのドキュメントを、 docディレクトリから参照できるようになりました。さらに、TTClassesの ディレクトリ構造は、次のようにTimesTenディレクトリ構造の一部になりました。 a. TTClassesのメイン・ディレクトリは、TIMESTEN_INSTALL/ttclassesです。 b. TTClassesのincludeディレクトリは、TIMESTEN_INSTALL/include/ttclasses です。 c. TTClassesのdemoディレクトリは、TIMESTEN_INSTALL/demo/ttclassesです。 TTClassesを作成するには、TTClassesのメイン・ディレクトリに移動して、 make(Windowsではnmake)と入力します。 注意: 現在、TTClassesはコア製品に含まれるため、特定のリリースのTimesTenに 付属するTTClassesは、そのリリースに対してのみ互換性があります。以前は、 あるリリースのTTClassesは、複数のリリースのTimesTenに対して互換性が ありました。 2. TTClasses TTXlaのユーザーの場合、TTXlaRowViewer::Get()メソッドを不適切に 組み合せて入力する(たとえば、整数表の列でTTXlaRowViewer::Get(i, TIMESTAMP_STRUCT*)を使用する)と、例外がスローされるようになりました。 以前のリリースのTTClassesでは、このような場合でも例外はスローされずに、 メッセージがTTClassesログ・ファイルに書き込まれていました。 Local variables: mode: outline paragraph-separate: "[ ]*$" end: