设为首页 收藏本站
查看: 980|回复: 0

[经验分享] Oracle中各种name

[复制链接]

尚未签到

发表于 2018-9-14 10:00:14 | 显示全部楼层 |阅读模式
  Oracle中各种name
  1.    DB_NAME
  DB_NAME必须设置为不超过8个字符的文本字符串(可以包含警号、美元符号、数字、下划线),当数据库创建的时候DB_NAME被记录与控制文件、数据文件、在线日志文件中。如果数据库启动时参数文件中pfile或spfile中的DB_NAME与控制文件中的DB_NAME不一致,那么将无法启动数据库。
SQL> showparameter db_name  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
db_name                              string      ORACLE
  
SQL> selectname from v$database;
  
NAME
  
---------
  
ORACLE
  
SQL>
  2.    INSTANCE_NAME
  实例是ORACLE数据库的一组进程和内存区域的集合,用于和操作系统间联系。数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,但是在RAC环境中一个数据库可以有多个实例。要和一个数据库服务器相连,必须知道INSTANCE_NAME,光知道数据库名是没用的。在9i中instance_name参数值在参数文件中默认设定。在10g中instance_name参数值未在参数文件中设定,那么默认由sid来决定(10g中可以在参数文件中设定instance_name的值),在实例启动过程中,Oracle从SID中来获得这个参数值,从而可以用于动态注册。此外Oracle的监听器(listener)配置文件中的SID_NAME就是来自instance_name参数,监听器通过instance_name才能确定需要将连接请求注册到哪一个实例上。如果初始化参数文件设置了instance_name参数,那么实例名为该参数的值。ORALCE_SID与SID具有相同的值,数据库启动时需要利用oracle_sid来查找初始化参数文件来启动数据库。
SQL> showparameter instance_name;  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
instance_name                        string      ORACLE
  
SQL> selectinstance_name from v$instance;
  
INSTANCE_NAME
  
----------------
  
ORACLE
  
SQL> selectvalue from v$parameter where name='instance_name';
  
VALUE
  
--------------------------------------------------------------------------------
  
ORACLE
  
SQL>
  3.    ORALCE_SID
  ORACLE_SID是操作系统的环境变量设置,用于和操作系统交互,其取值可以与INSTANCE_NAME相同,select instance_name from v$instance 这个是来自os的oracle_sid。初始化参数instance_name , show parameter instance_name , 或者select value from v$parameter wherename=‘instance_name’所得到的值来源于数据库。ORACLE_SID在这里用于标示进程,而instance_name则用来标示实例。两者可以具有不同的名称。
  本例中ORACLE_SID=’ORACLE’,修改数据启动参数文件添加instance_name=’JASON’,重启数据库再次查看instance_name如下:
SQL> selectinstance_namefrom v$instance;  
INSTANCE_NAME
  
----------------
  
ORACLE                      instance_name仍为ORACLE,来自操作系统 oracle_sid
  
SQL> showparameter instance_name;
  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
instance_name                        string      JASON  实例名发生变更
  
SQL> selectvalue from v$parameter where name='instance_name';
  
VALUE
  
--------------------------------------------------------------------------------
  
JASON                                                 实例名发生变更
  
SQL>
  4.    db_domain
  DB_DOMAIN 类似于网络域名一样,指明数据库在一个网络结构中的逻辑位置。
  通过如下命令可以查看DB_DOMAIN
SQL> showparameter db_domain  
NAME                                 TYPE        VALUE
  
----------------------------------------------- ------------------------------
  
db_domain                            string           ORACLE.COM
  
SQL>
  5SERVICE_NAMES
  SERVICE_NAMES指定了一个或多个服务名用于客户端连接到实例,实例注册服务名到监听中。当客户端请求连接时,监听将根据服务名将客户端请求连接到对应的实例。
如果未设置SERVICE_NAMES参数,未设置db_domain,则SERVICE_NAMES为db_name;  
如果未设置SERVICE_NAMES参数,设置db_domain,则SERVICE_NAMES为db_name.db_domain;
  
设置SERVICE_NAMES参数,设置db_domain,则SERVICE_NAMES为设置的参数值;
  
设置SERVICE_NAMES参数,未db_domain,则SERVICE_NAMES为设置的参数值;
  
