2016-05-04 12 views
0

基本的には、oracleをデータ・ソースとして使用するJavaアプリケーションがあります。今私のアプリケーションはユーザーと接続し、テーブルの作成などに接続されたユーザーのスキーマを使用します。セッション・セットcurrent_schema権限の変更

私のアプリケーションも別のスキーマで動作する必要があります。

私は代わりにする必要があります。

1 -

select * from other_schema.table 

2のような接頭辞で私のテーブル名を変更する -

alter session set current_schema=other_schema 

のような任意のクエリを実行する前にセッションを変更私はおよそ骨董午前のセッションの権限を変更する任意のpossibiltyがありますdbaによって取り消すことができます。

Oracleのドキュメントは、特に断らない限り

あなたはこの文の他の操作を実行するために、任意の権限を必要としないことを言います。

https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_2012.htm

私のアプリのユーザーはother_schemaのためのすべての権限を持つことになりますのでご注意ください。

私のアプリケーションには多くの環境があります。

だから、最初にやり直すと、より安全に見えますが、時間がかかることがあります。

2番目の方が高速ですが、扱いにくいようです。

答えて

1

はいそうです。 CONNECTという役割があります。この役割は、通常、(バージョンによっては)あなたに2つのシステム権限を与える:

  • create session
  • alter session

ユーザーがすることができますない使用任意の直接その後、付与されただけcreate session権限を持っていますalter session ...声明。

のSeのOracleドキュメント:ALTER SESSIONの権限は、イベントを設定するために必要であることを Addressing The CONNECT Role Change

は注意してください。 alter session権限を必要とするデータベースユーザーはごくわずかです。

SQL> ALTER SESSION SET EVENTS ........ 

ALTER SESSION権限は、他のALTER SESSION コマンドは必要ありません。

SQL> ALTER SESSION SET NLS_TERRITORY = FRANCE; 

だから、本当にOracleのバージョンに依存します。

+0

非常に有益な回答ありがとう! –

関連する問題