数据库、SID实例、Oracle数据库、sys、system用户

前言

环境:Centos7.9 Oracle12.1.0.2.0

数据库、实例、Oracle数据库、表空间、用户、表

数据库: 指的是固定的、基于磁盘的数据文件、控制文件、日志文件、参数文件等,即使服务器关闭,数据库还是存在的。

instance: instance也就是我们常说的数据库实例,用官方的话来说,实例就是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,既然是进程和内存构成,那么当服务器关闭时,instance也就不存在了,通常一个instance对应一个数据库,但也可以多个instance对于一个数据库,如RAC。为了唯一标识一个instance,我们用sid来唯一标识一个instance的名字。

Oracle: 从广泛的概念来说的,我们讲的Oracle实际上是指整个Oracle软件,包括数据库以及数据库管理系统等全部对象,但从狭义的角度来说,我们平时讲的Oracle数据库又可以指某一个具体的数据库。通常,如果没有明确的区分,我们可以把Oracle当做某个具体的数据库。

表空间: Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。有了数据库,就可以创建表空间了,表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。

用户: Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定默认表空间。

表: 有了数据库,表空间和用户,就可以用自定义的用户在自己的表空间创建表了,有了表,我们可以开发了。

小结:
Oracle=instance(实例)+database(数据库),instance是一堆内存结构(SGA+后台进程),database是一堆存放数据的物理磁盘文件(datafile+redolog+control file+paramter file等)。一个instance在同一时刻只能打开一个database,一个database在同一时刻可以被多个instance打开,如RAC。

通常,在生产环境中,我们会创建一个表空间A,然后创建一个用户B,并指定用户的默认表空间为A,最后由该用户创建表,这样就实现了该用户管理它自己创建的表,而且这些表都是在用户的默认表空间下,这样,不用的用户有自己的默认表空间和表,从前端用户的角度来看,就好似每一个用户都是一个单独的数据库,而实际上只是同一个数据库下不同的表空间摆了。

数据库名、实例名、操作系统环境变量ORACLE_SID、数据库标识符

数据库名:数据库必须要有一个全局数据库名,在创建数据库时指定,数据库名是嵌入在控制文件中的,指定为DB_NAME参数。
实例名:instance_name参数定义了实例名,实例名的唯一标识是sid。
ORACLE_SID:操作系统为了能访问数据库进行,在操作系统层面中指定一个环境变量,ORACLE_SID变量,该变量的值要与instance_name相同,我们可以使用echo $ORACLE_SID查看当前默认的实例名以及export ORACLE_SID=xx切换实例。
数据库标识符:对于客户端而言,如SQLplus或SQL developerder等客户端工具,有时候为了偷懒,我们会顶一个数据库标识符用以简便的链接数据库,如sqlplus sys/manager001@192.168.11.203:1521/orcl,其中,默认的orcl就是数据库标识符,而这个标识符其实就是在监听文件tnsname.ora文件中定义的,这样lsnrctl监听服务就会解析标识符连接到指定的数据库上。

通常情况下,数据库名和实例名是不应该相同的,即DB_NAME的值和ORACLE_SID的值不应该相同,但在人们为了方便,往往把它们设为相同的名字。

注意:更多内容可以参考https://wenku.baidu.com/view/5f1a7b2ced630b1c59eeb5f6.html。

sys用户和system用户

sys:sys是单个数据库的超级用户,sys 用户拥有 dba , sysdba , sysoper 等角色或权限,是单个数据库的权限最高的用户。
system:system用户只能用 normal 身份登陆 Oracle ,除非你对它授予了 sysdba 的系统权限(grant sysdba to system)或者 sysoper 系统权限。
sys、system都是数据库内置的一些高级权限的用户,使用这些高级权限账号登陆就可以在数据库实例中创建表空间,用户,表等对象了。

注意

一个数据库(指一个database文件或sid实例)下可以有多个用户,但只有1个sys用户,以及只有1个system用户,而Oracle软件可以有创建多个数据库,也就是说不同的sid实例下的sys用户是不用的,起码它们的密码可以是不同的,如下所示,每当你创建一个新的数据库时,就需要为该数据库的sys用户指定密码,如下所示:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值