先注明两个错误的描述:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
ORA-12547: TNS: 丢失联系
英文描述就不转了。
解决过程如下:
1.先切换到oracle用户下,尝试用sqlplus连接:
suse172:~>su - oracle
oracle@suse172:~>sqlplu /nolog
oracle@suse172:~>connect sys as sysdba
可是输入密码报错:ORA-12547: TNS: 丢失联系
2.会不会是监听器的问题,因为用的是vnc连接,所以要设置一下DISPLAY变量,
又vnc连接的是suse172:2,DISPLAY要有所改变,操作如下:
suse172:~>export DISPLAY=:2.0
suse172:~>xhost +
suse172:~>su - oracle
oracle@suse172:~>export DISPLAY=:2.0
oracle@suse172:~>netca
oracle@suse172:~>lsnrctl status
重新配置一下监听器Listener,还是不行
3.那用企业管理器看看?先打开企业管理器:
oracle@suse172:~>emctl start dbconsole
启动失败,注意到出现了不少这样的提示:bash: /dev/null: Permission denied
4.那先查看下/dev/null的属性,
suse172:~>ls -l /dev/null
crw-r----- 1 root root 1, 3 Feb 24 2009 /dev/null
普通用户没了写的权限,重新创建:
suse172:~>rm /dev/null
suse172:~>mknod -m 0666 /dev/null c 1 3
5.重新用sqlplus连接,操作如1,发现可以连上了,启动数据库,操作如下:
SQL>startup
启动正常,再用PL/SQL Developer连接,也可以了。
后记:
1.一直对oracle的管理都只停留在表面几个命令上,需要加深。
2.另外查了下/dev/null的用途,转载如下:
把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.如:
禁止标准输出.
1 cat $filename >/dev/null
2 # 文件内容丢失,而不会输出到标准输出.
禁止标准错误
rm $badname 2>/dev/null
这样标准错误就被丢掉了
3.发现一个很简单好用的端口扫描工具:ScanPort,用来判断端口1521是否开放。