相关文章推荐
寂寞的自行车  ·  sql server 存储过程if sql ...·  2 年前    · 
俊秀的毛衣  ·  pdf.js下载文件名是下划线-掘金·  2 年前    · 
买醉的篮球  ·  重学ElasticSearch (ES) ...·  2 年前    · 
阳光的楼房  ·  合并RDBMS和NoSQL数据库_mongo ...·  2 年前    · 
知识渊博的热带鱼  ·  能环宝:一季度光伏数据出炉,新增装机领先省份 ...·  2 年前    · 
Code  ›  SQL*Plus远程访问ORACLE (下) - 墨天轮
oracle oracle数据库 oracle函数 oracle执行计划
https://www.modb.pro/db/563286
博学的柳树
1 年前
  • 学习
    • 课程中心
      推荐优质内容、热门课程
    • 学习路径
      预设学习计划、达成学习目标
    • 知识图谱
      综合了解技术体系知识点
    • 课程库
      快速筛选、搜索相关课程
    • 视频学习
      专业视频分享技术知识
    • 电子文档
      快速搜索阅览技术文档
  • 文档
  • 服务
    • 智能助手小墨
      关于数据库相关的问题,您都可以问我
    • 数据库巡检平台
      脚本采集百余项,在线智能分析总结
    • SQLRUN
      在线数据库即时SQL运行平台
    • 数据库实训平台
      实操环境、开箱即用、一键连接
    • 数据库管理服务
      汇聚顶级数据库专家,具备多数据库运维能力
  • 暂无图片
    • 数据库百科
    • 核心案例
    • 行业报告
    • 月度解读
    • 大事记
    • 产业图谱
  • 我的订单
  • 登录后可立即获得以下权益
    免费培训课程
    收藏优质文章
    疑难问题解答
    下载专业文档
    签到免费抽奖
    提升成长等级
    立即登录
    登录 注册
      • 登录 注册
    • 首页
    • 资讯
    • 数说
    • 活动
    • 大会
    • 课程
    • 文档
    • 排行
    • 问答
    • 我的订单
    暂无图片
    • 首页
    • 专家团队
    • 智能助手
    • 在线工具
      • SQLRUN
        在线数据库即时SQL运行平台
      • 数据库在线实训平台
        实操环境、开箱即用、一键连接
      • AWR分析
        上传AWR报告,查看分析结果
      • SQL格式化
        快速格式化绝大多数SQL语句
      • SQL审核
        审核编写规范,提升执行效率
      • PLSQL解密
        解密超4000字符的PL/SQL语句
      • OraC函数
        查询Oracle C 函数的详细描述
      • 智能助手小墨
        关于数据库相关的问题,您都可以问我
    • 精选案例
    • 新闻资讯
    • 云市场
    登录后可立即获得以下权益
    免费培训课程
    收藏优质文章
    疑难问题解答
    下载专业文档
    签到免费抽奖
    提升成长等级
    立即登录
    登录 注册
      • 登录 注册
    • 首页
    • 专家团队
    • 智能助手
    • 精选案例
    • 新闻资讯
    • 云市场
    暂无图片
    4
    暂无图片
    暂无图片
    微信扫码
    复制链接
    新浪微博
    分享数说
    暂无图片
    采集到收藏夹
    分享到数说
    首页 / SQL*Plus远程访问ORACLE (下)

    SQL*Plus远程访问ORACLE (下)

    原创 张均 云和恩墨 2022-11-22
    594

    一. 概述

    在oracle的学习中,我们通常使用虚拟机搭建oracle数据库环境,并且把同一个环境用作客户端(client)和服务端(server),但是这样的情况基本上不可能出现在生产环境上。生产环境中,通常是配置多个客户端通过网络来访问oracle服务端。本文下篇使用了官方提供的客户端软件,配置了远程客户端和服务端的网络配置文件,通过相关实验操作来实现远程访问ORACLE。

    1.1 实验环境

  • 远程连接需要借助软件,这里选择oracle官方提供的sqlplus客户端,下载链接如下:
    https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
  • 需要下载对应版本的basic和sqlplus两个包,本文下载的是zip包

    二. 软件安装(远程客户端)

    2.1 创建解压目录

    [root@amogdb opt]# mkdir -p /opt/software/oracle
    

    2.2 上传安装包

    total 33040
    -rwxrw-rw-. 1 root root 32917466 Nov 14 16:11 instantclient-basiclite-linux.x64-12.2.0.1.0.zip
    -rwxrw-rw-. 1 root root   904309 Nov 14 16:27 instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
    [root@amogdb software]# pwd
    /opt/software/oracle
    

    2.3 解压

    [root@amogdb oracle]# unzip instantclient-basiclite-linux.x64-12.2.0.1.0.zip
    Archive:  instantclient-basiclite-linux.x64-12.2.0.1.0.zip
      inflating: instantclient_12_2/adrci
      inflating: instantclient_12_2/BASIC_LITE_README
      inflating: instantclient_12_2/genezi
      inflating: instantclient_12_2/libclntshcore.so.12.1
      inflating: instantclient_12_2/libclntsh.so.12.1
      inflating: instantclient_12_2/libipc1.so
      inflating: instantclient_12_2/libmql1.so
      inflating: instantclient_12_2/libnnz12.so
      inflating: instantclient_12_2/libocci.so.12.1
      inflating: instantclient_12_2/libociicus.so
      inflating: instantclient_12_2/libocijdbc12.so
      inflating: instantclient_12_2/libons.so
      inflating: instantclient_12_2/liboramysql12.so
      inflating: instantclient_12_2/ojdbc8.jar
      inflating: instantclient_12_2/uidrvci
      inflating: instantclient_12_2/xstreams.jar
    [root@amogdb software]# unzip instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
    Archive:  instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
      inflating: instantclient_12_2/glogin.sql
      inflating: instantclient_12_2/libsqlplusic.so
      inflating: instantclient_12_2/libsqlplus.so
      inflating: instantclient_12_2/sqlplus
      inflating: instantclient_12_2/SQLPLUS_README
    

    2.4 配置环境变量

    [root@amogdb oracle]# cd ~
    [root@amogdb ~]# vi .bash_profile
    export ORACLE_HOME=/opt/software/oracle/instantclient_12_2
    export ORACLE_SID=oradb
    export TNS_ADMIN=$ORACLE_HOME/network/admin
    export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
    #export NLS_LANG='simplified chinese_china'.ZHS16GBK
    export NLS_LANG='simplified chinese_china'.AL32UTF8
    export PATH=$ORACLE_HOME:$PATH
    
  • 使环境变量生效
  • [root@amogdb ~]# source .bash_profile
    [root@amogdb ~]# echo $ORACLE_HOME
    /opt/software/oracle/instantclient_12_2
    

    三.配置文件

    3.1 远程客户端

  • 上篇提到过,远程客户端需要配置tnsnames.ora文件,来完整的描述需要连接的oracle服务器的详细信息,配置如下:
  • [root@amogdb oracle]# mkdir -p network/admin
    [root@amogdb oracle]# vim tnsnames.ora
    [root@amogdb oracle]# cat tnsnames.ora
    oradb =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.150)(PORT = 1522)) #通信协议,远程数据库所在主机,端口信息
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = oradb) # 远程服务器上oracle的服务名
    

    需要注意的是,我们要把tnsnames.ora以及sqlnet.ora放在ORACLE_HOME/network/admin下(配置了环境变量),如果环境变量没有配置TNS_ADMIN,系统会默认到ORACLE_HOME/network/admin文件下寻找tnsnames.ora文件。

    3.2 ORACLE服务端

  • 服务器端需要配置listener.ora文件,使用监听来注册oracle服务
  • 配置文件如下:
  • [oracle@oracle1 admin]$ cat listener.ora
    # listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
    # Generated by Oracle configuration tools.
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = oracle1)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    LSNR1 =
         (DESCRIPTION =
           (ADDRESS_LIST =
             (ADDRESS = (PROTOCOL = TCP)(HOST = oracle1)(PORT = 1522))
    LSNR2=
      (DESCRIPTION=
        (ADDRESS_LIST=
          (ADDRESS=(PROTOCOL=tcp)(HOST=oracle1)(PORT=1523))
    SID_LIST_LSNR2=
       (SID_LIST=
         (SID_DESC=
           (GLOBAL_DBNAME=oracle)
           (ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1)
           (SID_NAME=oradb)
    

    其中LISTENER是oracle默认动态监听器,端口为1522;LSNR1是新建动态监听器,端口为1522;LSNR2是新建静态监听器,端口号为1523

    3.3 查看ORACLE服务端监听状态

  • LSNR1状态
  • [oracle@oracle1 admin]$ lsnrctl status LSNR1
    LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 23-NOV-2022 00:25:39
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle1)(PORT=1522)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LSNR1
    Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
    Start Date                23-NOV-2022 00:24:16
    Uptime                    0 days 0 hr. 1 min. 46 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle1/lsnr1/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle1)(PORT=1522)))
    Services Summary...
    Service "oracle" has 1 instance(s).
      Instance "oradb", status READY, has 1 handler(s) for this service...
    Service "oradbXDB" has 1 instance(s).
      Instance "oradb", status READY, has 1 handler(s) for this service...
    The command completed successfully
    
  • LSNR2状态
  • [oracle@oracle1 admin]$ lsnrctl status LSNR2 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 23-NOV-2022 00:26:41 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle1)(PORT=1523))) STATUS of the LISTENER ------------------------ Alias LSNR2 Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production Start Date 23-NOV-2022 00:16:43 Uptime 0 days 0 hr. 10 min. 22 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/oracle1/lsnr2/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle1)(PORT=1523))) Services Summary... Service "oracle" has 1 instance(s). Instance "oradb", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully

    四. 远程连接ORACLE

    4.1 使用动态监听远程连接oracle

  • 使用别名远程登录oracle
    这里的别名指的是客户端tnsnames.ora中对目标数据库的描述名,例如之前配置的tnsnames中oradb就是别名。使用语法:sqlplus &user_name/&password@tnsname
  • [root@amogdb ~]# sqlplus scott/tiger@oradb SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 22 17:33:32 2022 上次成功登录时间: 星期三 11月 23 2022 00:33:12 +08:00 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production ----成功连接
  • 使用轻松连接远程连接oracle
  • 注意的是当客户端存在tnsnames.ora的时候,需要在sqlnet.ora文件中添加轻松连接关键字才能使用轻松连接。配置方法见上篇。

    [root@amogdb ~]# sqlplus scott/tiger@192.168.101.150:1522/oracle SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 22 17:28:20 2022 上次成功登录时间: 星期三 11月 23 2022 00:31:20 +08:00 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

    4.2 使用静态监听远程启动数据库

  • 在上篇提到过,动态监听必须要实例启动到mount阶段才能远程登录。但是实例不需要启动,静态监听也能注册,所以可以利用这一点实现,远程启停示实例(需要使用sys明文登录)
  • 4.2.1 服务器端关示例

    SYS@oradb> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    

    4.2.2 配置(修改)tnsnames.ora文件

  • 之前配置的静态监听是对应的1523端口,那么tnsnames.ora文件中对实例的描述也必须要端口对应,否则会报错。
  • 修改或配置tnsnames.ora示例:
  • [root@amogdb admin]# cat tnsnames.ora oradb = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.101.150)(PORT = 1523)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle)

    4.2.3 远程连接示例

    [root@amogdb admin]# sqlplus sys/oracle@oradb as sysdba SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 22 18:00:37 2022 已连接到空闲例程。
  • 注意一定要使用服务器静态监听对应的端口,否则会出现以下类似报错:
  • [root@amogdb ~]# sqlplus sys/oracle@192.168.101.150:1522/oracle as sysdba SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 22 18:02:19 2022 ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 请输入用户名:

    4.2.4 远程启动数据库

    SQL> startup ORACLE 例程已经启动。 Total System Global Area 1577058304 bytes Fixed Size 8621136 bytes Variable Size 1207960496 bytes Database Buffers 352321536 bytes Redo Buffers 8155136 bytes 数据库装载完毕。 数据库已经打开。 SQL> select instance_name,status from v$instance; INSTANCE_NAME ------------------------------------------------ STATUS ------------------------------------ oradb
     
    推荐文章
    寂寞的自行车  ·  sql server 存储过程if sql server 存储过程 超时_mob6454cc6f8e48的技术博客_51CTO博客
    2 年前
    俊秀的毛衣  ·  pdf.js下载文件名是下划线-掘金
    2 年前
    买醉的篮球  ·  重学ElasticSearch (ES) 系列(四):ELK搭建SpringBoot日志实时分析系统 - 墨天轮
    2 年前
    阳光的楼房  ·  合并RDBMS和NoSQL数据库_mongodb_芒果数据-DevPress官方社区
    2 年前
    知识渊博的热带鱼  ·  能环宝:一季度光伏数据出炉,新增装机领先省份出现大变动|光伏数据|国家能源局|山东|户用|新增装机|新能源项目|能环宝_手机网易网
    2 年前
    今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
    删除内容请联系邮箱 2879853325@qq.com
    Code - 代码工具平台
    © 2024 ~ 沪ICP备11025650号