同时数据库服务名可以与数据库名不相同。
  Property
  Description
  Parameter type
  String
  Syntax
  SERVICE_NAMES  =
  db_service_name[,db_service_name[ ... ] ]
  Default value
  DB_UNIQUE_NAME.DB_DOMAIN if defined
  Modifiable
  ALTER  SYSTEM
  Range of values
  Any ASCII string or comma-separated  list of string names
  Basic
  No
  Real Application Clusters
  Do not set the SERVER_NAMES parameter  for Real Application Clusters (RAC). Instead, define services using Database  Configuration Assistant (DBCA) and manage services using Server Control  (SRVCTL) utility.
  本例中ORACLE_SID=’ORACLE’,db_name=’ORACLE‘,下面4个实例中所说监听为动态监听下情况。
  (1)、未设置db_domainservice_names参数
SQL> selectvalue from v$parameter where name='service_names';  
VALUE
  
--------------------------------------------------------------------------------
  
ORACLE
  
SQL> showparameter service_names;
  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
service_names                        string      ORACLE
  
SQL>
  
那么此时在监听注册的service_names为ORACLE。
  (2)、设置db_domain=’ORACLE.COM’,未设置service_names参数
SQL> showparameter service_names;  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
service_names                        string      ORACLE.ORACLE.COM
  
SQL>
  
那么此时在监听注册的service_names为ORACLE.ORACLE.COM
  (3)、设置db_domain=’ORACLE.COM’,设置service_names=’TEST’
SQL> showparameter service_names;  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
service_names                        string     TEST
  
SQL>
  
那么此时在监听注册的service_names为TEST.ORACLE.COM
  (4)、未设置db_domain,设置service_names=’TEST’
SQL> showparameter service_names;  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
service_names                        string     TEST
  
SQL>
  
那么此时在监听注册的service_names为TEST.
  备注:这里动态监听里注册的db_domain,来自于初始化参数db_domain。并非global_name中的db_domain,即使设置了global_name且值不同。
  6db_unique_name
  DB_UNIQUE_NAM是10g的参数,在配置dataguard环境时,db_name相同,但是必须为处dg环境中每个数据库设置一个db_unique_name,当未设置db_unique_name时,默认与db_name相同。
  Property
  Description
  Parameter type
  String
  Syntax
  DB_UNIQUE_NAME =database_unique_name
  Default value
  Database instances: the value of DB_NAME
  Automatic Storage Management instances: +ASM
  Modifiable
  No
  Basic
  Yes
  Real Application Clusters
  Multiple instances must have the same value.
  DB_UNIQUE_NAME specifies a globally unique name for the database. Databaseswith the same DB_NAME within the same DB_DOMAIN (for example, copies ofa database created for reporting or a physical standby) must have aunique DB_UNIQUE_NAME. Every database's DB_UNIQUE_NAME must be unique withinthe enterprise.
  The value of DB_UNIQUE_NAME can be up to 30characters and is case insensitive. The following characters are valid in adatabase name: alphanumeric characters, underscore (_), number sign (#), anddollar sign ($).
SQL> showparameter db_unique_name;  
NAME                                 TYPE   VALUE
  
----------------------------------------------- ------------------------------
  
db_unique_name                       string      ORACLE
  
SQL>
  7、global_name
  global_name由两部分组成,global_name=db_name.db_domain。db_domain参数仅在数据库创建时与db_name参数一起构成global_name,同时global_name值被存储于数据字典中。数据库创建后如果需要改变global_name值,可通过ALTER DATABASERENAME GLOBAL_NAME TO database.domain修改,通过修改初始化参数db_domain没有任何效果。db_domain参数修改需要重启数据库生效。如果在建立数据库的时候不指定DB_DOMAIN的值,则GLOBAL_NAME和DB_NAME的值一样。
  官方解释如下:
  The DB_DOMAIN initializationparameter is only important at database creation time when it is used, togetherwith the DB_NAME parameter, to form the database global name. At thispoint, the database global name is stored in the data dictionary. You mustchange the global name using an>not byaltering the DB_DOMAIN parameter in the initialization parameterfile. It is good practice, however, to change the DB_DOMAIN parameter toreflect the change in the domain name before the next database startup.

  Use the>  1)、修改数据库global_name,查看db_domain 变化。
  修改前
SQL> show parameter db_domain  
NAME                                TYPE        VALUE
  
------------------------------------ -----------------------------------------
  
db_domain                           string      AU.ORACLE.COM
  
