数据库名(DB_NAME)、数据库实例名(Instance_name、ORACLE_SID) 、数据库域名、全局数据库名、数据库服务名

数据库名(DB_NAME)、数据库实例名(Instance_name、ORACLE_SID) 、数据库域名、全局数据库名、数据库服务名
    在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。
    在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。
一、什么是数据库名(db_name)?
    数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。
    数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下:
            [code:1:1aaf156970]
            .........
            db_name="orcl" #(不允许修改)
            db_domain=dbcenter.toys.com
            instance_name=orcl
            service_names=orcl.dbcenter.toys.com
            control_file=(...............
            .........
            [/code:1:1aaf156970]
    在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。
    其控制参数据分属在不同的pfile中控制着相关的数据库。
    查询当前数据库名
    方法一:    select name from v$database;
            SQL> select name from v$database;
            NAME
            ---------
            ORCL
    方法二:show parameter db
            SQL> --db_name数据库名,db_domain数据库域名
            SQL> show parameter db
            NAME                                 TYPE        VALUE
            ------------------------------------ ----------- ------------------------------
            db_16k_cache_size                    big integer 0
            db_2k_cache_size                     big integer 0
            db_32k_cache_size                    big integer 0
            db_4k_cache_size                     big integer 0
            db_8k_cache_size                     big integer 0
            db_block_buffers                     integer     0
            db_block_checking                    string      FALSE
            db_block_checksum                    string      TRUE
            db_block_size                        integer     8192
            db_cache_advice                      string      ON
            db_cache_size                        big integer 0
            db_create_file_dest                  string
            db_create_online_log_dest_1          string
            db_create_online_log_dest_2          string
            db_create_online_log_dest_3          string
            db_create_online_log_dest_4          string
            db_create_online_log_dest_5          string
            db_domain                            string
            db_file_multiblock_read_count        integer     16
            db_file_name_convert                 string
            db_files                             integer     200
            db_flashback_retention_target        integer     1440
            db_keep_cache_size                   big integer 0
            db_name                              string      orcl
            db_recovery_file_dest                string      c:/oracle/product/10.2.0/flash_recovery_area
            db_recovery_file_dest_size           big integer 2G
            db_recycle_cache_size                big integer 0
            db_unique_name                       string      orcl
            db_writer_processes                  integer     1
            dbwr_io_slaves                       integer     0
            rdbms_server_dn                      string
            standby_archive_dest                 string      %ORACLE_HOME%/RDBMS
            standby_file_management              string      MANUAL
           
            SQL> select value from v$parameter where name='db_name';
            VALUE
            --------------------------------------------------------
            orcl
    方法三:查看参数文件。
二、什么是数据库实例名(instance_name,ORACLE_SID)
    对于数据库实例名的描述有时使用实例名(instance_name)参数,有时使用ORACLE_SID参数。这两个都是数据库实例名,区别如下图:
            [code:1:1aaf156970]
            (ORACLE_SID)
            OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))
            [/code:1:1aaf156970]
    上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,
    instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到,用于对外部连接时使用。
    例如,要和某一个数据库server连接,就必须知道其instance_name,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,
    实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:
            [code:1:1aaf156970]
            db_name="orcl" #(不允许修改)
            db_domain=dbcenter.toys.com
            instance_name=orcl #(可以修改,可以与db_name相同也可不同)
            service_names=orcl.dbcenter.toys.com
            control_file=(...............
            .........
            [/code:1:1aaf156970]
    查询当前数据库实例名
    方法一:select instance_name from v$instance;
            SQL> select instance_name from v$instance;
            INSTANCE_NAME
            ----------------
            orcl
    方法二:show parameter instance
            SQL> show parameter instance;
            NAME                                 TYPE        VALUE
            ------------------------------------ ----------- ---------
            active_instance_count                integer
            cluster_database_instances           integer     1
            instance_groups                      string
            instance_name                        string      orcl
            instance_number                      integer     0
            instance_type                        string      RDBMS
            open_links_per_instance              integer     4
            parallel_instance_group              string
            parallel_server_instances            integer     1
            SQL> select value from v$parameter where name='instance_name';
            VALUE
            --------------------------------------------------------------
            orcl
    方法三:在参数文件中查询。
    而ORACLE_SID参数则是操作系统环境变量,用于和操作系统交互。即,在操作系统中要想得到实例名,就必须使用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等用法相同。
    在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如:
            $ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
    定义方法:
            [code:1:1aaf156970]
            export ORACLE_SID=orcl
            [/code:1:1aaf156970]
    如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。
    还可以用
            [code:1:1aaf156970]
            [oracle@Datacent]$ . oraenv
            [/code:1:1aaf156970]
    来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)
    ORACLE_SID与网络连接
    ORACLE_SID还用于网络连接的oracle服务器标识。当配置oracle主机连接串的时候,就需要指定ORACLE_SID。
    当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAMES。这个概念接下来说明。
   
三、数据库名与实例名之间的关系。
    数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,
    如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。
    但在8i、9i的并行服务器结构(即oracle实时应用集群)中,数据库与实例之间是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。)

四、什么是数据库域名?
    在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,
    数据库域名主要用于oracle分布式环境中的复制。举例说明如:
        全国交通运政系统的分布式数据库,其中:
        福建节点: fj.jtyz
        福建厦门节点: xm.fj.jtyz
        江西: jx.jtyz
        江西上饶:sr.jx.jtyz
    这就是数据库域名。
    数据库域名在存在于参数文件中,他的参数是db_domain.
    查询数据库域名
    方法一:select value from v$parameter where name = 'db_domain';
            SQL> select value from v$parameter where name='db_domain';
            VALUE
            -----------------------------------------------------------
           

    方法二:show parameter domain
            SQL> show parameter domain
            NAME                                 TYPE        VALUE
            ------------------------------------ ----------- ------------------
            db_domain                            string
    方法三:在参数文件中查询。
五、全局数据库名
    全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz
六、什么是数据库服务名?
    从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAMES。
    如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。
    查询数据库服务名
    方法一:select value from v$parameter where name = 'service_names';
            SQL> select value from v$parameter where name='service_names';
            VALUE
            --------------------------------------------------------------
            orcl
    方法二:show parameter service_name
            SQL> show parameter service_name;
            NAME                                 TYPE        VALUE
            ------------------------------------ ----------- ---------
            service_names                        string      orcl
    方法三:在参数文件中查询。
    数据库服务名与网络连接
    从oracle8i开始的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名

发布了18 篇原创文章 · 获赞 16 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/f_zongjian/article/details/5835425