PL/SQL连接虚拟机中的oracle数据库

前提:

台式电脑A(10.10.14.70);笔记本B(10.10.14.62);笔记本B安装的虚拟机Centos 6.8(10.10.14.59)并安装的oracle 11g数据库;

需求:

在台式电脑A上,通过PL/SQL连接笔记本B上虚拟机里面的Oracle数据库?

 

解决办法:

一、修改Oracle数据库的配置文件:

路径:/software/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin

PL/SQL连接虚拟机中的oracle数据库

修改listener.ora文件:

PL/SQL连接虚拟机中的oracle数据库

PL/SQL连接虚拟机中的oracle数据库

# listener.ora Network Configuration File: /software/oracle/app/oracle/product/11.2.0/dbhome_1/net
work/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.14.59)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /software/oracle/app


SID_LIST_LISTENER=
   (SID_LIST =
      (SID_DESC =
          (GLOBAL_DBNAME =  orcl)
               (ORACLE_HOME = /software/oracle/app/oracle/product/11.2.0/dbhome_1)
               (SID_NAME = orcl)
      )
   )

修改tnsnames.ora文件:

PL/SQL连接虚拟机中的oracle数据库

PL/SQL连接虚拟机中的oracle数据库

# tnsnames.ora Network Configuration File: /software/oracle/app/oracle/product/11.2.0/dbhome_1/net
work/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.14.59)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

二、关闭虚拟机中的防火墙:

1、查看防火墙是否开启 执行 service iptables status 命令:
2、关闭防火墙 执行 service iptables stop 命令;
3、再次查看状态: 执行 service  iptables  status 命令:
4、这样的操作之后,有个不方便的地方就是每次系统重启的时候,防火墙都需要手动关闭.这样做比较麻烦.所以我们可以改变防火墙启动的策略来永久性的关闭防火墙.
执行   chkconfig iptables off  命令:
这样,以后再启动linux主机时,就不需要重新关闭防火墙了    

注:红色部分,我没样做;

三、Linux下启动Oracle服务和监听程序

1、连接到数据库所在的linux机器,切换到oracle用户模式下
[[email protected] ~]# su - oracle

PL/SQL连接虚拟机中的oracle数据库

2、然后用sqlplus登录到数据库,关闭数据库
[[email protected] bin]$ sqlplus /nolog  //登录sqlplus
SQL> connect /as sysdba  //连接oracle
SQL> startup //起动数据库
SQL> exit  //退出sqlplus ,起动监听

PL/SQL连接虚拟机中的oracle数据库

3、起动监听
[[email protected] bin]$ cd $ORACLE_HOME/bin //进入oracle安装目录
[[email protected] bin]$ lsnrctl start  //起动监听

PL/SQL连接虚拟机中的oracle数据库

4、客户端连接

PL/SQL连接虚拟机中的oracle数据库

四、如果报错:ORA-12514,解决办法:

linux下oracle报错,提示ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务的解决办法

在listener.ora文件中配置相应的服务,然后重新启动数据库和监听服务
使用到的脚本命令:
linux环境:

    
1. 修改 /software/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora文件   这个路径根据自己的情况
         默认情况下该文件内容:
         LISTENER=
            (DESCRIPTION_LIST =
               (DESCRIPTION =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.42.250)(PORT =1521))
                  (ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))
               )
             )
         出现ORA-12514的问题时候,我们需要增加的服务配置
         SID_LIST_LISTENER=
             (SID_LIST =
                (SID_DESC =
                  (GLOBAL_DBNAME =  orcl)
                  (ORACLE_HOME = /software/oracle/app/oracle/product/11.2.0/dbhome_1)
                  (SID_NAME = orcl)
                 )
               )
2. 启动相关数据库和监听服务
         以oracle身份登录数据库: su -oracle

         进入 sqlplus 控制台:sqlplus /nolog

         以系统管理员登录:connect / as sysdba

         关闭数据库:shutdown immediate

         退出sqlplus控制台:exit

         进入监听器控制台:lsnrctl

         关闭监听器:stop

         启动监听器:start

         退出监听控制台:exit

         进入 sqlplus 控制台:sqlplus /nolog

         以系统管理员登录:connect / as sysdba

         启动数据库:startup

         退出sqlplus控制台:exit