当社は、C#Visual Studio 2010、Windows 7、およびOracle 11gで実行されるいくつかのソフトウェアを継承しました。努力の結果、ソフトウェアが稼働し、安定したデータベース(スキーマ)がセットアップされました。同じユーザーで複数のOracleデータベース(スキーマ)をセットアップする方法は?
古いシステムのデータをこの新しいシステムに移行するプロセスが開始されました。しかし、データのインポートでは試行錯誤の作業が必要になると思うので、私は作業スキーマを台無しにしたくありません。
私は次のことをしたかった: 私たちの既存のスキーマがPRODと呼ばれているとしましょう。インポートしたデータに使用できるTESTという2番目のスキーマを作成したかったのです。次に、C#コードでは、2つのデータベーススキーマを切り替えるときに、データソースの名前を切り替えることができます。この接続のユーザー名とパスワードは、コードに散在している多数の場所に表示されます。 「db環境」を切り替えるたびに複数の場所でユーザーの資格情報を変更する必要がないように、私はPRODとTESTにアクセスできる単一のユーザーを作成したいと考えました。
ただし、how to grant user privilege on specific schema?はこれが不可能であることを示しています。 Correct way to give users access to additional schemas in Oracleは、オブジェクトレベルでアクセスを許可する方法を提案していますが、これは不十分です。基本的に、1人のユーザーが2つの同一のスキーマ(PRODとTEST)にアクセスするようにします。これを達成したら、データのインポートを開始するためにTESTを修正したいと考えています。
別のポートに別々のOracle DatabaseインストールとしてTESTを作成しようとしましたが、この新しいインスタンスでユーザーを作成しようとすると、ユーザーがすでに存在しているという競合が発生します(PROD用に作成された元のデータベースインストール)。
ユーザーは既に存在し、PRODにアクセスできます。彼にTESTへのアクセスを与えるにはどうすればいいですか?または、Oracleを使用するアプリケーションでPRODおよびTESTデータベースを定義するというより一般的な問題を解決するにはどうすればよいでしょうか?
これは些細なことですが、Oracleでこれを行う方法はわかりません。私はOracleにとって非常に新しいです。
「1人のユーザーが2つの同一のスキーマにアクセスできる」とはどういう意味ですか? oracle dbでは、ユーザーはスキーマとほとんど同じです。どのユーザーが「PRODにアクセスできますか」とはどういう意味ですか? –
説明:コードには、oracleデータベースに接続するためのユーザー名とパスワードが定義されています。このユーザー名とパスワードは、さまざまな場所でコードにハードコードされています。このユーザー名/パスワードは、スキーマAに接続するために使用されます(正しくは1か所のみで定義されています)。今度は、データインポートのいくつかのテストを行うための2番目のスキーマ、たとえばBを作成します。 BはAと同じユーザー名/パスワードを使用する必要があるため、アプリケーション全体でこれらの詳細を変更する必要はありません。次に、アプリケーションのAとBを切り替えるだけで、1つの場所でスキーマ名を変更できます。 – Stanley
oracle DB schema = dbユーザーです。セマンティクスの違いについては、http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:6162110256950を参照してください。さて、あなたは 'スキーマAに接続する'と言うとき、あなたはどういう意味ですか?アプリケーションからユーザーAとしてDBに接続しているということですか?またはスキーマAのオブジェクト(ユーザーAが所有するオブジェクト)に対する権限を持つ別のDBユーザーですか? –