首页 > Linux操作系统 > Linux操作系统 > PLSQL连接ORACLE数据库
刚入门的菜鸟伤不起,以前在公司用 PL/SQL 连 接数据库服务器,配置一下客户端网络管理就行了,服务器端根本就不用也轮不到我来搞,所以只要客户端配置正确,一分钟就可以连接到数据库服务器并对其进行 权限范围内的操作,但是在自己的电脑环境里面,数据库服务器端和客户端都是自己搭建的,所以遇到的问题很多,当然在高手看来全部都是菜鸟级问题。但是我一 个刚刚学习 oracle 的菜鸟当然达不到一览众山小的境界,所以有必要把今天遇到的问题做一个总结,当然解决过程中经常百度,经常用百度是为了以后遇到同样问题抛开百度。
1 、连接数据库时,报告监听器不存在。
刚开始很郁闷,我客户端明明已经配置了监听程序了。结果百度发现,服务器也有个监听器,但是并没有启动。这才去启动服务器的监听器,当然监听器的工作原理现在先抛开不深究。启动命令:
[oracle @ centos ~ ]$ lsnrctl start
2 、配置服务命名概念不清晰
在配置服务命名的是时候,可能很多初学者想我这样不知道服务名是什么东西。下面看一下 oracle 服务器监听器的一段脚本就明白了。
ORCL =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.242.120)(PORT= 1521))
)
)
该文件在 $ORACLE_HOME/network/admin 下面的监听器配置文件 listener.ora 里面。其中 ORCL 就是传说中的服务名。
3 、配置完服务命名之后,测试连接数据失败
这里默认是用 scott 用户连接 oracle 数据库,默认密码为 tiger 。但是客户端提示连接失败,最后在 oracle 服务器用 sqlplus “/as sysdba” 登陆到 oracle 查询不到 scott 用户,这个可能是在创建实例的时候没有创建。所以这里得新建一个 scott 用户,为什么非得要 scott 用户登录呢?这个先不做讨论。
4 、如何新建 scott 用户
新建 scott 用户不只是就单单创建一个用户而已,它还有很多测试数据可提供使用,这里 oracle 自己有一个脚本用于创建 scott 用户及创建测试表,这就是为什么要用 scott 用户登录的原因。该脚本在 linux 服务器的 $ORACLE_HOME/rdbms/admin/ 目录下面,脚本文件名称为 utlsampl.sql ,网上有说是 scott.sql 其实该目录不存在 scott.sql 这个脚本。有了这个脚本如何在 sqlplus 里面执行?用什么用户执行?
5 、在 sqlplus 执行 sql 脚本
在 sqlplus 执行 sql 脚本如下:
SQL> @$ORACLE_HOME/rdbms/admin/utlsampl.sql
这里必须把 $ORACLE_HOME 替换成具体的路径,用 shell 命令 echo $ORACLE_HOME 可以看到该环境变量的值。
执行完后,显示如下信息:
SQL>@/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlsampl.sql
Disconnected from Oracle Database 11g Enterprise Edition Release11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real ApplicationTesting options
开始我以为是执行不成功,可是又没什么 successfully 之类的成功提示。所以只能用 scott/tiger 登录 sqlplus 看是否能否登录成功,如果成功那么这个脚本就已经成功的执行了。
6 、忘记 sys 和 system 密码
在执行 utlsampl.sql 的时候,其实没有我上面描述的那么顺利,因为我把 sys 和 system 的密码给忘了,因为 ORCL 实例是半年前创建的,当时也没做个文档把用户名和密码记下来。所以这里只能去修改这两个用户的密码,如何修改密码,如下所示:
[oracle@centos ~ ]$ sqlplus /nolog
SQL>connect “/as” sysdba
SQL>alter user sys identifiedby sys;
SQL>alter user systemidentified by system;
把 sys 和 system 用户的密码都修改为和各自的用户名一样。修改完后,试着用这两个用户去登陆 oracle 数据库。
[oracle@centos ~ ]$ sqlplussys/sys as sysdba
[oracle@centos ~ ]$ sqlplessystem/system
都可以进入 sqlplus ,说明修改已经生效了。执行 utlsamp.sql 这个脚本需要 sys 用户和 system 用户去执行。
经过了这个过程后,在配置 net manager 的最后一步,即以 scott 用户测试与 oracle 实例的连通性的时候,才连接测试成功了。然后再 PL/SQL 检测到配置成功的服务名 ORCL, 才能用 PL/SQL 连接到数据库。
注:文章不免有些不足的地方,欢迎指出,谢谢!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24590940/viewspace-713903/ ,如需转载,请注明出处,否则将追究法律责任。