質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

2回答

7460閲覧

oracleの消せないテーブルについて

klolo

総合スコア15

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

0クリップ

投稿2019/02/25 01:49

oracleでDBA_TABLESから取得したtable_nameを利用して権限付与を行っています。

しかし、一部のテーブルでDBA_TABLESのtable_nameとして認識されているのにかかわらず
「desc テーブル名」 でも存在しないテーブルとして認識されます。

また、A5mark2というDB操作ソフトを使用しているのですが、テーブルの一覧には表示されています。
定義情報等を開くと「情報の取得に失敗しました」といったメッセージが出てしまい、確認することもできません。

テーブル名を認識しているOracleの内部データと実体にずれが起きてしまっているのではないかと考えています。
このまま放置しても実害はないのですが、どういう場合に発生しうるのかや、テーブルの削除方法
をご存知の方いらっしゃいましたら、ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/02/25 02:29

> DBA_TABLESから取得したtable_nameを利用して権限付与を行っています。 どのように行っているのですか? その内容が現象に起因しているのかもしれません。
klolo

2019/02/25 02:34

SELECT 'GRANT SELECT ON ' ||OWNER||'.'||TABLE_NAME|| ' TO user_aaa;' FROM DBA_TABLES WHERE OWNER='bbb'; のような形でGRANT文を生成しております。
guest

回答2

0

SQL

1SELECT OWNER, TABLE_NAME 2FROM DBA_TABLES 3WHERE DROPPED = 'NO' 4ORDER BY OWNER, TABLE_NAME ;

でOWNERを確認されては?

投稿2019/02/25 02:01

Orlofsky

総合スコア16419

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

klolo

2019/02/25 02:08

早急なご回答ありがとうございます。 DROPPED = 'NO'を指定しても 状況としては変わらず、選択されてしまう状況です。
Orlofsky

2019/02/25 02:24

対象のテーブルのログインスキーマとDDL(CREATE TABLEした)スキーマは同じですか? エラーメッセージは表示された内容を質問にそのまま載せてください。 オブジェクト権限があるかは DBA_TAB_PRIVS https://docs.oracle.com/cd/E96517_01/refrn/DBA_TAB_PRIVS.html#GUID-4AC57A96-FF55-4788-9301-AFED23AE3934 を SYNONYM が設定されているかは DBA_SYNONYMS https://docs.oracle.com/cd/E96517_01/refrn/DBA_SYNONYMS.html#GUID-A4B4EFAE-F979-4F78-A0B2-12EFDD22F25D を確認してください。
klolo

2019/02/25 04:24

ログインユーザ:aaa 対象のユーザ:bbb 消せないテーブル:tbl_xxx として、sqlplusで下記のdesc文を実行すると下記のようになります。 SQL> desc bbb.tbl_xxx ORA-04043: オブジェクト bbb.tbl_xxxは存在しません。 また、権限はgrantが出来ず付与できていない状況で、DBA_TAB_PRIVSでも 付与されておりませんでした。 また、SYNONYMを確認したところ、今回のtbl_xxxは DBA_SYNONYMS の table_name にも synonym_table にも 存在しないため、無関係のように見えます。
klolo

2019/02/26 05:21 編集

説明不足で申し訳ございません。 DBA_TABLES から取得したあるテーブルに対して、grant文が失敗したため、 そのテーブルを確認したところ、参照もできないテーブルであったというのが元々の状況でございます。 そのため、grantが成功していない状態です。
Orlofsky

2019/02/26 02:04

>そのため、grantが成功していない状態です。 その時表示されたメッセージをそのまま載せては? テーブルが存在しているスキーマで GRANT していますか?
klolo

2019/02/26 05:24

いえ、grantは個人ごとに割り当てられたユーザでスキーマ.table名 の形で実施しております。 エラーは下記のようになります。 ORA-00942(表またはビューが存在しません)
Orlofsky

2019/02/26 05:34

返事が幼稚過ぎてわかりません。 質問に現象を再現できるレベルの実行したSQLやエラーメッセージも含めてをそのまま載せては?
guest

0

・DBA_TABLESから取得したtable_nameを利用して権限付与
・「desc テーブル名」の実行
・A5mark2というDB操作ソフトを使用
上記操作を行っているユーザーとその権限を確認して下さい。
また、Rootユーザーでも同じかどうかも確認して下さい。

投稿2019/02/25 02:45

sazi

総合スコア25430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

klolo

2019/02/25 04:17

ユーザは、私個人に割り当てられているユーザでDBA権限が付与されています。 また、Rootはsysユーザと考えてよいでしょうか?
sazi

2019/02/25 04:25

DESCRIBEはselect権限があれば表示されるはずですから、先ずはSYSDBA権限ユーザでどのような権限が付与されているのかを確認されて下さい。 権限については、DBAロール < SYSDBA権限、なので確認できないものもあるでしょうから。
klolo

2019/02/26 01:54

申し訳ございません。sysdba権限での確認ができない状況でした。 パスワードの変更も、バックアップソフトでsysユーザを使用しているため 容易にできない状況でございます。
sazi

2019/02/26 02:11

リカバリーの目的の為だけに、sysdba権限のユーザーを使用するという事ですけど、それができないという事ですか?
klolo

2019/02/26 05:26

いえ、sysユーザのパスワードが現在不明という状況です。 そのためパスワードを変えなければsysユーザでログインできない状況なのですが、そのパスワードを変更すると、サードパーティ製のバックアップソフトに保持しているsys/パスワードも変更する必要があり、 容易にできない状況という意味でございます。
sazi

2019/02/26 05:46

会話が成立しているかどうか分かんないですね。 そのoracleの管理者がおられるならその人にお願いして確認してもらう方が早いし、あなたが管理者で整理したいなら再構築という方法が考えられます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問