オブジェクトテーブルに存在しないように見えるオブジェクトを見つけるにはどうすればよいですか?


11

というオブジェクトがありますcot_ntn_pi_v。これは同義語だと言われました。all_synonymsテーブルには表示されません。ビューまたはテーブルのように見えますが、すべてのオブジェクトのテーブルにはありません。そこから選択できますが、「存在しない」ためドロップできず、「この名前はすでに別のオブジェクトで使用されています」と同じ名前で新しいテーブルを作成できません。

私は怒っていますか、それとも本当に愚かなことをしていますか?


1
アイテムに対する権限がない場合は、ALL_ *テーブルに表示されない可能性があります。管理ログインが必要で、DBA_ *データディクショナリテーブルを調べる必要がある場合があります。
ConcernedOfTunbridgeWells

回答:


11

テーブルと同じ名前空間のオブジェクトタイプは次のとおりです。

  • スタンドアロンの手順
  • スタンドアロンのストアド関数
  • パッケージ
  • ユーザー定義型
  • シーケンス
  • 視聴回数
  • プライベートシノニム
  • マテリアライズドビュー

したがって、おそらくこれらのタイプの1つです。それから選択できる場合、最初の5つは除外され、テーブル、ビュー、プライベートシノニム、またはマテリアライズドビューのいずれかになります。

all_objectsなどで検索したときに大文字を使用しましたか?例えば、

select *
  from ALL_OBJECTS
 where OBJECT_NAME = 'COT_NTN_PI_V'; 

SQL DeveloperやToadなどのツールを使用している場合は、ツールでオブジェクトを説明できます。ツールで名前を強調表示し、Shift-F4DeveloperまたはF4Toadでヒットします。Toadはオブジェクトに関する多くの説明を提供しますが、Developerの[Details]タブには、その行TABLE_NAMEまたは行が含まMVIEW_NAMEれ、それが何であるかを示します。

それが何であるかがわかったら、それをドロップする方法を簡単に知ることができます。


はい、SQL開発者とシフト+ f4を使用して、必要なものを見つけることができました!おかげで:)
BON

4

オブジェクト自体に対する権限がない場合、ALL_%テーブルでオブジェクトを表示できない可能性があるため、DBA_OBJECTSテーブルを確認します(これを行うには、権限/適切に権限が付与されたユーザーが必要です)。

select * 
from DBA_OBJECTS
where object_name = 'COT_NTN_PI_V';

それでも出力が生成されない場合は、次のクエリで生のOracleデータディクショナリテーブルをチェックインできます。

select u.name as owner, o.name as object_name, 
 decode(o.type#, 0, 'NEXT OBJECT', 1, 'INDEX', 2, 'TABLE', 3, 'CLUSTER',
 4, 'VIEW', 5, 'SYNONYM', 6, 'SEQUENCE',
 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
 11, 'PACKAGE BODY', 12, 'TRIGGER',
 13, 'TYPE', 14, 'TYPE BODY',
 19, 'TABLE PARTITION', 20, 'INDEX PARTITION', 21, 'LOB',
 22, 'LIBRARY', 23, 'DIRECTORY', 24, 'QUEUE',
 28, 'JAVA SOURCE', 29, 'JAVA CLASS', 30, 'JAVA RESOURCE',
 32, 'INDEXTYPE', 33, 'OPERATOR',
 34, 'TABLE SUBPARTITION', 35, 'INDEX SUBPARTITION',
 39, 'LOB PARTITION', 40, 'LOB SUBPARTITION',
 43, 'DIMENSION',
 44, 'CONTEXT', 47, 'RESOURCE PLAN',
 48, 'CONSUMER GROUP',
 51, 'SUBSCRIPTION', 52, 'LOCATION', 56, 'JAVA DATA', 'UNKNOWN') as type,
o.ctime, o.mtime,
 to_char(o.stime, 'YYYY-MM-DD:HH24:MI:SS'),
 decode(o.status, 0, 'N/A', 1, 'VALID', 'INVALID') as status
 from sys.obj$ o, sys.user$ u
 where o.owner# = u.user#
 and o.linkname is null
 and (o.type# not in (1 , 10) or
 (o.type# = 1 and 1 = (select 1
 from sys.ind$ i
 where i.obj# = o.obj#
 and i.type# in (1, 2, 3, 4, 6, 7, 9))))
 and o.name = 'COT_NTN_PI_V';
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.