Oracle相关概念
数据库名、实例名、数据库域名、全局数据库名、服务名
一、数据库名
(一)、 什么是数据库名
数据库名~ 一个数据库的标识 ~ 用参数db_name表示
一机器多全数据库 ~ 每一个数据库一个数据库名
数据库安装或者创建完成后 ~ 参数db_name被写入参数文件
db_name=myorcl
创建数据库时应考虑好数据库名 ~ 创建完后,数据库名不宜修改~修改很麻烦
因为,数据库名还会~写入控制文件中,~ 控制文件二进制型式存储的~ 用户无法更改控制文件的内容
假设用户修改了参数文件的db_name ~ 但oracle启动时,由于参数文件中的db_name与控制文件的数据库名不一致~
导致数据库启动失败,~返回ora-01103错误
(二)、 数据库名的作用
数据库名 ~在安装数据库 、 创建新的数据库、 创建数据库控制文件、 修改数据结构、 备份与恢复数据时~
都需要用到
很多oracle安装文件目录~ 与数据库名相关 如:
winnt: d:/oracle/product/10.1.0/admin/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/...
另外, 在创建数据时~ create database 命令中 ~ 数据库名也要与参数文件中 db_name一致 ~否则将产生错误
同样,修改数据库结构语句~alter database, 也要指出要修改的 数据库名称
如果控制文件损坏或丢失, ~ 数据库将不能加载~ 重建控制文件~
方法是以nomount方式启动实例~ 然后以create controlfile 命令创建控制文件,~当然命令中也是指db_name
备份或恢复数据库时, 都要用到数据库名 ~ 数据库名很重要
1. 查询当前数据库名
2. 修改数据库名
二、 数据库实例名
(一)、 什么是数据库实例名
数据库实例名 ~ 用于和操作系统进行联系的标识 ~
数据库和操作系统之间的交互 ~ 用的是数据库实例名
实例名也被写入参数文件 ~ 参数instance_name ~
在winnt平台~ 实例名同时也被写入注册表。
数据库名和实例名可以相同也可以不同。
一般情况~ 数据库名 和实例名 是一对一的关系 ~
如果,在oracle并行服务器架构(即oracle实时应用集群),~ 数据库名和实例名是一对多的关系
1. 查询当前数据名
2. 数据库实例名 与oracle_sid
虽然两者都表示oracle实例,但两者是有区别的。
instance_name 是oracle数据库参数~ oracle_sid是操作系统的环境变量。
oracle_sid 用于与操作系统交互 ~ 也就是说, 从操作系统角度 访问实例名 ~必须通过oracle_sid。
在winnt平台, ~oracle_sid 还需存在于注册表中。
oracle_sid 必须与instance_name的值一致~ 否则将收到一个错误
在unix平台, 是“oracle not available” ~ 在winnt平台, 是“tns: 协议适配器错误”
(二)、 数据库实例名与网络连接
三、数据库域名
(一)、什么是数据库域名
四、全局数据库名
全局数据库名 = 数据库名+数据库域名, 如前述福建节点的全局数据库名是:oradb.fj.jtyz
五、数据库服务名
数据库服务名,~参数名是service_name。
如果数据库有域名,则数据库服务名 ~ 就是全局数据库名 ~
否则~ 数据库服务名与 数据库名相同
1. 查询当前数据库服务名
2. 数据库服务名与网络连接
从oracle8i开始,~oracle 网络组件、 数据库与客户端的连接主机串~使用数据库服务名~
之前用的是 oracle_sid, 即数据库实例名。