0

職場では、Oracle 7.3 にアプリを置いています (古いものです)。最近、すべてのテーブルで SELECT できるアカウントを作成しようとしましたが、他には何もありません。つまり、更新も削除もありません。しかし、新しいアカウントを作成するたびに、すべてのアプリケーション テーブルにアクセスできます。私はそれを CREATE SESSION だけにまで落としました。これは役に立ちませんでした-ユーザーはまだテーブルを更新できました!

そのため、テーブルとまったく同じ名前のパブリック シノニムがたくさんあることがわかりました (つまり、テーブル myTable123、パブリック シノニム myTable123)。それらの1つを削除しましたが、ユーザーはその特定のテーブルでSELECTできませんでした。次に、新しいテーブルを作成しましたが、明らかに新しいユーザーはそれを見ることができませんでした。ユーザーがアクセスできることを期待して、そのテーブルのパブリック シノニムを追加しました。新しいユーザーがそれを見ることができなかったのは運が悪い.. GRANT が与えられなかったので、これは理にかなっています。他に何かあるはず……。

私は Oracle の専門家ではなく、この問題の真相を突き止めようとしていますが、今のところうまくいきません。あなたが持っているかもしれないどんな提案でも助けてください。乾杯!ダモ

4

2 に答える 2

5

tuinstoelが言うように、パブリックシノニムは無視できます。これは権限には影響しません。

元のテーブルが作成されたときに、作成者が

grant [permissions] on [table] to public

ここで、[permissions]は「all」と同じくらい広い可能性があります。つまり、新しいユーザーには、これらのテーブルに対する権限が自動的に付与されます。

しますか

select * from ALL_TAB_PRIVS where table_name = '[one of your problem tables]'

何かを返しますか?

ところで-Oracle7.3.3を使用したことはありません-パーミッションモデルはあまり変更されていないと思います。

于 2009-05-25T12:05:11.193 に答える
1

Oracle 7.3は古いだけでなく、非常に、非常に、非常に古いものです。12歳か13歳です。

public synsを作成または削除しても、テーブルにアクセスする権限は変更されません。パブリックシノニムを作成する唯一の理由は、スキーマ名をプレフィックスとして付けずにテーブルにアクセスできるようにすることです。

古いユーザーには、「任意のテーブルを更新する」や「任意のテーブルを選択する」または「dba」などの特権があると思います。

于 2009-05-25T11:50:53.937 に答える