ubuntu下安装支持utf8中文环境的oracle XE

其实之前记录过安装的过程,见:

但是事后发现,导入utf8编码的oracle数据库备份时出现乱码。究其原因,是:

Western European

The database created using a single-byte Latin1 (WE8MSWIN1252) character set, which is suitable for storing Western European language data

Universal

The database is created using a multibyte (AL32UTF8) character set, which is suitable for global data in any language.

之前安装的是只支持西方字符集的版本。

参考这个文档,是最全面:

http://www.oracle.com/technology/software/products/database/xe/files/install.102/b25144/toc.htm

下面列出安装和配置的步骤。

首先,需要配置apt-get,见在ubuntu server下安装Oracle XE相关部分。

然后,需要确保环境变量中文的UTF支持,可运行:

locale

看到如下就是正确的了:

LANG=zh_CN.UTF-8

如果不是,可修改:

sudo vim /etc/default/locale

改为:

LANG=”zh_CN.UTF-8″

安装oracle xe universal版本:

sudo apt-get install -y oracle-xe-universal

如果安装有问题,需要完全卸载,可:

sudo apt-get remove –purge oracle-xe-universal

如果不能完全卸载,再次安装往往无法生成配置文件,造成无法直接使用。

上述卸载办法如果还不行,可参考上面oracle官方文档中的手工反安装部分(Manually Removing Oracle Database XE)。

这很重要,因为想第一次就在陌生的linux环境下安装好,是很困难的。

安装完毕后,会提示运行配置脚本,可按照提示部分运行:

sudo /etc/init.d/oracle-xe configure

配置端口和管理员的用户密码等。之后,oracle可自动启动,或者执行:

sudo /etc/init.d/oracle-xe start

如果想通过其他计算机通过浏览器管理这个数据库,需要在sqlplus中执行:

EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE)

另外,如果不是供测试使用,而是小规模生产使用,需要增大连接进程数(需要DBA权限):

ALTER SYSTEM SET PROCESSES=200 SCOPE=spfile;

而且,需要注意,oracle xe有关的限制,见上面链接oracle文档的Oracle Database XE Server User Data Limitations部分:

The maximum amount of user data in an Oracle Database XE Server database cannot exceed 4 gigabytes. If the user data grows beyond this limit, then an ORA-12592 error will appear. To use more than 4 gigabytes of user data, upgrade to Oracle Database 10g Standard Edition, Oracle Database 10g Standard Edition One, or Oracle Database 10g Enterprise Edition.

也就是说用户数据不能超过4GB。

客户端的环境变量配置,需要配置:

sudo vim /etc/environment

增加以下内容用于显示中文的oracle提示信息:

NLS_LANG=”SIMPLIFIED CHINESE_CHINA.AL32UTF8″

配置:

sudo vim /etc/profile

增加oracle的环境变量等信息:

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_SID=XE
export PATH=${PATH}:${ORACLE_HOME}/bin

如果出现如下问题:

SQL> startup
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

可在监听器配置文件中增加对SID的描述。监听器文件路径可通过如下命令获得:

lsnrctl status

在我这里的环境是:

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/listener.ora

增加后的文件如下:

# listener.ora Network Configuration File:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /usr/lib/oracle/xe/app/oracle/product/10.2.0/server)
      (PROGRAM = extproc)
    )
   (SID_DESC =
      (GLOBAL_DBNAME = XE)
      (ORACLE_HOME = /usr/lib/oracle/xe/app/oracle/product/10.2.0/server)
      (SID_NAME = XE)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = dev)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

粗体字部分是增加的内容。重启oracle,问题解决。

PDF格式創作    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply