暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
oracle概念解释.txt
278
5页
6次
2022-06-15
100墨值下载
我们知道,Oracle 中的各种 NAME 会在我们的各个配置文件中经常出现,大致有以下这些:
init.ora 中有 DB_NAMEINSTANCE_NAMESERVICE_NAME
配置 DG 的时候,为了区分主备库,还要使用 DB_UNIQUE_NAME
在操作系统中需要配置环境变量,ORACLE_SID
listener.ora 中有 SID_NAMEGLOBAL_DBNAME
tnsname.ora 中有 SERVICE_NAMESIDNET SERVICE NAME
那么这么多名字到底有哪些区别呢?我们在使用过程中,又要注意些什么问题呢?下面我来总结一下:
这么多名字中,有些是初始化参数,如 DB_NAME,DB_QUNIQUE_NAME,DB_DOMAINGLOBAL_NAME 有些
则只是一种叫法或者说是概念(并没有一个地方可以去设置它),如 NET SERVICE NAME 有些则是某些表/
视图中的字段名,如 V$INSTANCE 视图的 INSTANCE_NAME 有些则是环境变量中的叫法,如 ORACLE_SID
亦或是监听或客户端配置文件中设置的参数,如 SIDSID_NAMESERVICE_NAMEGLOBAL_DBNAME
DB_NAME
对一个数据库(Oracle database)的唯一标识。这种表示对于单个数据库是足够的,但是随着由多个数据
库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名
字可能一样,造成管理上的混乱。为了解决这种情况,引入了 Db_domain 参数,这样在数据库的标识是由
Db_name Db_domain 两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连
网上的机器名的管理。我们将 Db_name Db_domain 两个参数用’.’连接起来,表示一个数据库,并将该数
据库的名称称为 Global_name,即它扩展了 Db_nameDb_name 参数只能由字母、数字、’_’、’#’、’$’
成,而且最多 8 个字符。特别要注意这个限制,有的时候会掉坑里,我就掉过一次 T_T
DB_DOMAIN
定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布
式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。
GLOBAL_NAME
对一个数据库(Oracle database)的唯一标识,oracle 建议用此种方法命令数据库。该值是在创建数据
库是决定的,缺省值为 Db_name.Db_domain。在以后对参数文件中 Db_name Db_domain 参数的任何修
改不影响 Global_name 的值,如果要修改 Global_name,只能用 ALTER DATABASE RENAME
GLOBAL_NAME TO <db_name.db_domain>命令进行修改,然后修改相应参数。
SERVICE_NAME
该参数是 oracle8i 新引进的。在 8i 以前,我们用 SID 来表示标识数据库的一个实例,但是在 Oracle 的并
行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,
引进了 Service_name 参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该
参数的缺省值为 Db_name. Db_domain,即等于 Global_name。一个数据库可以对应多个
Service_name,以便实现更灵活的配置。该参数与 SID 没有直接关系,即 Service name 不必与 SID
样。
比方说我可以在设置环境变量的时候,设置 ORACLE_SID=zlm,那么这个时候 SID 就是 zlm,而在
tnsnames.ora 中,我可以把 SERVICE_NAME 改成 zlm_SN
##tnsnames.ora
ZLM10G = ##ZLM10G NET SERVICE NAME
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.91)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = zlm_SN) ##SERVICE_NAME zlm_SN,与 SID zlm 不同
)
)
可以看到,SERVICE_NAME 用了刚才在 netca 中配置的 zlm_SNSID 用了 ORACLE_SID 设置的 zlm,并且
tnsnames.ora 里系统自动添加的 NET SERVICE NAME 相关的内容删除了(即由 pmon 进程自动注 2
个动监听),只下自配置的
注意,这里我还使用了 netmgr 配置了静态监听( status UNKNOWN 其实便可知),静态监听的的,除
化配置,还可以提供在数据库未启动前能连接的能,而不是等数据库实例动后,由 pmon 进程
态向监听注服务,动监听会常比较滞后,动监听后,要等若干,才能看到服务监听。
##listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = zlm_SN)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = zlm)
)
)
经过上面的 tnsnames.ora linstener.ora 的配置,当我们看监听状态的时候,就会现不同:
$lsnrctl status ...... Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "zlm_SN" has 1 instance(s).## 表示对应的 SERVICE_NAME zlm_SN
Instance "zlm", status UNKNOWN, has 1 handler(s) for this service... ##表示对应的
INSTANCE_NAME zlm SID ORACLE_SID
The command completed successfully
常情况下,我们会设置 SERVICE_NAME INSTANCE_NAME 一致。这里还要注意的是,SERVICE_NAME
然可以脱离 INSTANCE_NAME 别名,但是必对应 listener.ora 里配置的 GLOBAL_DBNAME则就
配好了静态监听,是注不了服务的
注意,数据库数据文件存放路径,是根据 DB_NAME 定的,而对于单实例数据库而默认 SID
INSTANCE_NAME 是一致的,当然,可以不一致( DB_DOMAIN 的情况下)DBCA 的时候可以选择
3 个参数在 DBCA 的时候确认下来后,就基本去修改了,那么数据文件路径也定下来了,如我的环
境中:数据文件就/u01/app/oracle/oradata/zlm 下面而跟踪日志
/u01/app/oracle/admin/zlm/bdump 下面
过了片刻以后,再查看监听状态现自动还是会去动一个和 INSTANCE_NAME(SID)一致的
SERVICE_NAME
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.91)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "zlm" has 1 instance(s).
Instance "zlm", status READY, has 1 handler(s) for this service...
Service "zlmXDB" has 1 instance(s).
Instance "zlm", status READY, has 1 handler(s) for this service...
Service "zlm_SN" has 1 instance(s).
Instance "zlm", status UNKNOWN, has 1 handler(s) for this service...
Service "zlm_XPT" has 1 instance(s).
Instance "zlm", status READY, has 1 handler(s) for this service...
The command completed successfully
这样的,我个人判断,如果不配置静态监听的pmon 进程始会去监听那里注一个名字和
INSTANCE_NAME(SID)一致的 SERVICE_NAME,即便是经在 tnsnames.ora 中修改了
SERVICE_NAME=zlm_SN,而只有静态监听制注一个与 INSTANCE_NAME(SID)不一致的
SERVICE_NAME,才会监听到
NET SERVICE NAME
网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需,屏蔽了客户端
如何连接到服务器端的细节,实现了数据库的透明的特常当我们用 DBLINK 连接数据库时,使用的
就是这个名字,由 USING 定,USING 'connect_string'这里 connect_string 其实就是 NET
SERVICE NAME。说到 DBLINK 还要,就是当数据库 GLOBAL_NAME=TRUE 时,link_name
程数据库的全局数据库名 global_name)相同;否则,可以任意命名。同样地,当我们用 sqlplus
of 5
100墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