-
今、UNIX上のORACLEからエクスポートしたDBを、NT上のORACLEにインポートを
行おうと思っているのですが、上手くいかずに困っています。

最初は、DOSよりimpを行ったのですが、charsetが合わずに失敗。
環境設定で、NLS_LANGの値を変更したりもしたのですが、成功しませんでした。

次に、Storage Managerでインポートを試みたのですが、下記のエラーであえなく
失敗。。。。。  (T。T;)

「OracleManagermentServerに接続している場合だけウィザードを起動できます。」

どなたか、同じようにUNIXからNT上のORACLEにデータを移行したことのあるかた。
どうか、どうか、アドバイスをお願い致します。

-

このQ&Aに関連する最新のQ&A

A 回答 (1件)

UNIXのOracle(EUC)からNTのOracleにインポートしたときの手順です。


NTのOracleは8.0.5か8.1.5だったと思います。
(1)Oracle停止
(2)レジストリ変更
HKLM\SOFTWARE\ORACLE\NLS_LANG
(環境によってはHKLM\SOFTWARE\ORACLE\HOMEx\NLS_LANG)
JAPANESE_JAPAN.JA16SJIS から JAPANESE_JAPAN.JA16EUC に変更
(3)init.ora変更
Init.ora に以下の2行が必要です。なければ追加
nls_language = JAPANESE
nls_territory = JAPAN
(4)Oracle起動
(5)インポート実行(DOSから)
実行時に出力されるメッセージもEUCコードになりますので
EUCの使えるエディターで確認します。
(6)init.oraとレジストリを元に戻す。
(7)Oracle再起動

上記方法で行うか
UNIXでexportする際にNLS_LANG をSJISにしておけば
そのままNTにimportできると思います。
    • good
    • 0
この回答へのお礼

-
ありがとうございました。

既に別の方法で、なんとか移行を行うことができましたが、
大変に勉強になりました。

丁寧な回答をありがとうございました。

ちなみに。
レジストリを変更するところまでは、たどり着いたのですが、
init.oraの変更方法を知らなかった為に、あえなく失敗。

その後、WINDOWSからSQL*を使って、UNIXサーバのDBをエクスポート
したものであれば、正常にインポート出来ることを発見し、この方法で
なんとか移行を行うことが出来ました。

-

お礼日時:2002/04/03 14:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q環境変数NLS_LANGの設定方法

-
UMIXのORACLEからDBをエクスポートしたものを、NTのORACLEのDBに
インポートしたいのですが、エラーが発生してしまい上手くインポート出来ません。

調べた結果、環境変数NLS_LANGを設定すれば、エラー無くインポート出来るようなの
ですが、今度は、環境変数の設定が上手く行きません。

DOS上で下記を入力し実行しました。。。。
 >set NLS_LANG JA16SJIS

「JA16SJIS」は、sql*より、V$NLS_PARAMETERSを参照した値を設定。
でも、環境変数は存在しませんのエラーメッセージで、上手くいきません。

きっと、根本的に間違っているようにも思うのですが、どうしたらよいのか
わからずに困っています。

アドバイス等がありましたら、是非、宜しくお願い致します。
-

Aベストアンサー

NTでの環境変数の設定は、次の通りです。
システムのプロパティ>詳細>環境変数
そこで、システム環境変数として、必要な値を追加してください。
その後、再起動すると設定が有効になります。

DOS上というは、コマンドプロンプト上だとすると、SETコマンドは、そのプロンプト上でのみ有効な環境変数になります。

QOracleのCreate Table 文のStorage句

お世話になります。

OracleのCreate Table 文のStorage句のNextの値を
変更したいのですが、できるのでしょうか?

Alter Table文で変更するのでしょうか?
手元にマニュアルが無く困っております。

よろしくお願いします。

Aベストアンサー

alter table テーブル名 storage ( next 変更後のサイズ );

だっけかな?

QUnix(soralis)で、Oracleに接続時にコアをはいて終了してしまう。

Pro*Cで、自動作成された、プリコンパイラをリンクして実行すると、「セグメント例外 (コアダンプしました)」となって止まってしまう。
Pro*Cのリストは以下のとおりでうs。

#include<sqlca.h>
main()
{
chara[20],b[20];

strcpy(a,"XX");
strcpy(b,"XX");
printf("test start\n");

EXEC SQL WHENEVER SQLERROR GOTO sql_error;
EXEC SQL CONNECT :a IDENTIFIED BY :b;

return(0);

sql_error:
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK WORK RELEASE;
printf("error\n");
return(1);
}

どうやら、Oracleへ接続してるところで、sqloxtという関数を呼び出しているところで止まってしまうらしいです。
コンパイル、リンクまでは、何事もなくいったのですが、実行してみるとダメです。
なにが、おかしいのでしょうか?

Pro*Cで、自動作成された、プリコンパイラをリンクして実行すると、「セグメント例外 (コアダンプしました)」となって止まってしまう。
Pro*Cのリストは以下のとおりでうs。

