Oracle数据库的实例、表空间、⽤户、表之间关系
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。
1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);
不灭之王波罗丁称号怎么做2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。
在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。Oracle有⼀个很⼤的内存快,成为全局区(SGA)。
⼀、数据库、表空间、数据⽂件
1、数据库
数据库是数据集合。Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。
通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。
我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:
全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。
启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。
查询当前数据库名:
select name from v$database;
古代四大美女的图片2、数据库实例
⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。
其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。就像Java中new出来的实例对象⼀样。2009感动中国人物
我们访问Oracle都是访问⼀个实例,但这个实例如果关联了数据库⽂件,就是可以访问的,如果没有,就会得到实例不可⽤的错误。
实例名指的是⽤于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的。
查询当前数据库实例名:邓超的个人资料
select instance_name from v$instance;
数据库实例名(instance_name)⽤于对外部连接。在操作系统中要取得与数据库的联系,必须使⽤数据库实例名。⽐如我们作开发,要连接数据库,就得连接数据库实例名:
jdbc:oracle:thin:@localhost:1521:orcl(orcl就为数据库实例名)
⼀个数据库可以有多个实例,在作数据库服务集的时候可以⽤到。
3、表空间
Oracle数据库是通过表空间来存储物理表的,⼀个数据库实例可以有N个表空间,⼀个表空间下可以有N张表。
有了数据库,就可以创建表空间。
表空间(tablespace)是数据库的逻辑划分,每个数据库⾄少有⼀个表空间(称作SYSTEM表空间)。为了便于管理和提⾼运⾏效率,可以使⽤⼀些附加表空间来划分⽤户和应⽤程序。例如:USER表空间供⼀般⽤户使⽤,RBS表空间供回滚段使⽤。⼀个表空间只能属于⼀个数据库。
创建表空间语法:
Create TableSpace 表空间名称 DataFile 表空间数据⽂件路径 Size 表空间初始⼤⼩ Autoextend on
如:
create tablespace db_test datafile 'D:oracleproduct10.2.0userdatadb_test.dbf' size 50m autoextend on;
查看已经创建好的表空间:
select default_tablespace, temporary_tablespace, d.username from dba_users d
4、⽤户
Oracle数据库建好后,要想在数据库⾥建表,必须先为数据库建⽴⽤户,并为⽤户指定表空间。
上⾯我们建好了数据库和表空间,接下来建⽤户:
汽车保险一般买哪些变焦是什么意思创建新⽤户:
CREATE USER ⽤户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间(默认USERS) TEMPORARY TABLESPACE 临时表空间(默认TEMP)
如:
CREATE USER utest IDENTIFIED BY utestpwd DEFAULT TABLESPACE db_test TEMPORARY TA
BLESPACE temp;(这⾥临时表空间不能使⽤我们创建的db_test,不知为何?)
有了⽤户,要想使⽤⽤户账号管理⾃⼰的表空间,还得给它分权限:
GRANT CONNECT TO utest; GRANT RESOURCE TO utest; GRANT dba TO utest;--dba为最⾼级权限,可以创建数据库,表等。
查看数据库⽤户:
select * from dba_users;
5、表
有了数据库,表空间和⽤户,就可以⽤⾃定义的⽤户在⾃⼰的表空间创建表了。有了表,我们可以开发了。
从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的⽅案下看到的许多类似⽤户名的节点,这些类似⽤户名的节点其实就是⼀个schema,schema⾥⾯包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
⼀个⽤户⼀般对应⼀个schema,该⽤户的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 * p。在数据库中⼀个对象的完整名称为
schema.object,⽽不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为⽤户的缺省schema。这就像⼀个⽤户有⼀个缺省的表空间,但是该⽤户还可以使⽤其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论