0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ORA-01918: user ユーザ does not existとなった時の対応方法

Posted at
  • 環境
    • Red Hat Enterprise Linux Server release 5.11 (Tikanga)
    • SQL*Plus: Release 11.2.0.1.0
    • Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

事象 : いるはずのユーザを削除しようとすると怒られる

SQL> select distinct * from all_users where username like '%HOGE%';

USERNAME                          USER_ID CREATED
------------------------------ ---------- ---------
HOGE                                   100 12-DEC-17
HOGEDB                                  99 12-DEC-17
TESTHOGEDB                             121 21-APR-20

SQL> drop user testhogedb cascade;
drop user testhogedb cascade
          *
ERROR at line 1:
ORA-01918: user 'TESTHOGEDB' does not exist

原因 : USERNAMEの最後に半角スペースが入っているから

ふと、思い立ってクライアントツールを使ってSQLの結果をExcelにエクスポートして、USERNAMEの値のセルをコピーしてエディタに張り付けてみた。
USERNAMEの最後に半角スペースが入っていいた・・・。
ずっとSQL*Plusで見ていたら気が付かなかった・・・。

そもそも、なぜUSERNAMEの最後に半角スペースが入っているのか?
データベースのインポートでimpdpコマンドを使うべきところをimpコマンドを使ってIMP-00038: Could not convert to environment character set's handleになった。
その時にimpimpdpに変えただけでオプションを一切変えなかったら(アホでした)こうなったようだ・・・。

コマンドだけ変えてオプションを一切変えなかった
$ impdp ponsuke/password file=/path/to/dpdump/hogedb.dmp fromuser=hogedb touser=testhoge

対応 : 半角スペースを含めてUSERNAMEを指定して削除する

SQL> drop user "TESTHOGEDB " cascade;

User dropped.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?