#include<sqlca.h>
main()
{
chara[20],b[20];

strcpy(a,"XX");
strcpy(b,"XX");
printf("test start\n");

EXEC SQL WHENEVER SQLERROR GOTO sql_error;
EXEC SQL CONNECT :a IDENTIFIED BY :b;

return(0);

sql_error:
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK WORK RELEASE;
printf("error\n")...続きを読む

Aベストアンサー

 えとですね。

 文字列は必ず、EXEC SQL BEGIN DECLARE SECTION; 内でホスト変数として宣言しなければいけません。
 なぜなら、通常の変数と違い、ホスト変数は実は構造体になっており、文字列の長さを設定するところがあるからです。
 今回の件は、通常の文字列を「構造体として」読もうとしているため、アクセスできない領域に無理矢理アクセスしようとしてコアダンプを吐いて止まってしまっています。

 また、このとき注意すべき点としては、文字列の長さを表す変数には、プログラマー(つまり Kannazuki さん自身)が自分で長さを設定しなければならないことでしょう。これが間違っているとオラクルはエラーを返します。

 具体的にはこうやります。

----------
char a[20], b[20];
   ↓
EXEC SQL BEGIN DECLARE SECTION;
varchar a[20], b[20];
EXEC SQL END DECLARE SECTION;

---------
strcpy(a,"XX");
strcpy(b,"XX");
   ↓
strcpy(a.arr, "XX");
a.len=strlen(a.arr);
strcpy(b.arr, "XX");
b.len=strlen(b.arr);
---------

 とまあ、これをやれば動くはずです。

 えとですね。

 文字列は必ず、EXEC SQL BEGIN DECLARE SECTION; 内でホスト変数として宣言しなければいけません。
 なぜなら、通常の変数と違い、ホスト変数は実は構造体になっており、文字列の長さを設定するところがあるからです。
 今回の件は、通常の文字列を「構造体として」読もうとしているため、アクセスできない領域に無理矢理アクセスしようとしてコアダンプを吐いて止まってしまっています。

 また、このとき注意すべき点としては、文字列の長さを表す変数には、プログラマー(つまり Ka...続きを読む

QOracleデータベーストリガーのインポート

Oracle8.1.7にて、あるAユーザーの所有物を全てExportし、その後、Bユーザーの所有物としてImportしようとすると、データベーストリガーのImport時にエラーが発生します。その他テーブルのImportは全て、成功しています。
(FROMUSER=A TOUSER=Bとしてimpしています。)
そこで、LOGを見てみると、データベーストリガーのCreate時にトリガー自体はBユーザーの所有物としてImportしようとしているが、そのトリガー作成SQL文内のテーブル参照部分がAの所有物として指定されている為、エラーが発生しているという事がわかりました。
create trigger B.trigger_name ~ on A.table_name
となっていました。
これは、impの仕様?バグ?なのでしょうか?それとも、なにか他にImport時に指定するオプションがあるのでしょうか?
回避方法等ご存知でしたら教えてください。

あと、このCreate Trigger文をSQL PLUSに手動で貼りつけて実行させようとしたら、何の反応もありませんでした。
まるで、このコマンドを認識していないという感じでした。SQL PLUSではCreate Trigger文は処理されないのでしょうか?因みにSQL Worksheetにて実行は出来ました。
こちらもご存知の方お願いします。

Oracle8.1.7にて、あるAユーザーの所有物を全てExportし、その後、Bユーザーの所有物としてImportしようとすると、データベーストリガーのImport時にエラーが発生します。その他テーブルのImportは全て、成功しています。
(FROMUSER=A TOUSER=Bとしてimpしています。)
そこで、LOGを見てみると、データベーストリガーのCreate時にトリガー自体はBユーザーの所有物としてImportしようとしているが、そのトリガー作成SQL文内のテーブル参照部分がAの所有物として指定されている為、エラーが発生しているという事が...続きを読む

Aベストアンサー

#1です。

> トリガーを作成する時にあえて、テーブルにユーザー指定を行っていると、この
> 様な事になってしまうのですか?imp/expでユーザー変更オプション指定しても
> そこまでは変更してくれないという事なんですね?

その通りです。これはトリガーに限ったことではなく、
テーブルなどOracleのオブジェクト全般そうみたいです。

> あと、SQL*PLUSで;はつけたのですが。。。
> /はどういう時につけるのでしょう。普通select文などでは;でいいですよね。違> いはなんですか?

;は文の終わりを意味します。したがって文末につけます。

/は文の最終行を示します。これは文のあと1改行してから/だけの行を入れます。
文の直後につけることは出来ません。

つまり、入力する場所だけの違いで、意味はほとんど同じです。
ちなみに、これはSelect文でも同じです。

QOracleインポート

Oracle9iでエクスポートしたファイルをインポートしていますが、順序(Sequence)が元にもどりません。エクスポート前が10だとするとインポートしたときには、create sequenceを行った後の状態になっています。これをどうにか、インポート後は10にしたいのですがどうすればよろしいのでしょうか。エクスポート、インポートの権限としてDBAやEXP_FULL_DATABASE,IMP_FULL_DATABASEを与えています。

Aベストアンサー

こんにちわ。

Sequence が既にある状態でImport していませんか?
手元の環境 (Oracle8i R8.1.7) で確認してみました。
確認手順は、以下の通りです。
1) test 用のユーザを作成して、connect ロール, resource ロールを付与
2) Table とSequence を作成
3) Sequence を使って、表にデータをInsert
4) ユーザ単位でExport を実行
5) test 用のユーザを削除
6) test 用のユーザを再作成して、connect ロール, resource ロールを付与
7) ユーザ単位でImport を実行

因みに、3) で10回Sequence からnextval を取得した状態で確認を行いました。
結果、Import 後のSequence のnextval は21 となりました。
→ これは、キャッシュされているSequence が破棄された事が原因です。
  nocache キーワードを付けてSequence を作成した状態で同様の確認を
  行ったところ、11から順序番号を取得できました。

こんにちわ。

Sequence が既にある状態でImport していませんか?
手元の環境 (Oracle8i R8.1.7) で確認してみました。
確認手順は、以下の通りです。
1) test 用のユーザを作成して、connect ロール, resource ロールを付与
2) Table とSequence を作成
3) Sequence を使って、表にデータをInsert
4) ユーザ単位でExport を実行
5) test 用のユーザを削除
6) test 用のユーザを再作成して、connect ロール, resource ロールを付与
7) ユーザ単位でImport を実行

因みに、3) で10回Sequence からne...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報