Linux下的Oracle在安装结束后
Linux下的Oracle在安装结束后是处于运行状态的。运行ps –ef或者top –u oracle可以看到以Oracle用户运行的进程。在图形化界面下,运行$/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/sqldeveloper/sqldeveloper.sh可以出现Oracle自带的免费Oracle管理客户端SQL Developer。试着连接刚安装的Oracle,连接成功。
在浏览器里打开:https://localhost.localdomain:1158/em
常见问题及解决方法
1. 11gR2 输出中文显示的“补丁”
(1)利用系统的字体库
#mkdir –p /usr/share/fonts/zh_CN/TrueType
下载zysong.ttf并把它放到/usr/share/fonts/zh_CN/TrueType/下即可(在windows下载到优盘里并解压出来或者直接把windows字库下的.ttf字体拷贝到优盘,再cp /media/disk/zysong.ttf /usr/share/fonts/zh_CN/TrueType),然后在:/usr/share/fonts/zh_CN/TrueType 目录中执行:
#mkfontscale
#mkfontdir
或者
(2) 安装oracle产品(只安装软件时还未安装数据库)
解决安装时中文是"囗囗囗囗囗囗囗囗", 进入/home/oracle/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles /all.jar就是JDK. 在/tmp/新建一个文件夹命名为fallback/找一个zysong.ttf中文字体放入里面去。再用归档管理器打开它进入 /jdk/jre/lib/fonts/(all.jar包的目录)把在桌面建好的fallback文件夹拖放进来,完成后的目录结构应该是/jdk /jre/lib/fonts/fallback/zysong.ttf。
#mkdir /tmp/fallback
#cp /home/oracle/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/all.jar
/tmp/jdk
#
(3) 安装数据库
安装数据库的时候(就是第20步安装产品)又出来囗囗囗囗囗囗囗这是因为oracle产品(软件)已经安装上了, 它不使用oracle安装文件里的JDK了而使用环境变量ORACLE_HOME下的jdk(也就是你配置的 ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; ) /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk这个JDK,但这个jdk下没有/jre/lib /fonts/fallback/zysong.ttf这个文件所以就出来了囗囗囗囗。
①有一种解决办法就在你安装oracle时当它生成/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk这个目录后你 把zysong.ttf字体复制到这个jdk/jre/lib/fonts/fallback/下当它执行到安装数据库的时候应该就是中文了。
注意:一定要在安装数据库之前跟它自己生成环境变量ORACLE_HOME/目录下的jdk之后复制进去。应该就在第20步安装产品时执行复制文件成功后,执行Oracle Database 配置 前这个时间里手动复制zysong.ttf到你环境变量 ORACLE_HOME/jdk下的jre/lib/fonts/fallback/(也就是/usr/share/oracle/oracle11gR2/product /11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback/这个目录里)。
#mkdir /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback
#cp /usr/share/fonts/zh_CN/TrueType/ zysong.ttf /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback/
或者#ln -s /usr/share/fonts/zh_CN/TureType/zysong.ttf /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback
#cd /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback/
#mkfontscale
#mkfontdir
如果你的系统是中文,安装完成之后你还要复制,这样在配置oracle时和使用SQL Developer才能显示中文界面。
②最简单的方法是直接把oracle自带的jdk删掉,将本地的jdk连接过去就OK!
sudo mv /opt/oracle11g/server/jdk /opt/oracle11g/server/jdk.bak
sudo ln -s /usr/local/lib/jdk1.6.0_20 jdk
(4) 解决终端中中文显示乱码问题
检查安装是否正确时SQL>conn / as sysdba 显示的是'???'
在终端菜单“终端”—“设定字符编码”—“简体中文(BGK)”
(5)解决Secure CRT显示乱码问题
选项->会话选项->外观->字符编码->uft-8
(6) 解决在环境sqlplus中使用backspace键出现乱码的问题
使用sqlplus,在回删(backspace)时往往会出现 一串的乱码,出现乱码是由于oracle的sqlplus不使用gnu的readline库造成的。
解决方法有两种:
1.要使用回删键(backspace)时,同时按住ctrl键;
2.设定环境变量 把 stty erase ^H 添加到.bash_profile中。
2. 出现agent nmhs解决办法(仅在Fedora中需要而在RHE中不需要)
主要因为C库的问题,fedora13后就不允许同时使用两个库原文http://download.oracle.com/docs/cd/E...如果忽略agent nmhs问题继续安装,那么em只能使用15分钟左右就再也连不上了。解决办法就是手动指定C库位置。出现agent nmhs问题后找到$ORACLE_HOME/sysman/lib/ins_emagent.mk文件,再文件里找 到$(MK_EMAGENT_NMECTL)字符串,然后在后面加上-lnnz11。和$(MK_EMAGENT_NMECTL)有个空格。然后点重试就 可以解决了
#vi /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
3. EM启动页面里的错误:到实例的代理连接状态失败详细资料ORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID (DBD ERROR:OCIServerAttach) 和
$sqlplus /nolog
SQL>conn / as sysdba
SQL>startup
ORA-00845: MEMORY_TARGET not supported on this system
这两个问题其实是一回事,MEMORY_TARGET是11g才加入的新的内存参数,他是10g的ASMM的扩展,都是由于设置SGA的大小超过了操作系统/dev/shm的大小,如果没有设置size,它的大小是系统RAM的一半。
解决这个问题有三个方法:
(1) 一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,
# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
#tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=1024M 0 0
LABEL=/home /home ext3 defaults 1 2
LABEL=/opt /opt ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
LABEL=SWAP-sda8 swap swap defaults 0 0
…………
# umount /dev/shm
# mount /dev/shm
# df -k /dev/shm
(2) 另一种方法就是调整/dev/shm的大小
# mount -o remount,size=1G /dev/shm //每次启动oracle都要用此命令
(3)调整MEMORY_TARGET的参数
SQL>alter system set memory_target=1024M;//启动oracle后用
安装完成后需要做的操作
1. 使用以下命令可以手动启动Oracle服务
以Root用户运行reboot命令重启Linux,重启完成后,默认情况下Oracle并不像Windows中的Oracle那样注册成服务,随机器一起启动的,所以需要手动敲入命令来启动。
一般情况下就启动数据库和监视器就够了,如果想用Oracle提供的EM来管理Oracle的话还需要启动EM控制台。
$ su – oracle
(1) 启动和停止数据库:
① 启动和停止数据库的最简单方法是从 OEM 控制台启动和停止。
② 要从命令行执行此操作,请在以 oracle 身份登录后使用 SQL*Plus,如下所示:
启动:
$ sqlplus
Enter user-name: / as sysdba
SQL> startup
SQL> exit
停止:
$ sqlplus
Enter user-name: / as sysdba
SQL> shutdown immediate
SQL> exit
③ 以下命令也可以启动和停止数据库(如果数据库在使用就不会停止掉)
$ dbstart
$ dbshut
(2) 启动和停止监听器:
监听器接受客户端的连接请求,并在验证证书后创建数据库连接。要使用 OEM,必须先启动监听器。
$ lsnrctl start
$ lsnrctl stop
这样数据库的TNS也启动了,可以通过网络连接数据库了。
(3) 启动和停止 Oracle 企业管理器数据库控制:
$ emctl start dbconsole
$ emctl stop dbconsole
(4) 启动和关闭iSQL*Plus(在Oracle10g中)
$ isqlplusctl start
$ isqlplusctl stop
(5) 以下是一些软件启动的命今
$netmgr // Net Manager
$netca // Net Configuration Assistant
$dbca // Database Configuration assistant
$dbua // Database Upgrade Assistant
$Locale Builder // lbuilder
配置Oracle为开机自动启动
虽然说Oracle作为服务器不会经常关机,但是偶尔重启一下,每次都要去手动启动Oracle还是太麻烦了,希望它能够像在Windows中一样,每次开机的时候自动启动Oracle,只需要将Oracle配置为Linux的服务就可以了。
有下面两种方法:
(1) 如果需要重启服务器后,希望Oracle服务器也自动正常启动,那么需要修改/etc/oratab中下面一行的标志为”Y”
# vi /etc/oratab
zwm8168://usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1:Y
(2) 建立脚本文件,操作如下:
① 以root用户建立/etc/rc.d/init.d/oracle11g脚本文件,内容如下(环境变量设置根据实际情况进行修改):
#!/bin/bash
#
# chkconfig: 35 95 1
# description: init script to start/stop oracle database 11g, TNS listener, EM
#
#
#
# match these values to your environment:
ORACLE_BASE=/usr/share/oracle/oracle11gR2
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID=zwm8168
ORACLE_UNQNAME=zwm8168
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
LANG=C
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_UNQNAME PATH LD_LIBRARY_PATH LANG
# see how we are called:
case $1 in
start)
su - oracle<<EOO
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;
stop)
su - oracle<<EOO
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
emctl stop dbconsole
EOO
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
② 以root用户执行以下命令
chmod 755 /etc/rc.d/init.d/oracle11g
chkconfig --add oracle11g
③ 重启服务
service oracle11g stop
service oracle11g start
这样在开关机的时候oracle自动启动和停止。
3.添加系统服务
用root用户创建一个叫做/etc/init.d/dbora的文件,包括下面的内容:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 20 80
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
su - $ORA_OWNER -c "emctl start dbconsole"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
su - $ORA_OWNER -c "emctl stop dbconsole"
;;
'restart')
$0 stop
$0 start
;;
esac
修改权限为750
chmod 750 /etc/init.d/dbora
设置服务自动启动
chkconfig --level 345 dbora on
如果你遇上:cannot restore segment prot after reloc: Permission denied, 应该是SELinux的问题,可以考虑把它关闭。
4. 将专用服务器模式改为共享服务器模式。
第一步:启动Oracle服务和监听程序
$ sqlplus /nolog // sqlplus sys/yourpassword as sysdba
SQL> conn /as sysdba
SQL> startup
SQL> exit
$ lsnrctl start
$ emctl start dbconsole
第二步:由SPFILE生成PFILE
SQL> create pfile from spfile;
第三步,编辑生成的PFILE:initzwm8168.ora
$ vi /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/dbs/init zwm8168.ora
# 删除以下行
*.dispatchers='(PROTOCOL=TCP) (SERVICE=zwm8168XDB)'
# 加入以下行
*.dispatchers='(PROTOCOL=TCP)'
*.shared_servers=4
*.max_shared_servers=20
第四步:重新启动数据库
SQL> shutdown immediate
SQL> startup pfile=initzwm8168.ora
第五步:生成新的SPFILE文件
SQL> create spfile from pfile;
第六步:编辑/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/network/admin/tnsnames.ora文件
(SERVER = DEDICATED)
# 将以上行改为
(SERVER = SHARED)
第七步:重启数据库、LISTENER和OEM
# 关闭数据库、LISTENER和OEM
SQL> shutdown immediate
$ lnsrctl stop
$ emctl stop dbconsole
# 启动数据库、LISTENER和OEM
SQL> startup
$ lsnrctl start
$ emctl start dbconsole
第八步:通过浏览器访问OEM
https://localhost.localdomain:1158/em
5. 卸载Oracle
LINUX下完全卸载Oracle数据库的步骤如下:
# rm -rf /usr/share/oracle/oracle11gR2/*
# rm -rf /etc/oraInst.loc /etc/oratab
# rm –rf /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv