質問

Oracle SQL開発者を使用しています

テーブル、インデックス、主要なキーの制約などを作成する巨大なスクリプトがあります。

私のdb名は:dbo_otherです

私はこのDBO_OOTORSにSysdbaとしてログインしました。

スクリプトを実行した場合、テーブルは「テーブル」の下に左パネルに表示されません

ただし、「dbo_other」を追加してスクリプトを追加した場合。すべてのテーブル名の前に、テーブルが表示されます。

これは非常に退屈で時間がかかります。

これを避ける方法はありますか? DBO_OTHERを追加せずにDBO_OTHERに表示されない理由。すべてのテーブル名の前で??右上隅でクエリを実行すると、ドロップダウンが選択されています!!

作成されたテーブルから[左サイドバーに表示されない]テーブルから[select *を実行することもできます。さらに、pl/sql開発者のテーブルを見ることができます。

なぜOracle SQL開発者はDBO_OTHERでそれを作成してほしいのですか。

また、各テーブルに追加することを避ける方法はありますか?たぶん、スクリプトの上に何かをすることができるので、それは続くすべてのものに有効になりますか?

役に立ちましたか?

解決

SYSDBAアカウントを使用してデータベースにログインするのはなぜですか?これは非常に強力であり、自分が何をしているのかわからない場合、データベースにひどいダメージを与えることができます。開発環境では、あなたができる危害に制限がありますが、生産で物事をする前に良い習慣に陥るのが最善です。

Sysdbaとしての興味深い点は、ログインのユーザー名部分をオーバーライドすることです。OSユーザーに特権がある場合、SYSのように。見てみな:

SQL> conn apc
Enter password:
Connected.
SQL> show user
USER is "APC"
SQL> conn apc as sysdba
Enter password:
Connected.
SQL> show user
USER is "SYS"
SQL>

そのため、そのスクリプトを実行すると、SYSスキーマ内のすべてのオブジェクトを作成しました。これは首の大きな痛みであることがわかります。均等で反対の復帰スクリプトがあることを願っています。

スクリプトを適切に実行するには、必要なのはDBO_OTHER(sysdbaまたはsysoperのないsye -sysdbaまたはsysoperのない)として接続することだけです。スクリプトは、現在のスキーマにテーブルを作成します。

いくつかのスキーマでオブジェクトを作成する必要がある場合は、ログアウトする必要はありません。スキーマはユーザーとは異なり、実行してスキーマを切り替えることができます alter session set current schema = WHOEVR;. 。これは非常に便利なトリックであり、しばらく前にブログを書きました。 詳細をご覧ください.

ユーザーは、現在のスキーマを変更することで追加の特権を取得しないことに注意してください。したがって、複数のスキーマでオブジェクトを作成するようなものの場合、実行するユーザーはパワーユーザーである必要があります。

他のヒント

私はちょうどこの小さなジェムにつまずいただけで、デフォルトでは、あなたがログインしていないスキーマ/ユーザーでアクションを実行できます。つまり、デフォルトでは、選択したステートメントなどは、独自ではなくこの新しいスキーマで動作します。

セッションセットcurrent_schema =を変更します

例:自分 +テーブル1 + table2 someoneelse + supertable1 + supertable2

log in as "Myself" 
select * from SuperTable1

Error: ORA-00942: table or view does not exist

alter session set current_schema = SomeoneElse 
select * from SuperTable1 <This will work.>

左側のパネルの「テーブル」ツリーには、ログインユーザーがOracle SQL開発者に所有するテーブルのみが含まれています。スクリプトが別のユーザーのスキーマでテーブルを作成する場合、「他のユーザー」の横にある +をクリックし、適切なユーザーを見つけて、テーブルの +をクリックする必要があります。

他の人が言ったように、必要な場合を除き、Sysdbaを使用すべきではありません。また、スクリプトは、その大まかな説明に基づいて通常のユーザーとして実行される必要があるように聞こえます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top