数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下:
DB_NAME=myorcl
在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以 二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文 件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。
数据库名是在安装数据库(例如安装时默认的orcl)、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。
一个库会在windows的服务中生成一个oracle_service.
查询当前数据名
方法一: select name from v$database;
方法二:show parameter db
一个Oracle实例有一系列的后台进程和内存结构组成。一个数据库可有多个实例(只有通过实例才能对数据库进行操作)。
数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。
数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。
查询当前数据库实例名:
方法一:select instance_name from v$instance;
方法二:show parameter instance
在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。
数据库域名在存在于参数文件中,他的参数是db_domain
查询数据库域名
方法一:select value from v$parameter where name = 'db_domain';
方法二:show parameter domain
全局数据库名=数据库名+数据库域名
一般情况下我们开发中用到的数据库是单数据库实例,就是oracle中只有一个库。这个时候大部分都有:数据库服务名 = 全局数据库名 = 数据库名[+ 数据库域名] = SID
用户是在实例下建立的。不同实例可以建相同名字的用户;同一个实例可以创建不同的用户。
A Schema is a collection of database objects(used by a user);
Schema为数据库对象的集合。为了区分各个集合,我们需要给这个集合起名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个Schema。Schema里包含了各种数据库对象:table,views,sequence,stored procedures,indexes,clusters and database links。
一个用户一般对应一个Schema,该用户的Schema名等于用户名,并作为该用户的缺省Schema。
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
表空间是一个用来管理数据存储逻辑概念;表空间只是和数据文件(ORA或者DBF文件)发生关系;数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是存在于某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间中,就不能删除这个文件;如果要删除某个数据文件,只能删除其所属于的表空间才行。
Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间可以被多个用户授权访问,每个用户可以创建多个表。