今天头让我装Oracle SQL Developer查询服务器里面相关的数据库,结果姐连了半天没连上,记录一下挣扎的过程。
At first,配置JDK环境,程序启动,出现警告,类似于支持7以上的JDK版本,姐电脑里面装的是1.6的版本,但是不影响使用,于是姐就华丽丽地忽略了。。。
输入服务器IP地址和连接用户名密码,连不上,错误: The Network Adapter could not establish the connection,姐果断去问谷歌和度娘,告知是服务器那边没配好,有木有搞错,服务器那边是姐能动的吗?于是姐就去看了看头给我的维护手册,原来我把端口号写错了,SID是毛线?姐初略觉得应该是数据库名,于是姐就把数据库名填在这里,然后点击测试,又出现错误:
Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
问题是这个错误给的还不全,姐去网上找了才知道是这个,但是具体情况是不是这个,还有待商榷。
难道是因为姐的JDK版本不行,姐又费劲重新装了1.7的版本(C盘只有9个G的破电脑真心伤不起),重装了之后还是不行,难道是SID给错了?于是跑去问头,果然是SID给错了,改了SID之后果然连上了~
去网上查了一下SID到底是啥:System Identifier,数据库的唯一标识符,建立数据库时系统自动赋予的初始ID。用于标识同一台计算机上的同一个oracle数据库的不同实例,应该类似于Java中同一个Class的不同实例,跟数据库实例名相同,用于与操作系统交互,获得内存和为这块区域服务的一系列后台进程,这一系列的后台进程都以该sid作为结尾。按照我这里的情况,实例名并不一定就等于数据库名。
在Oracle系统中,ORACLE_SID以环境变量的形式出现,在特定版本的Oracle软件安装(也就是ORACLE_HOME)下,当Oracle实例启动时,操作系统上fork的进程必须通过这个SID将实例与其他实例区分开来,这就是SID的作用。
哦了,大概就了解这么多了~