2012-01-02 15 views
4

私はMySQLデータベースにテーブルを持っています。テーブルの名前は30文字以上です と同じテーブルをOracle 11gで作成したいのですが、Oracleでは名前に最大30文字のテーブルしか使用できません。
システムはこれらのテーブルに基づいているため、30文字未満の文字数にするためにテーブルの名前を変更することはできません。テーブル名を変更するとコストがかかります。私が探している答え。テーブル名が30文字以上

ありuser_tablesと呼ばれるテーブルであり、私はテーブルを記述する際には、table_nameフィールドがデータ型varchar2(30)を持っていると言うので、私はテーブルを変更し、table_name varchar2(255)を作ってみましたが、私はできなかった、それは私にエラーを与えます言って:

ORA-00942:表またはビューが、私がsysとして

を接続していますが存在しません。

誰も私の問題を解決する方法を知っていますか?

+0

シノニムが30以上の文字をサポートするかどうかわかりません。しかし、それは回避策かもしれません。同義語名の機能上の最大長は32バイトです。 30バイトを超える名前は、Java機能でのみ使用できます。 30バイトを超える名前を指定すると、Oracle Databaseは名前を暗号化し、暗号化の表現をデータ・ディクショナリに配置します。実際の暗号化にはアクセスできず、元の仕様またはデータ・ディクショナリ表現を同義語名として使用することはできません。[リンク](http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_7001 .htm) – xQbert

+0

'user_tables'はデータ辞書の一部であり、読み取り専用テーブルとビューのセットです。データディクショナリ内のオブジェクトを更新することはできません。 – eaolson

+0

システムテーブルを更新できれば、ほかのすべてのシステムテーブルにどのような影響があるか分かりません。 – Ben

答えて

15

すべてのOracle識別子は30文字に制限されています。これを変更できるオプションはありません。

3

類義語は動作しません:source。 30の制限は困難で速い。

EDIT: 継続研究の後oracle docsここにJavaが記述されていない限り、同義語でも30文字を超えることはできません。

ロングストーリーショート:あなたはオラクル環境でやりたいことはできません。

関連する問題