精华内容
下载资源
问答
  • ORACLE服务名和实例名配置

    千次阅读 2019-04-04 14:36:21
    使用服务名连接 jdbc:oracle:thin:@//<host>:<port>/<service_name> 使用实例名 jdbc:oracle:thin:@<host>:<port>:<SID>

     

    使用服务名连接
    jdbc:oracle:thin:@//<host>:<port>/<service_name> 

    使用实例名
    jdbc:oracle:thin:@<host>:<port>:<SID> 

    展开全文
  • Oracle数据库名与Oracle实例名的关系

    万次阅读 2013-06-04 22:02:42
    1 数据库 1.1 数据库的概念 数据库(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个...数据库在$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pf

    1 数据库名

    1.1 数据库名的概念

    数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。

    数据库名在$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE<实例名>.ORA)文件中

    ###########################################
    # Database Identification
    ###########################################
    db_domain=""
    db_name=orcl

    在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文 件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

    1.2 数据库名的作用

    数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用sid,还有alter database时都是使用数据库名)。

    有很多Oracle安装文件目录是与数据库名相关的,如:

         winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...

    又如参数文件pfile:

         winnt: F:\oracle\product\10.2.0\admin\DB_NAME\pfile\init.ora.54200885729

    如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也要指明DB_NAME。

    1.3 修改数据库名

    建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。是区分数据的内部标识(即是给Oracle数据库内部使用的),因为其在数据库多处保存,并且控制文件中保存的是二进制的,所以很难改变其名字。

    在已创建数据之后,修改数据库名。步骤如下:
    (1)关闭数据库。
    (2)修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
    (3)以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

    1.4 查询当前数据库名

    方法一:select name from v$database;
    方法二:show parameter db
    方法三:查看参数文件,$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora)

    2 数据库实例名(instance name)

    2.1 数据库实例名的概念(instance_name)

    实例名是代表用于加载或打开一个数据库所用的memory structures + Background process (MEM + BGP)。在unix中,实例名由ORACLE_SID环境变量定义,在windows中由服务名定义。可以用于连接字符串中,这种用法用于8i版本前,虽然10g仍然支持,但是并不推荐,因为这种方法缺乏对某些新特性的支持。

    实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,它根本不需要一个与其相关联的数据库,没有任何数据文件也可以启动实例。下面是Oralce的启动过程:

       sqlplus / as sysdba
       sql>startup nomount  #启动了一个实例,现在SGA分配了,进程在运行,除数据库外所有的东西都启动了
       sql>alter database mount  #利用控制文件(init.ora文件中指定)定位重作日志文件、数据文件、临时文件
       sql>alter database open  #数据库可供任何人通过这个实例访问。

    所以可以这么理解:访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。

    实例名指的是 用于响应某个数据库操作的数据库管理系统的名称,也叫SID。实例名是由参数instance_name决定的。如果这个参数不被指定(即instance_name没有被指定为任何值),那么实例的名字由该用户的 环境变量ORACLE_SID(注意这里是大写)决定。在windows平台下,则是 注册表中oracle_sid值决定。

    实例名和SID是一一对应的,名字相同,但存储位置不同

    2.2 实例和数据库   

    实例和数据库之间的区别如下:
    (1)实例是临时的,它只在相关的进程和内存集合存在时存在;数据库是永久的,只要文件存在它就存在。
    (2)一个实例在其生存期内可安装和打开 单个数据库;数据库可以被 很多实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(RAC)。

    简单来说RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每台机器运行一个实例,每个实例都打开同一个数据库 (这个是用磁盘共享技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。

    数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。例如,要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群) 中,数据库名和实例名是一对多的关系(一个数据库对应多个实例,同一时间内用户只与一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行) 。

    实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存,这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。不过,Oracle的应用集群(Real Application Clusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。由此,我们可以同时从多台不同的计算机访问这个数据库。Oracle RAC能支持高度可用的系统,可用于构建可扩缩性极好的解决方案。

    2.3 查询当前数据库实例名

    方法一:select instance_name from v$instance;
    方法二:show parameter instance

    3 ORACLE_SID(环境变量)

    在实际中,对于数据库实例的标识有时使用实例名,有时使用ORACLE_SID,它们有什么区别呢?(非常容易混淆)

    OS(ORACLE_SID)<----------------> ORACLE 数据库 <--------(instance_name(实例名))

    上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但 instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到;而ORACLE_SID参数则是操作系统环境变量,与 ORACLE_BASE、ORACLE_HOME等用法相同,用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在winnt平台,是“TNS:协议适配器错误”。

    在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如: 
    $ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
    如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复定义过程(export ORACLE_SID=orcl),以选择不同实例。 还可以用oraenv命令行来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)

    4 数据库域名与全局数据库名

    4.1 概念与联系  

    使用数据库名(da_name)对一个数据库进行唯一标识,这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了db_domain参数,这样数据库的标识是由db_name和db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们 将db_name和db_domain两个参数用‘.’连接起来,表示一个数据库,并将该数据库的名称称为global_name,即它扩展了 db_name。db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。

    数据库域名(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>命令进行修改,然后修改相应参数。

    4.2查询数据库域名

    方法一:select value from v$parameter where name = 'db_domain';(10g中不可行)
    方法二:show parameter domain
    方法三:在参数文件中查询,$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora)

    4.3 例子

    全国交通GIS系统的分布式数据库,其中:
    吉林节点: jl.jtgis
    吉林长春节点: cc.jl.jtgis
    河北节点: hb.jtgis
    河北石家庄节点:sjz.hb.jtgis
    这些就是数据库域名,数据库域名在存在于参数文件中,她的参数是db_domain.
    全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:orcl.jl.jtgis

    5 数据库服务名(service_name)

    该参数是oracle8i新引进的。在8i以前,我们用SID来表示数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多网络服务名,设置繁琐。为了方便并行环境中的设置,引进了service_name参数。 该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。

    该参数的缺省值为db_name.db_domain,即等于global_name。如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。一个数据库可以对应多个service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即 service_name 不必与SID一样。

    从Oracle8i开始的oracle网络组件,数据库与客户端连接的主机字符串推荐使用的是数据库服务名。之前用的是SID,即数据库实例名。

    SID = the unique name of your DB instance, ServiceName = the alias used when connecting。

    如果database is registered with listener in this way,你就可以在tnsnames.ora文件中使用SERVICE_NAME parameter,否则就要用SID。

    查询数据库服务名(方法二测试可行)

         方法一:select value from v$parameter where name = 'service_name';(10g中不可行)

         方法二:show parameter service_name

    更多关于服务名的信息可以参考:

    http://www.dbabeta.com/2009/service-name-registeration.html

    http://space.itpub.net/?uid-67294-action-viewspace-itemid-402633

    6 网络服务名(net_service_name)

    网络服务名(net_service_name),又可以称为数据库别名(database alias),是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。网络服务名被记录在 tnsnames.ora文件中

    可以通过netmgr来新建网络服务名。

    网络服务名是从客户端的角度出发,当客户端连接远程数据库或其他服务时,可以指定网络服务名。因此需要使用一个或多个命名方法将此Net服务名解析为连接数据库或其他服务的连接描述符,命名方法如下:

      [本地]——将存储在本地客户机的tnsnames.ora文件中的网络服务名解析为连接描述符。
      [Oracle Names]——由Oracle名字服务器提供为网络上的每个Oracle Net服务提供解析方法
      [主机名]——通过TCP/IP环境中的主机别名连接到Oracle数据库服务

      [Sun NIS]/[DCE CDS]——专用系统用的,在Windows 2000系统环境下不适用

    参考资料:

    [1]https://forums.oracle.com/forums/thread.jspa?threadID=538986

    [2]http://stackoverflow.com/questions/43866/how-sid-is-different-from-service-name-in-oracle-tnsnames-ora

    展开全文
  • 0x1 查看、新建端口和服务 1) 查看端口、服务 在开始菜单中找到oracle程序目录中的Net Manager 2) 新建Oracle服务 选中服务器,点击左侧的绿色标记可添加数据库 0x2 查看、新建监听 1) 点击监听程序,点击...

    0x1 查看、新建端口和服务名

    1) 查看端口、服务名
    在开始菜单中找到oracle程序目录中的Net Manager
    在这里插入图片描述
    2) 新建Oracle服务

    选中服务器名,点击左侧的绿色标记可添加数据库
    在这里插入图片描述

    0x2 查看、新建监听

    1) 点击监听程序,点击LISTENER右侧就是监听程序的地址和端口
    在这里插入图片描述
    2) 配置新的监听
    点击左侧的绿色+号标志在这里插入图片描述
    再添加地址,和监听端口
    在这里插入图片描述
    在这里插入图片描述

    0x3 配置数据库服务

    点击监听,选择监听位置为数据库服务,指定ORACLE主目录
    一般为C:\app\Administrator\product\11.2.0\dbhome_
    在这里插入图片描述

    0x4 测试数据库连通性

    1) 选中数据库服务器名
    在这里插入图片描述
    2) 连接测试默认账户
    在这里插入图片描述
    账户被锁定,说明数据库服务正常,只是密码不正确。
    3) 修改登录密码重新登录
    在这里插入图片描述
    输入账号密码重新登录
    在这里插入图片描述

    0x5 重启ORACLE监听

    在这里插入图片描述
    重新启动Listener服务

    0x6 查看一个表的默认表空间

    1. 用此账户登录PLSQL
      2)新建SQL语句后按F8
      select username,default_tablespace,temporary_tablespace from dba_users;

    0x7 新建用户

    1) 创建用户(以下命令一个接着一个输入)
    create user test  //创建用户test
    IDENTIFIED BY "123456"    //密码123456
    default tablespace USERS   //默认表空间为USERS 
    temporary tablespace TEMP   //临时表空间为 TEMP
    profile DEFAULT
    account unlock;
    
    2) connect权限授权

    2.1 新建用户username后授予connect权限,否则新建用户无法通过SID或SERVICE_NAME连接数据库实例,即无法登录数据库

    第一步 grant connect to username
    第二步 ;
    

    2.2 对用户username回收connect权限

    第一步  revoke connect to username
    第二步  ;
    
    3)授予resource权限

    3.1新建用户授予resource权限,否则新建用户无法创建表

    第一步  grant resource to username
    第二步  ;
    

    3.2 对用户回收resource权限

    第一步  revoke resource from username
    第二步  ;
    
    4)授予dba权限

    4.1不给用户授予dba权限,用户将无法查看系统表,例如v$datafile,dba_data_files等

    第一步  grant dba to username
    第二步  ;
    

    4.2对用户回收dba权限

    第一步  revoke dba from username
    第二步  ;
    

    0x6 未完待续

    以上讲述的是Oracle的实例名、监听、服务、账户密码登录测试

    展开全文
  • Oracle数据库名与Oracle实例名的关系 目录(?)[+] 1 数据库名 1.1 数据库名的概念 数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个数据库,那么每一个数据库都有一个...

    Oracle数据库名与Oracle实例名的关系


    目录(?)[+]

    1 数据库名

    1.1 数据库名的概念

    数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。

    数据库名在$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE<实例名>.ORA)文件中

    ###########################################
    # Database Identification
    ###########################################
    db_domain=""
    db_name=orcl

    在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文 件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

    1.2 数据库名的作用

    数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用sid,还有alter database时都是使用数据库名)。

    有很多Oracle安装文件目录是与数据库名相关的,如:

         winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...

    又如参数文件pfile:

         winnt: F:\oracle\product\10.2.0\admin\DB_NAME\pfile\init.ora.54200885729

    如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也要指明DB_NAME。

    1.3 修改数据库名

    建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。是区分数据的内部标识(即是给Oracle数据库内部使用的),因为其在数据库多处保存,并且控制文件中保存的是二进制的,所以很难改变其名字。

    在已创建数据之后,修改数据库名。步骤如下:
    (1)关闭数据库。
    (2)修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
    (3)以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

    1.4 查询当前数据库名

    方法一:select name from v$database;
    方法二:show parameter db
    方法三:查看参数文件,$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora)

    2 数据库实例名(instance name)

    2.1 数据库实例名的概念(instance_name)

    实例名是代表用于加载或打开一个数据库所用的memory structures + Background process (MEM + BGP)。在unix中,实例名由ORACLE_SID环境变量定义,在windows中由服务名定义。可以用于连接字符串中,这种用法用于8i版本前,虽然10g仍然支持,但是并不推荐,因为这种方法缺乏对某些新特性的支持。

    实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,它根本不需要一个与其相关联的数据库,没有任何数据文件也可以启动实例。下面是Oralce的启动过程:

       sqlplus / as sysdba
       sql>startup nomount  #启动了一个实例,现在SGA分配了,进程在运行,除数据库外所有的东西都启动了
       sql>alter database mount  #利用控制文件(init.ora文件中指定)定位重作日志文件、数据文件、临时文件
       sql>alter database open  #数据库可供任何人通过这个实例访问。

    所以可以这么理解:访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。

    实例名指的是 用于响应某个数据库操作的数据库管理系统的名称,也叫SID。实例名是由参数instance_name决定的。如果这个参数不被指定(即instance_name没有被指定为任何值),那么实例的名字由该用户的 环境变量ORACLE_SID(注意这里是大写)决定。在windows平台下,则是 注册表中oracle_sid值决定。

    实例名和SID是一一对应的,名字相同,但存储位置不同

    2.2 实例和数据库   

    实例和数据库之间的区别如下:
    (1)实例是临时的,它只在相关的进程和内存集合存在时存在;数据库是永久的,只要文件存在它就存在。
    (2)一个实例在其生存期内可安装和打开 单个数据库;数据库可以被 很多实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(RAC)。

    简单来说RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每台机器运行一个实例,每个实例都打开同一个数据库 (这个是用磁盘共享技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。

    数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。例如,要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群) 中,数据库名和实例名是一对多的关系(一个数据库对应多个实例,同一时间内用户只与一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行) 。

    实例就是一组操作系统进程(或者是一个多线程的进程)以及一些内存,这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。不过,Oracle的应用集群(Real Application Clusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。由此,我们可以同时从多台不同的计算机访问这个数据库。Oracle RAC能支持高度可用的系统,可用于构建可扩缩性极好的解决方案。

    2.3 查询当前数据库实例名

    方法一:select instance_name from v$instance;
    方法二:show parameter instance

    3 ORACLE_SID(环境变量)

    在实际中,对于数据库实例的标识有时使用实例名,有时使用ORACLE_SID,它们有什么区别呢?(非常容易混淆)

    OS(ORACLE_SID)<----------------> ORACLE 数据库 <--------(instance_name(实例名))

    上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但 instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到;而ORACLE_SID参数则是操作系统环境变量,与 ORACLE_BASE、ORACLE_HOME等用法相同,用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在winnt平台,是“TNS:协议适配器错误”。

    在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如: 
    $ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
    如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复定义过程(export ORACLE_SID=orcl),以选择不同实例。 还可以用oraenv命令行来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)

    4 数据库域名与全局数据库名

    4.1 概念与联系  

    使用数据库名(da_name)对一个数据库进行唯一标识,这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了db_domain参数,这样数据库的标识是由db_name和db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们 将db_name和db_domain两个参数用‘.’连接起来,表示一个数据库,并将该数据库的名称称为global_name,即它扩展了 db_name。db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。

    数据库域名(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>命令进行修改,然后修改相应参数。

    4.2查询数据库域名

    方法一:select value from v$parameter where name = 'db_domain';(10g中不可行)
    方法二:show parameter domain
    方法三:在参数文件中查询,$ORACLE_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora)

    4.3 例子

    全国交通GIS系统的分布式数据库,其中:
    吉林节点: jl.jtgis
    吉林长春节点: cc.jl.jtgis
    河北节点: hb.jtgis
    河北石家庄节点:sjz.hb.jtgis
    这些就是数据库域名,数据库域名在存在于参数文件中,她的参数是db_domain.
    全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:orcl.jl.jtgis

    5 数据库服务名(service_name)

    该参数是oracle8i新引进的。在8i以前,我们用SID来表示数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多网络服务名,设置繁琐。为了方便并行环境中的设置,引进了service_name参数。 该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。

    该参数的缺省值为db_name.db_domain,即等于global_name。如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。一个数据库可以对应多个service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即 service_name 不必与SID一样。

    从Oracle8i开始的oracle网络组件,数据库与客户端连接的主机字符串推荐使用的是数据库服务名。之前用的是SID,即数据库实例名。

    SID = the unique name of your DB instance, ServiceName = the alias used when connecting。

    如果database is registered with listener in this way,你就可以在tnsnames.ora文件中使用SERVICE_NAME parameter,否则就要用SID。

    查询数据库服务名(方法二测试可行)

         方法一:select value from v$parameter where name = 'service_name';(10g中不可行)

         方法二:show parameter service_name

    更多关于服务名的信息可以参考:

    http://www.dbabeta.com/2009/service-name-registeration.html

    http://space.itpub.net/?uid-67294-action-viewspace-itemid-402633

    6 网络服务名(net_service_name)

    网络服务名(net_service_name),又可以称为数据库别名(database alias),是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。网络服务名被记录在 tnsnames.ora文件中

    可以通过netmgr来新建网络服务名。

    网络服务名是从客户端的角度出发,当客户端连接远程数据库或其他服务时,可以指定网络服务名。因此需要使用一个或多个命名方法将此Net服务名解析为连接数据库或其他服务的连接描述符,命名方法如下:

      [本地]——将存储在本地客户机的tnsnames.ora文件中的网络服务名解析为连接描述符。
      [Oracle Names]——由Oracle名字服务器提供为网络上的每个Oracle Net服务提供解析方法
      [主机名]——通过TCP/IP环境中的主机别名连接到Oracle数据库服务

      [Sun NIS]/[DCE CDS]——专用系统用的,在Windows 2000系统环境下不适用

    参考资料:

    [1]https://forums.oracle.com/forums/thread.jspa?threadID=538986

    [2]http://stackoverflow.com/questions/43866/how-sid-is-different-from-service-name-in-oracle-tnsnames-ora

    展开全文
  • 一、数据库 什么是数据库? 数据库就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库。在数据库安装或创建完成之后,参数...
  • 数据库名、实例名、数据库域名、全局数据库名、服务名  这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。   一、数据库名 ...
  • 从事编程的朋友们可能都会遇到连接连接 Oracle 时会出现 oracle url 无效的问题下面 小编就教大家 oracle 查看实例名方法 来帮助各位解决这个问题 oracle 查看实例名 在两个配置文件里面分别是 listener.ora 和 ...
  • 数据库名、实例名、数据库域名、全局数据库名、服务名, 这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。 一、数据库名 什么是...
  • Oracle数据库名、实例名ORACLE_SID、数据库域名、全局数据库名、服务名详解数据库名、实例名、数据库域名、全局数据库名、服务名 , 这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些...
  • oracle实例名,服务名等概念区别与联系 一、数据库名ITPUB个人空间 v{7x6l o /什么是数据库名?ITPUB个人空间*s*R5L V B X Z2w$I数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一...
  • ORACLE单个实例配置多个监听器

    千次阅读 2019-02-27 09:40:18
    对于一个实例oracle数据库,配置多个监听器的实验。 服务版本信息: [oracle@LINUX10 admin]$ lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd...
  • Oracle11g修改实例名和数据库名

    万次阅读 2018-12-12 20:01:25
    分为两个阶段,第一阶段修改实例名sid;第二阶段修改数据库名dbname 将原先的实例名orcl 更改为 isdms 将原先的数据库名orcl 更改为 isdms 第一阶段:修改实例名sid 1、登录数据库查看先前的sid (1)切换到oracle...
  • 这几天,应用程序后台一直报无法取得连数据库接池。但之前从来没有这个问题,迁移到Weblogic后才发生。 之后据了解,我们服务器...配置数据源时 一直使用的是第一个 URL 及 实例名配置完后,连接URL为: jdbc:orac
  • 2,数据库实例名instance_name 3,ORACLE_SID 4,数据库域名 5,全局数据库名 6,数据库服务名SERVICE_NAME二,比喻先打个简单的比方哈,对这些名称有个直接的概念。数据库名就相当于人的身份证号,能唯一标识一个...
  • Oracle 实例化 EM 配置文件时出错

    千次阅读 2013-06-20 22:09:22
    G:\Documents and Settings\Administrator>emca -repos drop EMCA 开始于 2011-4-11 9:58:44 ...EM Configuration ...版权所有 (c) 2003, 2005, Oracle。保留所有权利。 输入以下信息: 数据库
  • linux的oracle修改实例名SID

    千次阅读 2019-06-24 12:00:38
    1、检查原来的数据库实例名 $ echo $ORACLE_SID orcl $ sqlplus / as sysdba > select instance from v$thread; INSTANCE orcl 2、关闭数据库 > shutdown immediate; > exit; 3、修改oracle用户的...
  • Linux 主机问题,导致oracle数据库启动异常
  • 这几天,应用程序后台一直报无法取得连数据库接池。但之前从来没有这个问题,迁移到Weblogic后才发生。 之后据了解,我们服务器...配置数据源时 一直使用的是第一个 URL 及 实例名配置完后,连接URL为: jdbc:orac
  • Oracle 服务名与实例名

    千次阅读 2010-05-11 11:43:00
    " target="_self">数据库名、实例名、数据库域名、全局数据库名、服务名 ,这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。
  • 在8i以前,使用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个...
  • Oracle创建本地数据库实例配置

    万次阅读 2018-03-13 23:00:06
    因为以前一直都是用的mysql的数据库,所以当新工作中用到Oracle数据库的时候,一时还有点不习惯,特别是一直连接的远程数据库,更是麻烦,所以就想在本地创建一个Oracle的数据库,然后导入数据库的备份文件方便使用...
  • oracle实例管理

    千次阅读 2015-11-22 23:36:20
    oracle实例管理oracle实例,其实就是oracle instance,在oracle数据库体系结构中,是组成oracle服务器的重要部分。那为什么需要这个instance呢?专业上的一种说法是说oracle instance是用于和操作系统进行联系的标识...
  • 数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain...
  • 查询oracle数据库的数据库名、实例名ORACLE_SID 连接ORACLE 数据库 SQL> conn risenet/1@//192.168.130.99:1521/risenet 或 sqlplus anxintg/anxintg@//10.7.82.122:1521/orcl 查询表 select * from ESSENWEB.T_...
  • Oracle 服务Service_...在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务,设置繁琐。为了方便并行环境中的设置,引进了Service_name
  • oracle查询数据库名、实例名ORACLE_SID 查询oracle数据库的数据库名、实例名ORACLE_SID 数据库名、实例名、数据库域名、全局数据库名、服务名 ,这是几个令很多朋友容易混淆的概念。 一、数据库...
  • linux/unix 下修改oracle数据库实例名

    千次阅读 2017-09-25 22:31:15
    1、检查原来的数据库实例名 $ echo $ORACLE_SID orcl $ sqlplus / as sysdba > select instance from v$thread; INSTANCE -------------------------------------------------------------------------------- orcl...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,913
精华内容 36,365
关键字:

oracle实例名配置