前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >19c以后TWO_TASK和LOCAL环境变量又变得有用了~~

19c以后TWO_TASK和LOCAL环境变量又变得有用了~~

作者头像
SQLplusDB
发布2022-08-22 13:28:23
2810
发布2022-08-22 13:28:23
举报
文章被收录于专栏:Oracle数据库技术

编者按:遇到了就MEMO一下。

编辑|SQL和数据库技术(ID:SQLplusDB)

以前一直不觉得TWO_TASK和LOCAL这两个环境变量有啥用,

但是到了19c都是CDB/PDB的时候,因为连接PDB必须用TNS服务名,突然感觉又非常好用了。尤其对于一些升级为了维护兼容性的情况。

在Unix/Linux环境下,可以设置TWO_TASK环境变量。

在Windows环境下,可以设置LOCAL环境变量。

设置TWO_TASK/LOCAL的情况下,当用户连接数据库且没有指定TNS服务名时,会自动利用TWO_TASK/LOCAL的设置作为TNS服务名。

比如一般连接要

代码语言:javascript
复制
  sqlplus user/password@pdb1

通过设置TWO_TASK=PDB1,就可以直接通过下面连接pdb1了。

代码语言:javascript
复制
  sqlplus user/password

参考:

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:89412348059

代码语言:javascript
复制
If you are in a Unix environment, you can normally set 2 environment variables:
ORACLE_HOME
ORACLE_SID


that will connect you to a local database identified by that home and sid. If you wanted to be able to connect to a remote database or a database on that machine via SQLNet, you can also set:

TWO_TASK = <tnsconnect string>

The setting of TWO_TASK overrides the ORACLE_SID when set. You will not connecting to a local database with two_task but rather using sqlnet to connect to a remote database.

So, instead of:

$ sqlplus scott/tiger@some_db
I can:

$ setenv TWO_TASK some_db
$ sqlplus scott/tiger


and the @some_db is implied.

https://www.orafaq.com/wiki/TWO_TASK

代码语言:javascript
复制
TWO TASK
TWO_TASK (or LOCAL on Windows) is an environment variable used to specifies the default remote Oracle service. Connections will be made to a remote database (via SQL*Net) without specifying a service name (tnsnames.ora entry). It will appear to programs that they connect to a local database, while in fact they are routed to a remote database.

This environment variable is equivalent to the LOCAL registry entry on the Windows platforms. If both ORACLE_SID and TWO_TASK or LOCAL are defined, TWO_TASK or LOCAL takes precedence.

Usage
Windows:

set LOCAL=oraservice1
Unix/ Linux:

$ export TWO_TASK=oraservice1
or

$ setenv TWO_TASK oraservice1
Where 'oraservice1' is defined in the local TNSNAMES.ORA file or in an Names/LDAP server.

Example
One would normally connect to a remote database by specifying a service name (connect string). for example:

$ sqlplus scott/tiger@connect_str
By setting TWO_TASK you can omit the connect string (it is implied):


$ TWO_TASK=connect_str; export TWO_TASK
$ sqlplus scott/tiger
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SQL和数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档