因为工作需要,我在Solaris上创建了zone,往里面安装了oracle。安装过程都还好好的,不过安装完成后启动数据库给报错了。
报错信息是:Message 1070 not found。根据报错信息中的其它内容来看,是listener启动失败了。而我启动数据库时使用的是先前自己写的shell,shell的第一行正是lsnrctl start。
这回我先在控制台上输入lsnrctl,这回报错信息变为“Message 850 not found;”,在lsnrctlshell中,输入start,报错信息“Message 1070 not found”果然又出现了。
从网上找到一些出现类似错误的文章上来看,是我的oracle环境变量配置不正确,跑去oracle用户的.profile看了看,ORACLE_HOME环境变量是设置了的。怎么会找不到呢?
仔细看时候,发现ORACLE_HOME这个环境变量没有export出来。根据shell的语法,如果一个变量没有export出来,这个变量的作用域就只在它所在的这个shell文件中和它调用的shell中,而出了所在的shell后,这个变量就不起效了。所以对于调用.profile的bash(用户初始登录shell)来说,用户登录完成后,.profile文件中没有export出来的变量就不起效了。
因此,启动数据库监听器时候,自然会报错了。
补充下:
$ORACLE_HOME/bin/netca 能检查oracle相关环境变量是否设置正确。
netca是oracle net configuration assistance的简称,主要作用是配置监听程序、命名方法配置、本地net服务配置、目录使用配置。