Oracle 问题解决FAQ

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

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

[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 

export ORACLE_SID=kjzlrtdb

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

保存。

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

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

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

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

# vi /etc/sysctl.conf

# 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数据库。但这种方法仅限于当前的进程,退出该进程在启动数据库就不行了。




转载于:https://my.oschina.net/lionel45/blog/534964

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值