4

私は次のようなクエリがあります

INSERT INTO sid_rem@dev_db
(sid)
select sid from v$session

さて、このクエリを実行すると、 ORA-02070: database does not support in this context

このエラーは、v$sessionからリモートデータベースにデータを挿入した場合にのみ発生します。他のテーブルでも問題なく動作します。

この問題とその回避策を知っている人はいますか?

4

3 に答える 3

7

gv$sessionの代わりに使用して動作しますv$session

INSERT INTO sid_rem@dev_db(sid)
select sid from gv$session;

gv $ビューはグローバルビューです。つまり、1つのノード(インスタンス)に制限されていませんが、データベース全体(RAC)を表示します。v$ビューはgv$のサブビューです。

インターネットで検索すると、これは分散トランザクションと関係があることがわかりました。

ora-code.comのスレッド

于 2013-01-04T09:38:56.253 に答える
1

なぜこれが起こっているのかわかりません。おそらくドキュメントのどこかにあるのですが、私の Oracle-Docs-Fu は今日私を見捨てたようです。

考えられる回避策の 1 つは、グローバル一時テーブルを使用することです。

SQL> create table tmp_ben ( sid number );

Table created.

SQL> connect schema/pw@db2
Connected.
SQL> create table tmp_ben ( sid number );

Table created.

SQL> insert into tmp_ben@db1 select sid from v$session;
insert into tmp_ben@db1 select sid from v$session
                                               *
ERROR at line 1:
ORA-02070: database  does not support  in this context

SQL> create global temporary table tmp_ben_test ( sid number );

Table created.

SQL> insert into tmp_ben_test select sid from v$session;

73 rows created.

SQL> insert into tmp_ben@db1 select * from tmp_ben_test;

73 rows created.
于 2013-01-04T09:30:23.713 に答える