こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

NLS_LENGTH_SEMANTICS変更の影響

既にデータベースをOracle 11gR2にて構築していて、初期化パラメータ「NLS_LENGTH_SEMANTICS」をデフォルトのByteベースからCharベースに変更しようとしています。この手順と影響範囲が知りたいです。

(1) 手順
私の理解では単純にSYSユーザにて以下を実行する。データベースの再起動は不要で有効になる。
SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS='CHAR';
正しいでしょうか?

(2) 影響範囲
SID上に構築しているすべてのスキーマ上のテーブルに適用される、で正しいでしょうか?
また、既存テーブルと新規テーブルという意味では、既存テーブルには影響を与えない、らしいのですが、そうなのでしょうか? 新しくテーブルを作成した場合にのみCharベースになるということでしょうか。その場合、既存テーブルもCharベースに変更するにはどのような手順を踏めばよいのでしょうか?(例)テーブルのエクスポート→テーブルのドロップ→テーブル再作成→データのインポート?など、思いつきですがよい方法があれば教えてください)

以上、宜しくお願いします。

投稿日時 - 2014-05-27 17:34:58

QNo.8613032

困ってます

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

こんにちわ。

> この手順と影響範囲が知りたいです。

http://docs.oracle.com/cd/E16338_01/server.112/b56311/initparams152.htm#CHDFHDJI
上記のマニュアルから判断すると、手順については認識の通りです。
影響範囲については、「Alter Session」 なのでAlter Session 文を実行したセッション
でのみ有効で既存テーブルには影響しません。

> 既存テーブルもCharベースに変更するにはどのような手順を踏めばよいのでしょうか?
Alter Session したセッションからテーブルを再作成しないといけないので、
単純に思いつく方法としては、こんな感じでしょうか?
1) exp 又は expdp でデータを外部に出力
2) Alter Session したセッションからテーブルをDrop&Create
3) imp 又は impdp でデータ投入
4) 索引再作成

参考URL:http://docs.oracle.com/cd/E16338_01/server.112/b56311/initparams152.htm#CHDFHDJI

投稿日時 - 2014-05-28 10:51:50

お礼

ご回答有難うございました。参考になりました。

投稿日時 - 2014-06-04 15:19:42

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問