网状DB-->关系DB-->对象DB
关系DB最重要的是:数据完整性,安全性
PK约束,FK约束,check约束(只能男女)
FK约束:子表不能随意插,父表不能随意删
一、数据库名
1.数据库名
$ORACLE_HOME/admin/db_name/pfile/init.ora文件中
数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。
Oracle启动时,init.ora的DB_NAME与控制文件中的数据库名不一致,将导致数据库启动失败,返回ORA-01103错误。
2.查询当前数据库名
方法一: select name from v$database;
方法二:show parameter db
方法三:查看参数文件
二、数据库实例名
1.数据库实例名的概念(instance_name)
实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,
它根本不需要一个与其相关联的数据库,没有任何数据文件也可以启动实例。下面是Oralce的启动过程:
sqlplus / as sysdba
sql>startup nomount #启动了一个实例,现在SGA分配了,进程在运行,除数据库所有的东西都启动了
sql>alter database mount #利用控制文件(init.ora文件中指定)定位重作文件、数据文件、临时文件
sql>alter database open #数据库可供任何人通过这个实例访问。
大家访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。
2.实例和数据库
实例和数据库之间的区别如下:
(1)实例是临时的,它只在相关的进程和内存集合存在时存在;数据库是永久的,只要文件存在它就存在
(2)一个实例在其生存期内可安装和打开单个数据库;数据库可以被很多实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(RAC)
顺便提一下RAC,简单来说RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每天机器运行一个实例,每个实例都打开同一个数据库(这个是用磁盘共享技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。
数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。例如,要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行) 。
3.查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
三、ORACLE_SID
在实际中,对于数据库实例的标识有时使用实例名,有时使用ORACLE_SID,它们有什么区别呢?
(ORACLE_SID)
OS<----------------> ORACLE 数据库 <--------(instance_name(实例名))
上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到;而ORACLE_SID参数则是操作系统环境变量,与ORACLE_BASE、ORACLE_HOME等用法相同,用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在winnt平台,是“TNS:协议适配器错误”。
四、数据库域名与全局数据库名
1.概念与联系
使用数据库名(da_name)对一个数据库进行唯一标识,这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了db_domain参数,这样在数据库的标识是由db_name和db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将db_name和db_domain两个参数用‘.’连接起来,表示一个数据库,并将该数据库的名称称为global_name,即它扩展了db_name。db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。
数据库域名(db_domain):定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。
全局数据库名(global_name):对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法标识数据库。该值是在创建数据库时决定的,缺省值为db_name. db_domain。在以后对参数文件中db_name与db_domain参数的任何修改不影响global_name的值,如果要修改Global_name,只能用alter database rename global_name to <db_name.db_domain>命令进行修改,然后修改相应参数。
2.查询数据库域名
方法一:select value from v$parameter where name = 'db_domain';
方法二:show parameter domain
方法三:在参数文件中查询
3.例子
全国交通GIS系统的分布式数据库,其中:
吉林节点: jl.jtgis
吉林长春节点: cc.jl.jtgis
河北节点: hb.jtgis
河北石家庄节点:sjz.hb.jtgis
这些就是数据库域名,数据库域名在存在于参数文件中,她的参数是db_domain.
全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:orcl.jl.jtgis
五、数据库服务名
该参数是oracle8i新引进的。在8i以前,我们用SID来表示数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多网络服务名,设置繁琐。为了方便并行环境中的设置,引进了service_name参数。该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。
该参数的缺省值为db_name.db_domain,即等于global_name.如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。一个数据库可以对应多个service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即service_name 不必与SID一样。
从Oracle8i开始的oracle网络组件,数据库与客户端连接的主机字符串使用的是数据库服务名。之前用的是SID,即数据库实例名。
查询数据库服务名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
六、网络服务名
网络服务名(net_service_name),又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。网络服务名被记录在tnsnames.ora文件中。
可以通过netmgr来新建网络服务名。
网络服务名是从客户端的角度出发,当客户端连接远程数据库或其他服务时,可以指定网络服务名。因此需要使用一个或多个命名方法将此Net服务名解析为连接数据库或其他服务的连接描述符,看下面:
[本地]——将存储在本地客户机的tnsnames.ora文件中的网络服务名解析为连接描述符。
[Oracle Names]——由Oracle名字服务器提供为网络上的每个Oracle Net服务提供解析方法
[主机名]——通过TCP/IP环境中的主机别名连接到Oracle数据库服务
[Sun NIS]/[DCE CDS]——专用系统用的,在Windows 2000系统环境下不适用
RAC(Real Application Cluster,真正应用集群)是Oracle9i新技术,支持网格计算环境的核心技术。
解决了传统DB的一个重要问题:高性能、高可伸缩性与低...
分享到:
相关推荐
《Oracle经典书籍之---ORACLE-RAC》是一本专门探讨Oracle Real Application Clusters(RAC)技术的专业书籍,英文原版提供了深入的理论知识和实践经验。Oracle RAC是Oracle数据库的一项重要特性,它允许多个数据库...
通过以上内容的梳理,可以看出《全新Oracle-JDE培训资料》是一份内容丰富、结构清晰的培训指南,不仅涵盖了理论知识,还有实际操作指导,非常适合那些希望深入学习和掌握Oracle-JDE系统的用户。
"oracle-job-master"这个文件名可能指的是与Oracle数据库管理和维护相关的作业或任务,可能包含练习题目、解答示例、实战项目等,旨在帮助学习者将理论知识应用于实际操作中,提高动手能力。通过这些练习,学习者...
在数据库设计方面,理解实体关系模型(ER模型)和范式理论(1NF,2NF,3NF,BCNF等)是必要的。良好的数据库设计能够提高数据的一致性,减少数据冗余,从而提升系统的整体性能。 最后,了解Oracle的最新版本特性,...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,尤其在企业级应用中占据着重要地位。SQL(Structured Query ...记住,实践是检验学习效果的最好方式,理论结合实际操作才能真正掌握Oracle SQL。
文章引用了几本关于Oracle数据库的专著和期刊文章,这些资源提供了更深入的理论知识和技术指导,有助于读者理解数据库管理和故障排除。 总之,面对Oracle-01033系列错误,关键在于理解错误原因,采取适当的恢复步骤...
10. **数据库设计**:学习如何进行数据库设计,包括需求分析、ER模型、范式理论以及物理设计。 通过这个"Oracle 10g教程",初学者可以逐步掌握这些知识点,为自己的IT职业生涯打下坚实的基础。同时,由于Oracle...
目录:网盘文件永久链接 存储HCIE---理论01 存储HCIE---理论02 存储HCIE---理论03 存储HCIE---理论04 存储HCIE---理论05 存储HCIE---理论06 存储HCIE---理论07上 ...存储HCIE-5--oracle备份实验
本书通过详细的理论讲解和丰富的实践示例,帮助读者全面掌握Oracle SQL的各项技能。无论是想要深入了解Oracle SQL的基本原理,还是希望提高自己的数据库设计能力,这本书都能提供有价值的指导。
Oracle数据库是全球广泛使用的...通过这些笔记,你可以深入了解Oracle数据库的实际操作,加深理论知识的理解,并提升数据库管理技能。在实际操作中,记得随时实践并结合错误来加深印象,因为实践是检验理论的最好方式。
#### 二、理论基础 为了理解Oracle数据库是如何实现Map-Reduce的,我们需要深入了解其核心技术——Pipeline Table Functions。这些功能自Oracle 9i版本起被引入,并作为扩展数据库内核的核心组件之一。以下是对该...
这个"某培训机构的Oracle-PPT.rar"文件很可能包含了一系列关于Oracle数据库的学习资料,包括理论知识、操作指南、案例分析等内容。以下是对Oracle数据库的一些核心知识点的详细阐述: 1. **Oracle数据库概述**:...
"Oracle-SQL.zip_oracle_practice"这个压缩包显然聚焦于Oracle SQL的实践应用,通过“经典Oracle SQL查询练习.pdf”这个文档,我们可以期待深入学习和提升SQL在Oracle环境下的使用技巧。 首先,Oracle SQL的基础...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据着核心地位。DBA(Database Administrator)即数据库管理员,负责Oracle系统的管理、维护、优化和故障排除。本篇文章将根据提供的...
13. **数据库设计**:关系模型,范式理论,ER图设计,以及如何进行数据库规范化。 14. **Oracle 9i新特性**:可能包括此版本特有的增强功能,如分区、物质化视图、自动存储优化等。 通过这些笔记,学习者可以系统...
Oracle DBA面试题通常会涵盖数据库管理、性能优化、故障排查、安全性以及高可用性等多个领域。以下是一些可能在面试中出现的关键知识点: ...准备面试时,除了理论知识,还要注重实践经验的分享和问题解决能力的展示。
《SAP Database Administration with Oracle - 2008》是针对使用Oracle数据库进行SAP系统管理的专业指南。...书中的案例研究和实际操作指导将使理论知识与实战经验相结合,为专业数据库管理员提供宝贵的参考资料。
这本书不仅包含了理论知识,还提供了丰富的实践建库脚本来帮助读者巩固学习。 首先,PL/SQL是Oracle数据库中的过程式语言,它扩展了SQL,允许创建存储过程、函数、触发器和包等数据库对象。通过这些对象,开发者...