2つのデータベース環境(従来のおよび既存のexadata)があるとします。レガシーかのExadataを:私はユーザーだとの両方に対するSELECT権限を持っていることは、私は、私がアクセスしていますが、スキーマalter session set current_schema = A;
現在のスキーマのセッションを変更します
を実行すると私の現在のセッションは、「PRODレガシー」
で同じスキーマ名A.に
を持つDB ?どうして?
はまた、私は私がalter session set current_schema = B;
を実行すると、なぜ私はAのスキーマの設定に基づいて、スキーマBにアクセスすることができる午前スキーマB.
へのアクセス権を持っています。
注:私は、データベースが複数のスキーマで構成されているSQL Developerの
'alter session'は**別のデータベースへの接続を変更しません**。非修飾オブジェクトのデフォルトスキーマの変更のみです。それは決して別のデータベースに変更されません –
ありがとう、私はoracleに新しいですので、より多くの説明が必要です。修飾されていないオブジェクトは何ですか?また、なぜ私はスキーマBのデータベースにアクセスすることができますが、全体的に異なる構成ですか? –
'select * from tbl'は修飾されていません。 'select * from A.tbl'が修飾されています。後者は、テーブル名の前にスキーマ名を付けることに注意してください。'alter session set current_schema XX'コマンドを使用すると、オブジェクト名を修飾しないときにどのスキーマを使用するかをオラクルに伝えるだけです。したがって、 'select * from tbl'は、どのスキーマが*現在のスキーマとして設定されているかに応じて' A.tbl'または 'B.tbl'を問い合わせることができます。しかし、これはあなたが使用しているデータベースとは何の関係もありません。これは接続時に決定され、変更することはできません。 – sstan