oracle中的数据库和数据库实例

 

oracle中的数据库和数据库实例

 

以前对oracle学习基础不扎实,现在找了一篇文章,了解一下。

oracle的体系结构简单来分的话,分成2部分--数据库(database)和数据库实例(database instance)。

这是个容易搞糊涂的概念,在SQL Server里面,你在你的机器上安装一次SQL Server,那么你就等于安装了一次数据库实例,在这个实例中可以以包含很多数据库,也就是数据库:实例=N:1。

但是在oracle中就不是这样的。oracle中的数据库和数据库实例=1:N(这个后面说明)

概念:

数据库:顾名思义,简单理解就是数据的集合,数据的表现和集中就是数据库文件的集合。在oracle中数据库文件有很多种,最常见的有参数文件、数据文件、临时文件、控制文件和重做日志文件。另外还有一些跟踪文件、警告文件、转储文件之类的。

数据库实例:它就是一组oracle的后台进程/线程和共享内存区域的组合,这些内存由计算机上的进程/线程使用。而这些进程是可以用来操作数据库的。

关联:

一般情况下,数据库和实例是一对一的。服务器里有2个数据库,就对应有2个实例名。

另外情况就是在真正应用集群的时候(rac)下,这个时候有多个实例同时打开一个数据库。

一台机器上拥有多个数据库,任意时间点只有一个实例能访问任意有一个数据库。

衍生:

数据库名(db_name):它是一个数据库内部的名字,不和外键有联系,用以区分数据的内部标识,oracle数据库的内部标识,以二进制形式存储于数据库控制文件内部的参数(db_name),安装或者创建后不得修改。在创建数据库,修改数据库结构(alter database xxxx的时候),进行备份等都需要用到,数据库的物理结构目录很多都用到了数据库名。

查询数据库名方法:

1 select name from v$database;

2 show parameter db_name;

3.去参数文件里面查找..

数据库实例名(instance_name):

1。它是作用与数据库和操作系统(os)之间的联系,数据库和外部的联系都靠它。外部与数据库服务的链接并不是通过数据库名,而是通过这个实例名来进行联系的。它存在于参数文件中(instance_name),创建后可以修改。

我们平时说的 oracle_sid也常常用来表示数据库实例名。它与instance_name的区别在于它是系统的环境变量,而后者是oracle数据库的内部参数。操作系统要得到实例名,必须通过这个oracle_sid来得到。它在数据库创建完后就被自动定义成与数据库实例名相同的值。.

2。它还作用于对外网络的连接。配置网络连接就是配置网络连接串。根据网络驱动版本的不同,连接串的构成也不同。较老版本一般使用实例名构成,较新的版本一般使用数据库服务名构成。--后面介绍数据库服务名

全局数据库名(db_domain):数据库名+数据库域名组合而成,在数据远程的时候必须使用全局数据库名。

这里涉及到一个数据库域名的概念,它类似网络中域名,使得数据库的取名在整个网络环境中唯一。

使用数据库域名的必要条件:

1.分布环境下,进行数据的远程传输。

2.在同一网络环境下,数据库相同。

查询域名方法:

1.select value from v$parameter where name='db_domain';

2.show paramter db_domain;

3.在参数文件里面查询

数据库服务名(service_name):它的值首先取值于是否使用了数据库域名,如果没有域名,则值为数据库名,反之,则为全局数据库名。

查询数据库服务名的方法:

1 select value from v$parameter where nane='service_name';

2.show parameter service_name;

3.查看参数文件

查询数据库实例名方法:

1 select instance_name from v$instance;

2 show parameter instance_name;

3 在参数文件里面查看 instance_name

         ----------------------------------------------------------------------------------------------------------------------转自“独自、停留”的百度空间      

阅读更多
个人分类: oracle数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