Home >Database >Mysql Tutorial >数据库名、数据库实例名与数据库域名

数据库名、数据库实例名与数据库域名

WBOY
WBOYOriginal
2016-06-07 15:29:352765browse

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 数据库名、数据库实例名与数据库域名 一、数据库名 什么是数据库名? 数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

    数据库名、数据库实例名与数据库域名

    一、数据库名

    什么是数据库名?

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

    DB_NAME=myorcl

    …

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

    www.2cto.com

    数据库名的作用

    数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。

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

    winnt: d:\oracle\product\10.1.0\oradata\DB_NAME\…

    Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/…

    pfile:

    winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.ora

    Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora

    跟踪文件目录:

    winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/…

    另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。

    www.2cto.com

    同样,修改数据库结构的语句alter database, 当然也要指出要修改的数据库的名称。

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

    还有在备份或恢复数据库时,都需要用到数据库名。

    总之,数据库名很重要,要准确理解它的作用。

    查询当前数据名

    方法一:select name from v$database;

    方法二:show parameter db

    方法三:查看参数文件。

    修改数据库名

    前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:

    1.关闭数据库。

    2.修改数据库参数文件中的DB_NAME参数的值为新的数据库名。

    3.以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)

    二、数据库实例名

    什么是数据库实例名?

    数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。

    数据库名和实例名可以相同也可以不同。

    在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。

    查询当前数据库实例名

    方法一:select instance_name from v$instance;

    方法二:show parameter instance

    方法三:在参数文件中查询。

    数据库实例名与ORACLE_SID

    虽然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量。 ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。在winnt不台, ORACLE_SID还需存在于注册表中。

    且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在winnt平台,是“TNS:协议适配器错误”。

    数据库实例名与网络连接

    数据库实例名除了与操作系统交互外,还用于网络连接的oracle服务器标识。当你配置oracle主机连接串的时候,就需要指定实例名。当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAME。这个概念接下来说明 。

    三、数据库域名

    什么是数据库域名?

    在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。举例说明如:

    全国交通运政系统的分布式数据库,其中:

    福建节点: fj.jtyz

    福建厦门节点: xm.fj.jtyz

    江西: jx.jtyz

    江西上饶:sr.jx.jtyz

    这就是数据库域名。

    数据库域名在存在于参数文件中,他的参数是db_domain.

    查询数据库域名

    方法一:select value from v$parameter where name = 'db_domain';

    方法二:show parameter domain

    方法三:在参数文件中查询。

    全局数据库名

    全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz

    四、数据库服务名

    什么是数据库服务名?

    从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。

    如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。

    查询数据库服务名

    方法一:select value from v$parameter where name = 'service_name';

    方法二:show parameter service_name

    方法三:在参数文件中查询。

    数据库服务名与网络连接

    从oracle8i开如的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名

    创建Oracle数据库(以Oracle10g为例)

    有两种创建数据库的方式,一种是以命令行脚本方式,即手动方式创建;另一种是利用Oracle提供的数据库配置向导来创建。本篇主要介绍在Unix和Windows下以命令行脚本方式创建Oracle数据库。

    一个完整的数据库系统,应包括一个物理结构、一个逻辑结构、一个内存结构和一个进程结构,如果要创建一个新的数据库,则这些结构都必须完整的建立起来。

数据库名、数据库实例名与数据库域名

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn