Oracle数据库基本理论的整理

本文详细解释了数据库名称、实例名、域名和服务名的概念及其作用。数据库名称是数据库的唯一标识,实例名用于操作系统交互,服务名是数据库自身概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数据库
数据库就是存储在磁盘上的文件,这些文件中保存的数据有一定的物理结构和逻辑结构。

2.数据库名(概念)

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

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

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

在已创建数据之后,修改数据库名。步骤如下:

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

查询当前数据库名

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

3.数据库实例名

数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name。数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。一个数据库对应多个实例,同一时间内用户只和一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行)。要和一个数据库服务器相连,必须知道其实例名,光知道数据库名是没用的。

INSTANCE_NAME与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:协议适配器错误”。

4.数据库域名与服务名

数据库域名:类似网络域名的概念,(所以一个数据库名db_name在不同的域里可以相同)在安装时确定(全局数据库名中填写),定义规则也相似于网络定义。参数文件中db_domain,没有该项则全局数据库名和数据库名相同。

全局数据库名:=db_name+db_domain

数据库服务名(SERVICE_NAMES);这可不是你在客户端配置的网络服务的概念,这是数据库本身的念。

SERVICE_NAMES=全局数据库名(GLOBAL_DB_NAME)=db_name+db_domain

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值