SQLPlusでUnicodeを扱う際に発生するエラーの解決方法

このQ&Aのポイント
  • Windows XP上でOracle 9 リリース2によるデータベースを構築しようとしていますが、Unicodeで書かれた.sqlファイルを使ってデータベースにデータを投入する際にSQLPlusがエラーを出してきます。
  • NLS_CHARACTERSETとNLS_NCHAR_CHARACTERSETを適切に設定しているにもかかわらず、.sqlファイルを読み取れずSP2-0042エラーが発生します。
  • オラクルをインストールする際に日本語と英語の動作を設定していたため、SQLPlusがUnicodeを読み取れない原因かもしれません。
回答を見る
  • ベストアンサー

SQLPlusでUnicode

Windows XP上でOracle 9 リリース2によるデータベースを構築しようとしています。Unicodeで書かれた.sqlファイルを使って次のことをしたいのですが、うまくいかずに悩んでいます。アドバイスいただけませんでしょうか。 INSERT, DELETE, UPDATEなどのコマンドが記述された SQLスクリプトをSQLPlusにてデータベースに投入する。 このデータベースは次のようにNLS変数を設定しました。 NLS_CHARACTERSET = AL32UTF8 NLS_NCHAR_CHARACTERSET = UTF8 SQLPlusは.sqlファイルを読み取れずSP2-0042というエラーを出してきます。いくつかのエンコード(UTF8, Unicode, ANSI)で.sqlファイルを保存することを試したのですが、どの場合もSQLPlusではじかれました。オラクルをインストールするときに、いつかのタイミングで日本語と英語で動作するようにインストールしたのですが、それがSQLPlusでUnicodeを読み取れない原因なのでしょうか。 よろしくおねがいします。

  • Oracle
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

そもそも、SQL*PLUSは、UTF8な端末をサポートしません。 Windowsクライアントのデフォルトは、SJISになりますが、 SJISだと表現できないような文字があるということでしょうか? もし、SJISで表現できない文字を扱わなければならないのであれば、 SQL*PLUSを諦めてください。 iSQL*PLUSを使うなり、独自のクライアントプログラムを作るなりすれば 良いかと思います。 SJISで表現できる文字しかないけど、たまたまスクリプトが、UTF8で 書かれているということであれば、文字コード変換ソフトを経由して SQL*PLUSへ流し込めばよいかと思います。

mirscheimer
質問者

お礼

どうしてもSJISのコード表にはない文字を扱う必要があるので、iSQL*PLUSを検討することにしました。ありがとうございます。

