4 Replies Latest reply: Jul 4, 2011 7:45 AM by hatahata RSS

    CREATE文でORA-02083のエラー

    user13233733
      各種CREATE文の実行時に不可解なエラーが発生しており、同じような現象を見たことがある方がおりましたら情報を頂きたく、
      よろしくお願い致します。

      以下のように、DBリンクしたDB内のテーブルに対するシノニムを作成しようとした際、

      CREATE SYNONYM USER1.SYNONYM_NAME FOR USER1.SYNONYM_NAME@DBLINK_NAME

      「ORA-02083:データベース名に無効な文字’-’が含まれています」

      のエラーが発生しました。
      ですが実際、DBリンク名にも、SQL文中にも1つも「-」(ハイフン)は含まれていません。
      その他、検証した中で分かったこととして、以下のものがあります。

      ・エラーになったシノニムと同じ名称でTABLE、VIEWを作成したところ、同様のエラーが発生。
      ・シノニムの名称を変えれば、前述のシノニムCREATE文も実行される。
      ・ユーザーを変えれば、シノニム名称は変えなくても前述のシノニムCREATE文は実行される。

      以上から、シノニムに限らず、特定のユーザーの特定の名称に対してCREATE文が実行できなくなっているものと思われます。
      表示されるエラーは実際の問題と異なる内容ですが。
      (前述のSQLは例で、実際エラーとなる名称は別のものです)

      Oracleサービスの再起動、OSの再起動も実施しましたが、状況は変わりませんでした。

      環境
      OS:Windows Server 2003 SP1 (32bit)
      DB:Oracle 10g (10.2.0.3)

      その他情報
      1年ほど前、ハード障害を理由にPCハード交換を行っており、
      旧PCで動いていたDBをdmpにエクスポート、新PCに構築した環境にインポートを行い、運用しています。
      PC交換の際、OS、DBのバージョンに変更はありません。


      以上です。
      何とか原因究明、復旧したいのですが、見当がつかない状況です。

      よろしくお願い致します。
        • 1. Re: CREATE文でORA-02083のエラー
          514411
          旧掲示板で以下のような書き込みがありました。

           データベースリンク名の指定方法
           http://www.oracle.co.jp/forum/thread.jspa?threadID=8008896

          ORA-02083 については、データベース リンク先のデータベースのグローバル名にハイフンが入っていたりしませんか?
          以上から、シノニムに限らず、特定のユーザーの特定の名称に対してCREATE文が実行できなくなっているものと思われます。
          表示されるエラーは実際の問題と異なる内容ですが。
          (前述のSQLは例で、実際エラーとなる名称は別のものです)
          「同様のエラーが発生」と書かれているのに、
          「実際の問題と異なる内容」だったり、「実際エラーとなる名称は別のもの」だったり、
          という言い回しの但し書きがあると分かり辛いかと…。

          それぞれのエラーを書いた方がレスつきやすいかも。
          その「表示されるエラーは実際の問題と異なる内容」から分かることがあったりとか。
          • 2. Re: CREATE文でORA-02083のエラー
            user13233733
            コメントありがとうございます。
            ORA-02083 については、データベース リンク先のデータベースのグローバル名にハイフンが入っていたりしませんか?
            確認しましたが、やはりハイフンはどこにも入っていませんでした。
            シノニムの名称を変えたら正常に作成できたことから、間違いは無いかと思われます。
            「同様のエラーが発生」と書かれているのに、
            「実際の問題と異なる内容」だったり、「実際エラーとなる名称は別のもの」だったり、
            という言い回しの但し書きがあると分かり辛いかと…。
            言い回しが分かりづらくて済みません。

            今回のケースでOracleから返されるエラーは
            「ORA-02083:データベース名に無効な文字’-’が含まれています」
            のみとなります。

            ですが実際にはハイフンは実行SQLの中に1つも含まれていないため、表示されるメッセージと、問題の原因に
            食い違いがあるように見えたことから、「表示されるエラーは実際の問題と異なる内容ですが。」
            という一文でした。



            よろしくお願い致します。
            • 3. Re: CREATE文でORA-02083のエラー
              514411
              最初に提示された SQL も実際に実行されているものとは異なるのでしょうか?

              実際にどんな名前でどんな SQL を発行したらどんなエラーになったのか、が分かれば、
              何か気づく方が出てくるかも。
              #抽象的な書き込みではなく、実際の結果を見た方が伝わるでしょう。

              固有名称などのそのままでは書けない部分もあるかと思いますが、
              その場合でも別の名称で試してみてダメだった結果があれば、それを元に書いてみるとか。

              例えば、
              確認しましたが、やはりハイフンはどこにも入っていませんでした。
              シノニムの名称を変えたら正常に作成できたことから、間違いは無いかと思われます。
              どういう確認をして、どういう結果が表示されたのか、
              どういう名称に変えたら大丈夫だったのか、とか。

              実際のものを伏せると、より広い可能性を考える必要がでてくるので、レスつきにくいかも。
              #で、推測で書くとそれは違う、という結果が連続することも…。
              ちなみに、マルチバイト文字(日本語とか)の名称ではないですよね?
              • 4. Re: CREATE文でORA-02083のエラー
                hatahata
                CREATE SYNONYM USER1.SYNONYM_NAME FOR USER1.SYNONYM_NAME@DBLINK_NAME
                上記SQLの内容から判断するとDBリンク先のオブジェクトもシノニムのようですが、
                このシノニム(USER1.SYNONYM_NAME)が貼られているオブジェクトは何でしょうか。

                もしかして、更に別のDBリンク先オブジェクトを参照していて、ここで使われている
                DBリンク名、グローバルデータベース名に問題があったりしませんか?

                例.USER1.SYNONYM_NAME@DBLINK_NAME => USER2.TABLE@DBLINK_NAME2

                上記例で言うと、DBLINK_NAME2であったり、DBLINK_NAME2を使用してアクセスした
                DBリンク先のグローバルデータベース名に問題となる文字が含まれていたりしないでしょうか。

                状況を正確に把握ししきれていない為、あくまで推察ですが。