最后来解决oracle中文字符集的问题。不出意外的话,启动oracle会发现所有的中文都是“?”,要么就是乱码,这其实是服务器端字符集和客户端字符集不一致造成的。
解决方法为:DBA身份进入sqlplus,做查询
SQL>select userenv(‘language’) from dual;
将查询结果复制,在/etc/bash.bashrc文件中再加一行:export NLS_LANG=”查询结果”,重新登录问题解决。例如:我的查询结果为SIMPLIFIED CHINESE_CHINA.AL32UTF8,则新加一行为export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"。
但是有时候这个方法不一定奏效,你可以将
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
分别写到两个文件中尝试一下,但是两个文件写的一定要一致。
5. 如果有问题可按下列过程处理:
5.1
问题:调用makefile '../sqlplus/lib/ins_sqlplus.mk' 的目标'install' 时出错。请参阅'/home/oracle/oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解详细信息。
解决办法:$ORACLE_HOME/sqlplus/lib/env_sqlplus.mk添加一行:EXPDLIBS=-lclntsh ,然后点击“重试”按钮, ok.
其实安装 gcc-4.4 以后没有这个问题。
5.2
问题:调用makefile '../sysman/lib/ins_sysman.mk' 的目标'agent nmo nmb' 时出错。请参阅'.. /oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解详细信息。
分析:后面遇到的错误其实本质上是一个问题,主要是gcc的版本高了,oracle10g的gcc是3.4左右的版本,但是ubuntu的开发速度早就用了4.0以上版本,而且你还无法apt安装低版本
解决办法:卸载gcc-4.6,安装gcc-4.4 版本
apt-get remove gcc-4.6
apt-get install gcc-4.4
5.3
调用makefile '../network/lib/ins_net_server.mk' 的目标'install' 时出错。请参阅'.. /oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解详细信息。
分析:我在网上找到了一篇类似的文档,参见(点击打开链接),但是我手工编译还是有问题,而且在oracle10g中并不是他所提到的-lons参数问题。
还是gcc版本问题,我曾尝试过安装低版本的gcc,但是一开始编译就报错,所以放弃了,如果有人能成功降低版本环境,相信一定能解决所有错误问题,这也是为什么ubuntu 8能很自然成功安装的一个解释。
方法:目前我还没有方法,按照其.mk文件的说明,这个东西好像是数据库链接断裂时候重新链接用的
解决办法:卸载gcc-4.6,安装gcc-4.4 版本
在/usr/bin 下做了 /usr/bin/gcc-4.4 的软链接
cd /usr/bin
ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
5.4
调用makefile '../rdbms/lib/ins_rdbms.mk' 的目标'all_no_orcl ihsodbc' 时出错。请参阅'../oraInventory/logs/installActions2011-12-06_11-07-36-AM.log' 以了解详细信息。
分析:我们看一下log文件
信息: Generating BASE ORASDK library...
信息: Creating /opt/ora10/lib/liborasdkbase.so.10.2
信息: gcc: 错误:/lib/libgcc_s.so.1:没有那个文件或目录
gcc: 错误:/usr/lib/libstdc++.so.5:没有那个文件或目录
我们看到终于是那个非常多的错误了,其实还是gcc的问题,重新下载了libgcc_s.so.1,并且重新做了stdc++5的链接,但是问题还是更多,因为只做软链接和下载一个动态库是没法解决所有问题的。
解决办法:安装compat-libstdc++-33_3.2.3-48.3_i386.deb,重试。。
在一个libgcc_s.so.1软链接
cd /lib
ln -s /lib/i386-linux-gnu/libgcc_s.so.1 libgcc.s.so.1
6. 开机启动
6.1 root 下面修改:vi /etc/oratab
orc1:/opt/oracle/product/10.2.0/db_1:Y
将N该为Y
6.2 oracle 下面修改:
cd $ORACLE_HOME/bin
vi dbstart
找到 ORACLE_HOME_LISTNER 这行, 修改成:
ORACLE_HOME_LISTNER=/opt/oracle/product/10.2.0/db_1
或者直接修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
测试运行 dbshut, dbstart 看能否启动oracle 服务及listener服务
ps -efw | grep ora_
lsnrctl status
ps -efw | grep LISTEN | grep -v grep
6.3 root 下创建文件:
vi /etc/rc.d/init.d/oracle10
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
# /etc/init.d/oracle10
export ORACLE_SID=ym
# export ORACLE_HOME_LISTNER=/data/files/oracle/10g/bin
#oracle 安装目录
export ORACLE_HOME=/data/files/oracle/10g
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
su oracle -c $ORACLE_HOME/bin/dbstart #启动服务
su oracle -c $ORACLE_HOME/bin/lsnrctl start #启动监听
touch /var/lock/oracle
echo "OK"
;;
stop)
echo -n "Shutdown Oracle: "
su oracle -c $ORACLE_HOME/bin/dbshut #启关闭服务
su oracle -c $ORACLE_HOME/bin/lsnrctl stop #关闭监听
rm -f /var/lock/oracle
echo "OK"
;;
*)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0
然后
chmod 775 oracle10
chkconfig --add oracle10
chkconfig --list oracle10