【不错】浅析Oracle三层全球化支持(NLS)
作为一个成熟的商业 数据库 软件 , Oracle 对全球化( Global Support )有着全面的支持和解决方案。 Oracle 在国际化支持方面主要体现在几个方面: ü 全球化字符集支持;目前, Oracle 支持所有主流的字符集样式。通过 NLS_CHARACTER 和 NLS_NCHAR_CHARACT
作为一个成熟的商业数据库软件,Oracle对全球化(Global Support)有着全面的支持和解决方案。Oracle在国际化支持方面主要体现在几个方面:
ü
ü
ü
ü
NLS是一套覆盖面广、内容庞杂的知识体系。笔者计划在接下来用一个系列来分析这个体系。本次,我们只是给NLS一个简单的体系介绍:Oracle的三层NLS体系关系和优先级配置。
1、环境介绍
笔者选择Oracle 11gR2进行试验。
SQL> select * from v$version;
BANNER
---------------------------------------
Oracle
PL/SQL Release 11.2.0.1.0 - Production
CORE
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 – Production
服务器是Red Hat 5.3 32bit,安装时选择的是英文,美语。
[oracle@bspdev ~]$ uname -a
Linux bspdev.localdomain 2.6.18-308.el5 #1 SMP Tue Feb 21 20:05:41EST 2012 i686 i686 i386 GNU/Linux
查看Linux系统支持语言和时区:
[oracle@bspdev ~]$ cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
[oracle@bspdev sysconfig]$ pwd
/etc/sysconfig
[oracle@bspdev sysconfig]$ cat clock
# The ZONE
# The timezone of the system is defined by the contents of/etc/localtime.
ZONE="Asia/Shanghai"
UTC=true
ARC=false
客户端使用的是中文的Windows
NLS_LANG参数告知本地所在地中国、中文语言和ZHS16GBK字符集。
2、三层NLS体系
Oracle的Global Support复杂的原因之一,就是Oracle的三层NLS体系。任何一个会话session在连接入数据库之后,都会面对三层NLS参数体系,分别为:Database、Instance和Session。
ü
ü
ü
下面我们分别来介绍几个层面参数中的重要内容。
3、Database Level NLS Parameter
Database level参数是三层体系中最底层,这个层面的参数取值和Oracle数据库创建时的配置选项密切相关。我们在联入数据库时,可以通过几个视图来查看这个“根本性”的参数内容。
SQL> select * from nls_database_parameters;
PARAMETER
---------------------------------------------------------------------
NLS_LANGUAGE
NLS_TERRITORY
NLS_CURRENCY
NLS_ISO_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_CHARACTERSET
NLS_CALENDAR
NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_SORT
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP
NLS_LENGTH_SEMANTICS
NLS_NCHAR_CONV_EXCP
NLS_NCHAR_CHARACTERSET
NLS_RDBMS_VERSION
20 rows selected
nls_xxx_parameters系列视图非常重要,特别是在我们配置NLS参数的过程中。我们可以通过nls_database_parameters查看到Database的NLS参数。
NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET用于表示Oracle在保存varchar2/char和nvarchar2/nchar字段时的保存类型。从Oracle官方推荐的角度,我们设置AL32UTF8字符集作为数据库字符集,基本上就可以应对常见的字符文字类型了。
在安装程序OUI运行是,AL32UTF8往往不是默认选项。Oracle OUI程序会根据所在服务器操作系统的配置内容,为我们选择出一个字符集。
在从操作系统选择出字符集合的过程中,NLS_LANG(LANG)环境变量起到很重要的作用。NLS_LANG是我们安装Oracle过程中,确定NLS参数的一个重要环境变量。
根据Oracle的要求,NLS_LANG中包括了Oracle所在地域Territory、语言Language和字符集CharacterSet三部分内容。
NLS_LANG=_.
如果我们需要在配置Oracle前就确定这些参数内容,可以预先定义环境变量NLS_LANG。Unix/Linux环境下,可以配置在Oracle用户的.bash_profile中。而Windows环境下,这个参数要配置在注册表中。
此外,NLS_DATA_LANGUAGE用来表示Oracle在显示日期类型的文字内容时,使用什么语言。
Database Level NLS parameter是非常基本的,起作用的范围主要数据库内部。另一方面,Database Level NLS Parameter是作为Instance Level配置的默认基础值。在安装数据库后,我们基本不能、也不会对database level的NLS参数进行修改。我们的“手脚”只能在Instance和Session level进行。
3、Instance level NLS Parameter
Instance Level NLS parameter,就是我们可以控制的领域了。Instance参数主要来自于参数文件SPFILE/PFILE。我们可以通过nls_instance_parameters来查看这个层面的参数配置。
SQL> select * from nls_instance_parameters;
PARAMETER
------------------------------ -------------------------
NLS_LANGUAGE
NLS_TERRITORY
NLS_SORT
NLS_DATE_LANGUAGE
NLS_DATE_FORMAT
NLS_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY
NLS_CALENDAR
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP
NLS_LENGTH_SEMANTICS
NLS_NCHAR_CONV_EXCP
17 rows selected
相对于database level,Instance level的参数数量是很少的。通常我们不会在参数文件层面进行NLS参数配置,保持Database Level的默认配置就可以了。
这样的原因是Instance Level配置是针对所有连接而言的。而国际化的目的就是在于不同连接用户,看到Local化的结果。无论Instance Level进行何种的配置,最终很有可能都是被Session level的所覆盖。
Database level之所以会有完备的NLS参数,很大层面上是提供了一个基础参数集合和存储标准。NLS的重头在session层面。
4、Session Level NLS Parameter
Session Level的NLS参数是和用户最直接交互的部分。我们可以通过nls_session_parameters视图查看到这个内容。
SQL> select * from nls_session_parameters;
PARAMETER
------------------------------ -------------------------
NLS_LANGUAGE
NLS_TERRITORY
NLS_CURRENCY
NLS_ISO_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_CALENDAR
NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_SORT
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP
NLS_LENGTH_SEMANTICS
NLS_NCHAR_CONV_EXCP
17 rows selected
session level的参数是影响最终我们看到NLS结果的控制因素。Session level的NLS参数来自客户端配置。对Windows而言,就是我们注册表中关于NLS_LANG等一系列的环境变量。对Unix/Linux而言,就是我们配置在.bash_profile文件中定义的相应内容。
注意,NLS_LANG本身包括的内容很多。NLS_LANG包括了客户端地域、语言和字符集信息。地域间接影响到时区,语言会影响到显示语言。而字符集更是影响数据从服务器传递过来客户端后,进行的转换策略。
在三层NLS体系下,Session Level的Parameter起到最后的决定作用。如果Session level没有配置,Oracle会选择Instance乃至Database的配置。Session Level的配置会覆盖Instance level的取值。
我们可以根据自己的情况,动态的进行调节session level nls parameter。如果我们只是希望NLS暂时性修改,可以选择alter session set语句进行参数切换。
SQL> select sysdate from dual;
SYSDATE
--------------
17-9月 -12
SQL> alter session set nls_date_format='yyyy-mm-ddhh24:mi:ss';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
-------------------
2012-09-17 06:23:58
如果希望长期的修改,可以考虑在环境变量的层面上修改参数。在windows上,可以添加注册表参数。
SQL> select * from nls_session_parameters whereparameter='NLS_DATE_FORMAT';
PARAMETER
------------------------------ -------------------------
NLS_DATE_FORMAT
SQL> conn sys/oracle@wilson as sysdba
已连接。
SQL> select sysdate from dual;
SYSDATE
-------------------
2012-09-17 06:29:02
5、结论
NLS参数对我们开发和使用Oracle,至关重要!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Oracle 打不開的解決辦法包括:1. 啟動數據庫服務;2. 啟動監聽器;3. 檢查端口衝突;4. 正確設置環境變量;5. 確保防火牆或防病毒軟件未阻止連接;6. 檢查服務器是否已關閉;7. 使用 RMAN 恢復損壞的文件;8. 檢查 TNS 服務名稱是否正確;9. 檢查網絡連接;10. 重新安裝 Oracle 軟件。

解決 Oracle 游標關閉問題的方法包括:使用 CLOSE 語句顯式關閉游標。在 FOR UPDATE 子句中聲明游標,使其在作用域結束後自動關閉。在 USING 子句中聲明游標,使其在關聯的 PL/SQL 變量關閉時自動關閉。使用異常處理確保在任何異常情況下關閉游標。使用連接池自動關閉游標。禁用自動提交,延遲游標關閉。

Oracle 中,FOR LOOP 循環可動態創建游標, 步驟為:1. 定義游標類型;2. 創建循環;3. 動態創建游標;4. 執行游標;5. 關閉游標。示例:可循環創建游標,顯示前 10 名員工姓名和工資。

可以通過 EXP 實用程序導出 Oracle 視圖:登錄 Oracle 數據庫。啟動 EXP 實用程序,指定視圖名稱和導出目錄。輸入導出參數,包括目標模式、文件格式和表空間。開始導出。使用 impdp 實用程序驗證導出。

Oracle 日誌文件寫滿時,可採用以下解決方案:1)清理舊日誌文件;2)增加日誌文件大小;3)增加日誌文件組;4)設置自動日誌管理;5)重新初始化數據庫。在實施任何解決方案前,建議備份數據庫以防數據丟失。

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

在CentOS系統上搭建Hadoop分佈式文件系統(HDFS)需要多個步驟,本文提供一個簡要的配置指南。一、前期準備安裝JDK:在所有節點上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容。可從Oracle官網下載安裝包。環境變量配置:編輯/etc/profile文件,設置Java和Hadoop的環境變量,使系統能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個節點上使用ssh-keygen命令

要停止 Oracle 數據庫,請執行以下步驟:1. 連接到數據庫;2. 優雅關機數據庫(shutdown immediate);3. 完全關機數據庫(shutdown abort)。
