Oracle安裝過程對資料庫級語言設定的影響

yangtingkun發表於2009-02-24

今天一個朋友問到這個問題,發現不同的建庫方式對資料庫級引數的影響是不同的。

 

 

語言的設定分為3個級別:資料庫級、例項級和會話級。

資料庫級是在資料庫建立時確定的,例項級根據資料庫啟動時初始化引數來確定,而會話級在會話建立的時候確定,且在會話中可以隨時改變。

對於使用DBCA來建立的資料庫,根據建庫時選項的不同,得到的資料庫級設定也是不相同的。

如果在建立資料庫的時候選擇CUSTOM,即定製資料庫的方式,且在初始化引數的設定頁面,字符集子頁面中選擇ZHS16GBK字符集,國家字符集選擇AL16UTF16國家字符集,預設語言選擇簡體中文,預設日期格式選擇中國,那麼安裝之後得到的資料庫,例項級和資料庫級設定分別為:

SQL> SHOW PARAMETER NLS

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_calendar                         string
nls_comp                             string
nls_currency                         string
nls_date_format                      string
nls_date_language                    string
nls_dual_currency                    string
nls_iso_currency                     string
nls_language                         string      SIMPLIFIED CHINESE
nls_length_semantics                 string      BYTE
nls_nchar_conv_excp                  string      FALSE
nls_numeric_characters               string
nls_sort                             string
nls_territory                        string      CHINA
nls_time_format                      string
nls_time_tz_format                   string
nls_timestamp_format                 string
nls_timestamp_tz_format              string
SQL> SELECT NAME, VALUE$
  2  FROM PROPS$
  3  WHERE NAME LIKE 'NLS%';

NAME                           VALUE$
------------------------------ --------------------------------------------------
NLS_LANGUAGE                   SIMPLIFIED CHINESE
NLS_TERRITORY                  CHINA
NLS_CURRENCY                   ?
NLS_ISO_CURRENCY               CHINA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               ZHS16GBK
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              SIMPLIFIED CHINESE
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              ?
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_RDBMS_VERSION              10.2.0.3.0

已選擇20行。

而如果在建立資料庫的時候選擇GENERATE,即一般資料庫用途,其他選擇不變,即初始化引數的設定頁面,字符集子頁面中選擇ZHS16GBK字符集,國家字符集選擇AL16UTF16國家字符集,預設語言選擇簡體中文,預設日期格式選擇中國,那麼安裝之後得到的資料庫,例項級和資料庫級設定分別為:

SQL> SHOW PARAMETER NLS

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_calendar                         string
nls_comp                             string
nls_currency                         string
nls_date_format                      string
nls_date_language                    string
nls_dual_currency                    string
nls_iso_currency                     string
nls_language                         string      SIMPLIFIED CHINESE
nls_length_semantics                 string      BYTE
nls_nchar_conv_excp                  string      FALSE
nls_numeric_characters               string
nls_sort                             string
nls_territory                        string      CHINA
nls_time_format                      string
nls_time_tz_format                   string
nls_timestamp_format                 string
nls_timestamp_tz_format              string
SQL> SELECT NAME, VALUE$
  2  FROM PROPS$
  3  WHERE NAME LIKE 'NLS%';

NAME                           VALUE$
------------------------------ -------------------------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               ZHS16GBK
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY              $
NLS_COMP                       BINARY
NLS_LENGTH_SEMANTICS           BYTE
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_RDBMS_VERSION              10.2.0.3.0

已選擇20行。

可以看到,兩種方法的初始化引數是一致的,也就是例項級的設定是一致的,但是資料庫級設定是不同的。

這時由於GENERATE方式,Oracle採用了已有的資料檔案複製的方式,透過這種方式實際上資料庫是一個已經建好的資料庫,而資料庫一旦建立成功,資料庫級的引數設定也就確定了,在隨後的安裝過程中,Oracle只是修改了例項級的設定,而不會修改已經存在的資料庫級的設定。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-557635/,如需轉載,請註明出處,否則將追究法律責任。

相關文章