SQL>
  
SQL> SELECT * FROM GLOBAL_NAME;
  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE.AU.ORACLE.COM
  修改global_name为ORACLE.US.ORACLE.COM。
SQL>>
Database>  修改成功后查看修改后global_name。
SQL> SELECT * FROM GLOBAL_NAME;  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE.US.ORACLE.COM
  修改后查看db_domain未发生变化,因此global_name的修改不会影响参数db_dbmain的值。
SQL> SHOW PARAMETER DB_DOMAIN;  
NAME                                TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
db_domain                           string      AU.ORACLE.COM
  
SQL>
  2)、修改数据库global_name,查看db_link变化。
  查看本地数据库global_name及db_domain.
SQL> SELECT * FROM GLOBAL_NAME;  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE.AU.ORACLE.COM
  
SQL> show parameter db_domain
  
NAME                                TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
db_domain                           string      AU.ORACLE.COM
  
SQL>
  创建一个dblink,名称为hq.
SQL> create database link hq using 'sales';  
Database link created.
  查看视图查看创建成功的dblink信息,发现数据将自动补齐db_domain部分信息。
SQL> select db_link from user_db_links;  
DB_LINK
  
--------------------------------------------------------------------------------
  
HQ.AU.ORACLE.COM
  
SQL>
  再次修改global_name为ORACLE.US.ORACLE.COM
SQL>>
Database>  查看修改后的global_name信息。
SQL> select * from global_name;  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE.US.ORACLE.COM
  再次查看db_domain,发现db_domain参数值不受global_name值改变而改变。
SQL> show parameter db_domain;  
NAME                                TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
db_domain                           string      AU.ORACLE.COM
  再次创建dblink名称为supply,并查看生成的dblink信息,发现创建dblink时若未指定db_domain时,数据库自动使用global_name中的db_domain补全dblink名而非使用db_domian值进行补充。
SQL> create database link supply using 'supply';  
Database link created.
  
SQL> select db_link from user_db_links;
  
DB_LINK
  
--------------------------------------------------------------------------------
  
SUPPLY.US.ORACLE.COM
  
HQ.AU.ORACLE.COM
  
SQL>
  3)、global_name的由来
  global_name视图的创建语句如下:
create or replace view global_name  
(global_name)
  
as
  
select value$ from sys.props$ where name = 'GLOBAL_DB_NAME'
  我们看到global_name中的信息实际上是来自props$内部表的,取得的信息是其中的global_db_name字段。
SQL> select value$ from sys.props$ where name = 'GLOBAL_DB_NAME';  
VALUE$
  
--------------------------------------------------------------------------------
  
ORACLE.US.ORACLE.COM
  
SQL> select * from global_name;
  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE.US.ORACLE.COM
  4)、如何去掉db_domain.
  关于global_name,就是DB_DOMAIN一旦加上。通过设置DB_DOMAIN的方式与通过ALTER DATABASE RENAME GLOBAL_NAME TO的方式无法进行恢复。只能通过updateglobal_name set global_name='xxx'更新视图进行修改。
  如下:
  查看当前global_name
SQL> select * from global_name;  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE.US.ORACLE.COM
  修改当前global_name为db_name。
SQL>>
Database>  修改后查询结果未变。
SQL> select * from global_name;  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE.US.ORACLE.COM
  通过更新视图方式进行修改如下操作,同时更新成功后数据库可以正常启动。
SQL> update global_name set global_name='ORACLE';  
1 row updated.
  
SQL> select * from global_name;
  
GLOBAL_NAME
  
--------------------------------------------------------------------------------
  
ORACLE
  
SQL> commit;
  
Commit complete.
  
SQL> shutdown immediate;
  
Database closed.
  
Database dismounted.
  
ORACLE instance shut down.
  
SQL> startup
  
ORACLE instance started.
  
Total System Global Area  595591168bytes

  
Fixed>
  
Variable>  
Database Buffers          343932928bytes
  
Redo Buffers                7163904bytes
  
Database mounted.
  
Database opened.
  
SQL>
  该条语句不能将global_name设置为空( update global_name set global_name=''),若设置为空将导致数据库无法启动。
  注:数据库版本为10g



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-582087-1-1.html 上篇帖子: Oracle 死锁的检测查询及处理 下篇帖子: oracle的sqlplus工具rlwrap使用优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表