Oracle 问题解决FAQ
Oracle 问题解决FAQ
LionelShen 发表于2年前
Oracle 问题解决FAQ
  • 发表于 2年前
  • 阅读 55
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

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




共有 人打赏支持
粉丝 67
博文 116
码字总数 87306
×
LionelShen
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: