True Cacheが構成されている場合、アプリケーションは、True Cacheまたはプライマリ・データベースのどちらからデータを問い合せるかを決定する必要があります。これを行うには、次の2つの方法があります。
- アプリケーションでは、2つの物理接続(1つはプライマリ・データベース、もう1つはTrue Cache)が保持されます。各接続にはデータベース・アプリケーション・サービスがあり、アプリケーションは読取りか書込みかに基づいて、どちらの接続を使用するかを選択します。このモデルは、既存のクライアント・ドライバおよび任意のプログラミング言語で使用できます。
アプリケーションは、最新のデータを表示する必要がない問合せをTrue Cacheデータベース・アプリケーション・サービスを介してTrue Cacheに送信します。アプリケーションは、他の問合せおよび更新をプライマリ・データベース・アプリケーション・サービスを介してプライマリ・データベースに送信します。 - アプリケーションは、プライマリ・データベースのデータベース・アプリケーション・サービスを使用する1つの論理接続を維持します。JDBC Thinドライバ(Oracle Database 23ai以降)は、プライマリ・データベースおよびTrue Cacheへの物理接続を維持します。このモデルは、Javaアプリケーションでのみ機能します。
アプリケーションは、インスタンス名を指定せずに、True Cacheからプライマリ・データベースに切り替わります。アプリケーションは、特別なコールを使用して、論理接続に読取り専用または読取り/書込みのフラグを付けます。読取り専用の場合、問合せはTrue Cacheに送信されます。それ以外の場合は、プライマリ・データベースに送信されます。
JDBCメソッドによって次の処理が行われます:
- クライアント・アプリケーションは、接続の
useTrueCacheDriverConnection
パラメータを使用して、SALES
というプライマリ・データベース・アプリケーション・サービスに接続するための論理接続を作成します。 - アプリケーションは、論理接続に
setReadOnly(true)
またはsetReadOnly(false)
のフラグを設定して、SQL文をそれぞれTrue Cacheまたはプライマリ・データベースに送信します。JDBC Thinドライバは、論理接続ごとに、2つの物理接続を内部的に保持します(1つはプライマリ・データベース、もう1つはTrue Cacheに対して)。両方の接続は、データベース・アプリケーション・サービスSALES
の作成時に関連付けられました。
JDBCメソッドを次のコードに示します:
static String url_primary = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=?(ADDRESS=(PROTOCOL=tcp)(HOST=primary_host)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=sales)(SERVER=DEDICATED)))";
OracleDataSource ods1 = new oracle.jdbc.pool.OracleDataSource();
ods1.setURL(url_primary);
ods1.setUser(user);
ods1.setPassword(password);
ods1.setConnectionProperty("oracle.jdbc.useTrueCacheDriverConnection","true");
Connection conn1 = ods1.getConnection();
verifyConnection(conn1); // This is connected to primary
conn1.setReadOnly(true)
verifyConnection(conn1); // This is connected to True Cache
conn1.setReadOnly(false)
verifyConnection(conn1); // This is connected back to primary