0

「abc」が1つだけのデータベース(つまり、sys、system以外)を実行しているデータベースがあります。このOracleユーザーの下に、テーブル、ビュー、シーケンス、プロシージャ、関数などがあります。次に、データとスキーマの両方を、すでに12個のスキーマが実行されている別のマシンの別のデータベースにコピーする必要があります(各個別のdbaの下に1つずつ)。私は次の懸念を持っています:

(1)新しいマシンに移動する前に、古いマシンのスキーマの名前を「abc」から「pqr」に変更する必要があります。

(2)プロシージャと関数内で、AUTHID CURRENT_USERを使用しているため、「abc」を使用する必要があります。テーブル、ビュー、シーケンス、プロシージャ、関数の名前の前の修飾子。スキーマ名を変更する場合、修飾子を自動的に変更する方法もありますか。

(3)データをコピーするために、私は1つの方法しか知りません。それは、1人のユーザー「abc」のみのデータベースのバックアップを取ることです(つまり、sys、systemのバックアップを取ることはありません)。次に、それを新しいデータベースに復元します。これはとにかく他のスキーマまたはそれらのデータを破壊することができますか?

(4)私のスキーマでは、プロシージャを使用して、権限が制限されたOracleユーザーを作成しています。新しいユーザー名はUsersテーブルに保存されます。また、データベースロールを作成し、ユーザーをロールに関連付けています。ロール名はロールテーブルに保存されます。新しいマシンに移行するときは、他のスキーマによって作成されたOracleユーザーの邪魔にならないように、ユーザーとロールの前に一意のプレフィックスを付ける必要があります。

(5)新しいデータベースには、「pqr」という新しいdbaユーザーが必要であることを私は知っています。sysdba特権も必要ですか。私は新しいマシンのデータベース全体については責任を負いません。自分のスキーマについてのみ責任を負います。sysdbaであるため、他のdbasを​​傷つけることはできますか(ドロップしたり、スキーマを変更したりするなど)。sysdba特権を持っていない場合、どのような制限がありますか。OracleTextを使用しているので、いくつかの組み込みパッケージを使用する必要があります。また、Windowsのファイルシステムに物理ディレクトリを作成する必要があります。また、「pqr」を使用してデータベースに接続する場合、ストアドプロシージャを介してロールとユーザーを作成、変更(パスワードの変更)、削除する必要があります。

古いデータベースと新しいデータベースの両方が、別々の専用マシンで実行されています。そのWindowsServer2003とOracle10gr1。

4

1 に答える 1

1

最も簡単なオプションは、Oracleエクスポートユーティリティ(classicまたはDataPump)をabc使用して、最初のデータベースのスキーマの論理バックアップを作成し、Oracleインポートユーティリティを使用してバックアップを新しいデータベースにインポートすることです。クラシックバージョンを使用している場合は、FROMUSERおよびTOUSERパラメーターを使用して、データを別のスキーマにインポートすることを指定します。DataPumpバージョンを使用している場合は、REMAP_SCHEMAパラメーターを使用します。比較的大量のデータがある場合は、DataPumpバージョンの方が効率的です。

ただし、残念ながら、明示的なスキーマ修飾子を変更する方法はありません。コードをインポートした後、またはソース管理システムからコードをプルした後にコードを編集し、コードを編集して、新しいデータベースにデプロイする必要があります。

于 2012-05-06T18:19:58.563 に答える