先通俗的解释下数据库这个概念,数据库就是存储在磁盘上的文件,这些文件中保存的数据有一定的物理结构和逻辑结构。
数据库名 就是数据库的名称标识,如myOracle, 这种叫法一般只适用于单机;
全局数据库名 就是数据库处于一个网络中的名称标识。比如数据库宿主机的域为mydomain,
则数据库的全局数据库名为myOracle.mydomain;
实际上myOracle和myOracle.mydomain两者指的是同一个数据库.
即:全局数据库名 = 数据库名+"."+网络位置(宿主机所在的域)
全局数据库名:主要用于在分布式数据库 系统中,区分不同的数据库,由数据库名和数据库域组成,格式为“数据库名.数据库域”。例如上海的数据库可以命名为demo.shanghai.com,
北京的数据库可以命名为demo.beijing.com,即时数据库名相同,但是数据库域不同,所以也能区分开。第一个“.”之前的部分被认为是“数据库名”而保存在DB_NAME初始化参数中,
之后的部分就是“数据库域”被保存在DB_DOMAIN中。
设定全域数据库名称Oracle9i 的 全域数据库名称由「数据库名称」与「网域名称」所组成,其中「数据库名称」设定于 DB_NAME 起始参数,而「网域名称」则是设定于 DB_DOMAIN 参数。这两个参数合并之后就可以在网际网络上唯一识别每一个 Oracle9i 数据库。举例来说,假设我们欲建立的 Oracle9i 数据库之 全域数据库名称为 mydb.uuu.com.tw,那么可在起始参数档内设定下列两参数:DB_NAME = mydbDB_DOMAIN = uuu.com.tw
您可以执行 ALTER DATABASE RENAME GLOBAL_NAME 指令更改 Oracle9i 数据库的全域数据库名称;在您更改 DB_NAME 与 DB_DOMAIN 这两个起始参数后必须将 Oracle9i 数据库重新激活才会生效。此外,控制档也必须重新建立。
关于
DB_NAME
起始参数
DB_NAME必须是文字字符串,且不能超过 8 个字符。在建立数据库的过程中,
DB_NAME设定值会记录在资料文件、控制文件、以及重置日志文件之中。如果您激活 Oracle9i Instance 的时候,起始参数档内设定的
DB_NAME不同于控制文件内所纪录的,那么数据库将无法激活。
关于
DB_DOMAIN
起始参数
DB_DOMAIN通常是数据库主机所在位置的网域名称。如果您欲建立的数据库将加入分布式数据库运算环境,请特别注意此参数的设定。
SID:是system inentifier的英文简写,主要用于区分同一台计算机上的同一个数据库的不同例程。
全局数据库是外部区分的名称,SID是内部区分的名称。
SID = Oracle实例
SID是Oracle实例的唯一名称标识,
用户去访问数据库,实际上是向某一个Oracle实例发送请求,oracle实例负责向数据库获取数据。
Oracle实例 = 内存结构+后台进程,所以Oracle实例是临时性的;
可以通过startup nomount去启动实例,但是注意这时Oracle数据库并没有启动,需要用open去启动数据库;
一个实例只能对应一个数据库,一个数据库可以用多个实例;
数据库字符集:选择数据库所使用的字符集。
在进行全局数据库名和SID输入的时候,在取名上尽量表现出二者的区分和联系。如全局数据库名为oamis,那么我们可以把SID取名为oamissid。即SID采用数据库名后面加sid的方式来表示两者的联系和区别。
命名空间,有点复杂。
命名空间定义了一组对象类型,在命名空间里,对象的名字必须是唯一的,当然,在不同的命名空间里,是可以使用相同的的名字的。
下面的对象类型共享同一个命名空间:
• Tables
• Views
• Sequences
• Private synonyms
• Stand-alone procedures
• Stand-alone stored functions
• Packages
• Materialized views
• User-defined types
因此,如果数据库中有一个表叫做myObject1,那么就不能再创建一个叫做myObject1的视图,至少,在一个schema中是不可能出现这种现象的;
下面的对象类型有各自的命名空间:
• Indexes
• Constraints
• Clusters
• Database triggers
• Private database links
• Dimensions
所以你可以创建一个叫做myObject1的索引,即使在相同的schema中;
不受Schema局限的对象类型(Non schema objects)有它们自己的命名空间,如下:
• User roles
• Public synonyms
• Public database links
• Tablespaces
• Profiles
• Parameter files (PFILEs) and server parameter files (SPFILEs)
所以两个Non-schema objects可以用相同的名字。
Schema是基于用户的, 在数据库中创建一个用户,就创建了一个和用户名相同的Shema。
Namespace是基于数据库的.