当前位置: 首页 > 图文教程 > 数据库 > Oracle > Oracle的几个概念:数据库名,全局数据库名,SID,实例,命名空间,schema

Oracle
Oracle数据库技术(32)
Oracle数据库技术(33)
Oracle数据库技术(34)
Oracle数据库技术(35)
Oracle数据库技术(36)
Oracle数据安全面面观
Oracle数据操作和控制语言详解
Oracle数据库数据对象分析
解析Oracle 8i/9i的计划稳定性
使用Oracle实现实时通信
Oracle数据库中索引的维护
Oracle数据库游标使用大全
Oracle9i中监视索引的使用
在Oracle9i中使用多种Block Size
监控Oracle数据库的常用shell脚本
Performance Improvement Tips for Oracle on UNIX
Raw Partitions and Windows NT
How to use OS commands to diagnose Database Performance issues?
Raw Devices and Oracle - 20 Common Questions and Answers
Monitor Oracle Resource Consumption in UNIX

Oracle的几个概念:数据库名,全局数据库名,SID,实例,命名空间,schema


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 198 ::
收藏到网摘: n/a

常被oracle的几个概念搞得很晕,和公司做pl/sql的同事讨论后,又到网上搜索下,现将个人对这几个概念的理解做个笔记:
先通俗的解释下数据库这个概念,数据库就是存储在磁盘上的文件,这些文件中保存的数据有一定的物理结构和逻辑结构。
数据库名 就是数据库的名称标识,如myOracle, 这种叫法一般只适用于单机;
全局数据库名 就是数据库处于一个网络中的名称标识。比如数据库宿主机的域为mydomain,
则数据库的全局数据库名为myOracle.mydomain;
实际上myOracle和myOracle.mydomain两者指的是同一个数据库.
即:全局数据库名 = 数据库名+"."+网络位置(宿主机所在的域)
设定全域数据库名称
Oracle9i 的全域数据库名称由「数据库名称」与「网域名称」所组成,其中「数据库名称」设定于 DB_NAME 起始参数,而「网域名称」则是设定于 DB_DOMAIN 参数。这两个参数合并之后就可以在网际网络上唯一识别每一个 Oracle9i 数据库。举例来说,假设我们欲建立的 Oracle9i 数据库之全域数据库名称为 mydb.uuu.com.tw,那么可在起始参数档内设定下列两参数:
DB_NAME = mydb
DB_DOMAIN = uuu.com.tw
 
 
 
Tips:
您可以执行 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 = Oracle实例
SID是Oracle实例的唯一名称标识,
用户去访问数据库,实际上是向某一个Oracle实例发送请求,oracle实例负责向数据库获取数据。
Oracle实例 = 内存结构+后台进程,所以Oracle实例是临时性的;
可以通过startup nomount去启动实例,但是注意这时Oracle数据库并没有启动,需要用open去启动数据库;
一个实例只能对应一个数据库,一个数据库可以用多个实例;
命名空间,有点复杂。
命名空间定义了一组对象类型,在命名空间里,对象的名字必须是唯一的,当然,在不同的命名空间里,是可以使用相同的的名字的。
下面的对象类型共享同一个命名空间:
• 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是基于数据库的.