関連するQ&A

  • OracleのSQLPLUSログインについて

    sqlplusにてデータベースにアクセスできません。 どなたか知恵をお貸しください。 環境は、LinuxにOracle10gをインストールしました。 インストールと同時にデータベース(orcl)を作成しました。 インストールしたマシンにて、sqlplusを実行してみようとしているところです。 Oracleのインストール、データベースの作成が終了し、 コマンドラインから"sqlplu /nolog"を実行し、データベースに 接続しようとしましたが、エラーと表示されます。 コマンド、エラーは以下の通りです。 SQL> conn sys/manager as sysdba ERROR ORA-12162: TNS:net service name is incorrectly specified Oracleのインストール、データベースの作成を行った Linuxのユーザは"oracle"です。 この場合、ユーザ名はoracleが正しいのでしょうか?

  • オラクルインストールユーザ以外でsqlplusをするとcommand not found となって実行できない

    RedHat6.2にoracle8.1.6をインストールし、dbassistを起動してデータベースを作成しました。 その後sqlplus を実行したいのですが、Oracleインストールユーザだと実行できますが、 その他のユーザだと sqlplus を実行した際にcommand not found と出てきます。 どこかにパスを書き込めばよい・・と聞いたのですが、それがどのファイルなのか分かりません。 Oracleインストールユーザ以外がsqlplus を実行できるようにするにはどうしたら良いでしょうか。 すみません、宜しくお願いします。

  • Oracle10.2インストール後、インストールOSのユーザでない他のユーザからSQLPLUSを使うには?

    Oracle10.2をRed hat Linux ES4にインストールしました。 インストール後、環境変数(NLS_LANG、ORACLE_HOME等)を 設定し、SQLPLUSを実行しました。 インストールしたOSのユーザ(oracle)でない 他のOSユーザから(user1)からSQLPLUSを実行をしようとすると 実行ができません。この問題は、実行ファイル等に 読み取り、実行権限(rx)ないということまでわかりました。 インストールしたユーザのグループに追加してもSQLPLUSを 使うことはできませんでした。 通常、インストールしたユーザ以外のユーザからSQLPLUS (exp、imp等 $ORACLE_HOME/binにある実行ファイル)を 使うにはどのように設定すればよいのでしょうか??

  • sqlplusについて教えてほしいです

    soralisにオラクルをインストールしたサーバがあります。 コンソールから sqlplus接続 → select文発行 → sqlplusから抜ける といった動作を1命令でできないでしょうか? できるらしいと聞いたのですが、調べてもイマイチ見つかりません。 これを発行した後、戻り値を調べて、 正常にデータベースに接続できたか確認するつもりなのですが・・・ 初心者なので、なるべく詳しく教えてください。 お願いします。

  • sqlplusの操作をシェル上で

    RedhatLinuxのシェルスクリプト上で Oracleのsqlplus操作を行うことは可能でしょうか? その場合、どのように記述すればよいでしょう? やりたい内容の例としては以下になります。 #!/bin/sh su -<oracleユーザー> sqlplus ※※※※ SQL> update ※※※ set ※※※ SQL> exit 上のような内容をcronに登録して自動処理をかけたいと考えています。

  • 【ORACLE】SQLPLUS【HADING変数】

    LinuxOS上(CentOS 5.6)上でOracleの11gR1を使っています。 データベースにアクセスする際にSQLPLUSを使っているのですが、テーブル表示の際にコラムのタイトルが表示されなくなってしまいます。 例: 11:07:07 ORACLE > SHOW HEADING heading ON 11:07:16 ORACLE > SELECT * FROM EXAMPLE; 1||ONE                       ← コラムのタイトルが表示されない 2||TWO 3||THREE ※ORCLE_HOME/sqlplus/admin/login.sqlにてそれぞれTIMEをON, PROMPTを” ORACLE > ”、セパレーターを”||”に変更してあります。 またsqlplus -R 3 (ファイルシステムの変更を禁止するレベル)で入り、パラメーター関連を読み込まない状態では、 SQL> select * from example; COLUMN_01 COLUMN_02 ---------- ---------- 1 ONE 2 TWO 3 THREE SQL> show heading heading ON とちゃんと表示されます。 インターネットをいろいろ調べていてもHEADINGのパラメーターをONにするぐらいしか見つからず、途方にくれております。 実務に致命的な支障はないのですが、「このテーブルなんだったっけな」と確認したい時にわざわざ「DESC」コマンドを打たなくてはなりません。 是非タイトルを表示できるようにできないでしょうか。 おわかりになる方、同じことを経験された方、どうぞよろしくお願い致します。

  • RSHコマンドでのsqlplusの起動

    RSHコマンドを使用し、リモートサーバのsqlplusを操作したいと考えています。 検証環境として、ローカルサーバ(RedHat Linux7.2)、リモートサーバ(RedHat Linux6.2)で検証を行い、うまくいったので本番環境としてローカルサーバ(RedHat Linux7.2)、リモートサーバ(Solaris8)で検証を行ったところうまく動いてくれません。 rsh -l oracle リモートサーバ名 sqlplus 上記のコマンドを打つとsqlplus not foundと帰ってきます。検証環境ではちゃんとOracleのプロンプトが帰って来てたのですが。一応自分ではLinuxとSolarisのRSHの違いかなと思いつつ・・・。かといってOracleのほうの設定も間違っているのかと思い質問させて頂いています。 sqlplus not foundとでてくるのでフルパスで書けば大丈夫なのかと思い rsh -l oracle リモートサーバ名 $ORACLE_HOME/bin/sqlplus と打つと以下のエラーが帰ってきます。 message file sql<lang>.msb not found Error6 initializing SQL*Plus どなたか、同じような経験、解決策などご存知の方がいらっしゃいましたらお知恵をお借りできればと思います。 よろしくお願いします。

  • DOSから起動した際のSQLPLUSウィンドウ表示

    OS:WINDOWS NT4.0 ORACLE Personal 7.3.4 VBのアプリケーションを作成しています。 行う内容は  (1)VBのフォームでボタン押下  (2)DOS(バッチファイル)起動  (3)バッチファイルよりORACLE SQLPLUS起動   (USERのDROP&CREATE実行)  (4)バッチファイルよりORACLE IMPORT実行   (指定ファイルのIMPORT) です。 処理的には問題ないのですが、(3)の実行時にSQL*PLUSのウィンドウが見えてしまいます。 (2)の実行時に「START /MIN ~(SQLPLUSコマンド)」を行っている為か、ORACLE9ⅰですとSQLPLUSの表示はされないのですが、今回対象の7.3.4だと見えてしまいます。 見栄えが悪いところを突っ込まれているので、最小化でも構わないのですが、SQLPLUSの起動オプション等には特に解決できるものは探すことができませんでした。  なにか有効な方法をご教授いただきたいです。 みなさま宜しくお願いします。

  • SQLPLUS USER/PASSログインできない

    sqlplus testuser/passwd@TESTの形式ではログインできますが、sqlplus testuser/passwdだとORA-01034、ORA-27101が発生します。 ORACLE_SIDは正しくセットしていますが、どのように調査すればよいか分かりませんので、教えて下さい。 以下は実行結果です。 USER[2]% sqlplus testuser/passwd@TEST SQL*Plus: Release 11.2.0.1.0 Production on 水 1月 11 22:19:45 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options に接続されました。 SQL> exit Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切 断されました。 USER[3]% setenv ORACLE_SID TEST USER[4]% env | grep ORACLE ORACLE_SID=TEST ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1 ORACLE32_HOME=/home/oracle2/32Bit ORACLE_TERM=sun5 USER[5]% sqlplus testuser/passwd SQL*Plus: Release 11.2.0.1.0 Production on 水 1月 11 22:20:17 2012 Copyright (c) 1982, 2009, Oracle. All rights reserved. ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist SVR4 Error: 2: No such file or directory プロセスID: 0 セッションID: 0、シリアル番号: 0

  • SQLPLUSで接続できない

    新しいWINDOWSマシン(WINDOWS XP)に Oracle・SQL Plusをインストールしましたが、 以下のエラーがでて、接続できません。 > ORA-12154: TNS:could not resolve the connect identifier specified 考えられる原因、解決方法などありましたら、お願いします。 尚、TNSNAMES.ORA 、 SQLNET.ORA は設定済みであり、 SQL Plus の代わりに、Oracle Net Manager を使って、 表示されているツリーから、 ■Oracle Netの構成  の下の ■ローカル  の下の ■サービス・ネーミング   の下に表示されている、該当のサービス名を選んで、 ”サービスのテスト(接続のテスト)”を実行すると、 「接続テストに成功しました。」 という結果になります。 ので、クライアント - サーバ間 のネットワークの通信そのものは、問題ないと思います。 感じとしては、TNSNAMES.ORA の記述内容がSQLPLUSから認識できていない様な気がします。 クライアント、サーバのOS、Oracleのバージョンは以下の通りです。 クライアントOS : WindowsXP SP2 クライアントのOracle製品 : 10.2.0 サーバOS : Solaris8 Oracle : 8.1.7