linux系统sql语句报错_linux oracle sqlplus连接不上或者执行sql语句报错问题解决

linux默认安装完Oracle11g之后切换到Oracle用户,sqlplus / as sysdba命令,报错:

ERROR:

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

Enter user-name:

在网上寻找原因,发现是:

ORACLE_SID没有指定!

确认系统当前的ORACLE_HOME和ORACLE_SID环境变量

[oracle@asdlabdb01 ~]$ echo $ORACLE_HOME

/oracle/app/oracle/product/10.2.0/db_1

[oracle@asdlabdb01 ~]$ echo $ORACLE_SID

[oracle@asdlabdb01 ~]$

此时修改root用户的/etc/profile文件,将ORACLE_SID设为orcl。

此时sqlplus / as sysdba可以进去了。

但是输入一个select语句报错:

ORA-01034: ORACLE not available

Process ID: 0

Session ID: 0 Serial number: 0

上网查可能是因为没有启动oracle实例,sqlplus连接进去之后输入命令:

startup

报错:

could not open parameter file "..../product/11.2/db_1/dbs/initorcl.ora

网上查这个问题是ORACLE_SID参数有问题,有三个地方的SID可以查看一下是否一致:

1、$ORACLE_BASE/admin/SID_NAME/pfile文件夹下的init文件中的SID;

2、/etc/oratab中的最后一行第一个“:”前,如“oracl:/u01/app/oracle/product/11.2.0/dbhome_1:N”中的“oracl”;

3、~/.bash_profile中的SID;

由于系统中没有第一个和第二个目录。只更改了第三个文件中的sid=orcl(原来的sid是空的)。

之后再登入sqlplus startup,还是报这个错。

网上说:

将$ORACLE_BASE/admin /数据库名称/pfile目录下的init.ora.012009233838形式的文件copy到$ORACLE_HOME/dbs目录下 initoracle.ora即可。(注:initoracle.ora中的oracle为你的实例名 ORACLE_SID)

但是找了一下oracle的安装目录中并没有这个目录。

于是使用find命令查了一下:

find /oracle/ -name init*.ora

找到了/oracle/app/product/11.2.0/dbhome_1/dbs/init.ora这个文件。

猜测可能是这个文件名字不对,于是将init.ora复制一份命名为initorcl.ora。

再次启动,报错:

SQL> startup

ORA-48108: invalid value given for the diagnostic_dest init.ora parameter

ORA-48140: the specified ADR Base directory does not exist [/u01/app/oracle/product/11.2.0/db_11g/dbs/]

ORA-48187: specified directory does not exist

Linux-x86_64 Error: 2: No such file or directory

Additional information: 1

这是因为我直接复制的是oracle 11g的init.ora模板,如果没有修改这个值的话,就会报以上错误。

解决办法是将替换为真正的ORACLE_BASE路径。

我这里是/oracle/app

重新启动,报No such file or directory,只需要mkdir建立相应的目录即可。

建立目录后就可以startup了。

启动成功后再执行select语句就不会报错了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值