Oracle 问题解决FAQ

1. 解决“ORA-12162: TNS:net service name is incorrectly specified”问题

在切换到oracle用户后,执行sqlplus / as sysdba语句时遇到下面的错误。 sql

[oracle@kjora-1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Nov 24 17:28:03 2015

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

ERROR:
ORA-12162: TNS:net service name is incorrectly specified


Enter user-name:
解决方法:上面才错误表示没有正确的设置SID值。 数据库

修改# vi /home/oracle/.bash_profile  bash

export ORACLE_SID=kjzlrtdb oracle

这里没有设置或者没有设置正确 spa

保存。 进程

2. "ORA-27102: out of memory"问题

执行启动Oracle命令时出现下面的错误 ip

SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device 内存

解决方法:出现这个问题的缘由是系统内核参数设置的共享内存大小比SGA最大值小了,解决方法能够是调大内存参数或者调小memory_max_target和memory_target。 ci

# vi /etc/sysctl.conf get

# add by sxr
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 4194304
kernel.shmmax = 34359738368
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

保存,执行 sysctl -p 生效

3. 启动oracle时遇到了“ ORA-27102: out of memoryLinux-x86_64 Error: 12: Cannot allocate memory”错误,如何解决?

调整sga的相关数值常常致使oracle没法启动,提示“ORA-27102: out of memory”的错误

现象以下: SQL> startup  ORA-27102: out of memory  Linux-x86_64 Error: 12: Cannot allocate memory 解决办法: 第一步,须要修改spfilexxx.ora文件中二进制中“*.lock_sga=FALSE”和“*.pre_page_sga=FALSE”从TRUE改为FALSE才行,使锁定处于关闭状态。这样就能够调整sga_max_size和sga_target的值,把sga相关参数调小或调回原来数值,不然调整的数值不生效。 (1)$ sqlplus / as sysdba SQL> create pfile='/home/oracle/pfile20151209.ora' from spfile; (2)$ vi  /home/oracle/pfile20151209.ora *.lock_sga=FALSE       *.pre_page_sga=FALSE *.pga_aggregate_target=3221225472  #调小点,或还原之前的数值 *.sga_max_size=8589934592        #调小点,或还原之前的数值 *.sga_target=8589934592       #同上   (3)让spfile从pfile20151209.ora文件中读取数值到spfilexxx.ora二进制文件,从而修改spfilexxx.ora的值,启动试试。 # su – oracle $ sqlplus / as sysdba SQL> create spfile from pfile='/home/oracle/pfile20151209.ora'; SQL> startup 第二步,若启动不了,再修改 /etc/sysctl.conf文件中“kernel.shmmax”和“kernel.shmall”的值,把值调大。 第三步,再次启动oracle $ sqlplus / as sysdba SQL> startup 直到可以启动为止。 提示:这种方法是永久可行的,每次启动oracle都没问题。 还有个临时的方法: 是先使用root执行命令ulimit -l unlimited(至关于把“*.lock_sga=FALSE”和“*.pre_page_sga=FALSE”从TRUE改为FALSE),而后进入sqlplus去startup数据库。但这种方法仅限于当前的进程,退出该进程在启动数据库就不行了。