ORACLE TECHNOLOGY NETWORK
 
 
   

Oracle Technology Network (OTN) Japan - 掲示板 » データベース(R/O) » Oracle Database 10gの部屋(読取専用)

スレッド: NLS_LENGTH_SEMANTICSパラメータ変更に関して

このスレッドに返信する このスレッドに返信する スレッド一覧へ スレッド一覧へ

Permlink 返信数: 4 - ページ数: 1 - 最新投稿 : 2006/03/08 18:38 最新投稿者: もぐもぐ - スレッド表示形式:
hamaken1975

投稿数: 1
登録日時: 01/10/03


NLS_LENGTH_SEMANTICSパラメータ変更に関して
投稿時刻: 2006/03/08 16:49
  このスレッドに返信します… 返信

現在、構築したDBのNLS_LENGTH_SEMANTICSの設定が「BYTE」になっており、
これを「CHAR」に変更しようと考えているのですが、パラメータ変更の仕方
がよく分かりません。

どのように変更すればよろしいでしょうか?
また、変更した場合はDBの再構築の必要がありますでしょうか?

以上、どなたかご教授頂けますよう宜しくお願いいたします。

DB環境は下記のとおりです。
Oracle10g(R10.1.0.2)
OS:Linux ES2.1

NLSパラメーターは下記のようになっています。
NLS_CHARACTERSET
AL32UTF8

NLS_LENGTH_SEMANTICS
BYTE

NLS_NCHAR_CHARACTERSET
AL16UTF16

ctteml

投稿数: 1,426
登録日時: 02/05/09


RE:NLS_LENGTH_SEMANTICSパラメータ変更に関して
投稿時刻: 2006/03/08 17:09   hamaken1975 さんへの返信です。 hamaken1975 さんへの返信です。
  このスレッドに返信します… 返信

>現在、構築したDBのNLS_LENGTH_SEMANTICSの設定が「BYTE」になっており、
>これを「CHAR」に変更しようと考えているのですが、パラメータ変更の仕方
>がよく分かりません。
>
>どのように変更すればよろしいでしょうか?
>また、変更した場合はDBの再構築の必要がありますでしょうか?

他の静的パラメータと変更方法は同じなはずです。
10gなら恐らくspfileをお使いだと思いますので、SYSユーザなどでDBに接続
し、
alter system set NLS_LENGTH_SEMANTICS = 'CHAR' scope = spfile;
でOKです。DBの再構築は不要です。

ctteml

投稿数: 1,426
登録日時: 02/05/09


RE[1]:NLS_LENGTH_SEMANTICSパラメータ変更に関して
投稿時刻: 2006/03/08 17:18   ctteml さんへの返信です。 ctteml さんへの返信です。
  このスレッドに返信します… 返信

>他の静的パラメータと変更方法は同じなはずです。

すみません、このパラメータは動的パラメータであるようです。

>10gなら恐らくspfileをお使いだと思いますので、SYSユーザなどでDBに接続
>し、
>alter system set NLS_LENGTH_SEMANTICS = 'CHAR' scope = spfile;
>でOKです。

したがって、最後のscope=spfileという部分はなくてもOKです。これをつけ
た場合は、DBの再起動が必要です。また、ここではSQL*Plusでの変更方法を書
きましたが、Enterprise Managerでも変更可能です。

あと、

>DBの再構築は不要です。

と書きましたが、マニュアルによると既存の列にはこのパラメータは影響しな
いようです。例えばすでにVARCHAR2(4000)で作られた列があった場合には、パ
ラメータを変更してもこの列に4000文字の日本語文字列を格納することはでき
ないということです。ですので、既に存在するテーブルの列のデータ長の意味
を変更したいのであれば、表の再作成などが必要になるようです。
失礼しました。


koba_mac

投稿数: 1,273
登録日時: 00/05/21


RE:NLS_LENGTH_SEMANTICSパラメータ変更に関して
投稿時刻: 2006/03/08 17:19   hamaken1975 さんへの返信です。 hamaken1975 さんへの返信です。
  このスレッドに返信します… 返信

DBの再構築の必要はありません。
CHAR単位への変更は、ALTER SESSION文等で変更可能です。
なお、CREATE TABLE文でBYTE単位にしたい場合は、明示的に
指定する必要があります。

SQL> ALTER SESSION SET NLS_LENGTH_SEMANTICS='CHAR';

セッションが変更されました。

SQL> CREATE TABLE HOGE_TABLE(
2 NAME1 VARCHAR2(10),
3 NAME2 VARCHAR2(10 BYTE)
4 );

表が作成されました。

もぐもぐ

投稿数: 1,013
登録日時: 97/02/25


RE:NLS_LENGTH_SEMANTICSパラメータ変更に関して
投稿時刻: 2006/03/08 18:38   hamaken1975 さんへの返信です。 hamaken1975 さんへの返信です。
  このスレッドに返信します… 返信

余談ですが、列のセマンティクスが、バイトか、キャラクタかは
ALL_TAB_COLUMNS等のCHAR_USED列で確認できます。

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_v8/ser
ver.102/B19228-01/statviews_2.html#115679







ウェブサイトのご使用条件 | 個人情報保護基本方針/情報保護基本方針