Oracle数据库、实例、⽤户、表空间、表之间的关系
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。
1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);
2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。
在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。Oracle有⼀个很⼤的内存快,成为全局区(SGA)。
⼀、数据库、表空间、数据⽂件
1、数据库
数据库是数据集合。Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。
通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。
我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:
oracle数据库怎么查询表
全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。
启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。
查询当前数据库名:
select name from v$database;
2、数据库实例
⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。
其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。就像Java中new出来的实例对象⼀样。
我们访问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:\oracle\product\10.2.0\userdata\db_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 TABLESPACE temp;(这⾥临时表空间不能使⽤我们创建的db_test,不知为何?)
有了⽤户,要想使⽤⽤户账号管理⾃⼰的表空间,还得给它分权限:
GRANT CONNECT TO utest;
GRANT RESOURCE TO utest;
GRANT dba TO utest;--dba为最⾼级权限,可以创建数据库,表等。
查看数据库⽤户:
select*from dba_users;
5、表
有了数据库,表空间和⽤户,就可以⽤⾃定义的⽤户在⾃⼰的表空间创建表了。有了表,我们可以开发了。
数据库:
Oracle数据库是数据的物理存储。这就包括(数据⽂件ORA或者DBF、控制⽂件、联机⽇志、参数⽂件)。其实Oracle数据库的概念和其它数据库不⼀样,这⾥的数据库是⼀个操作系统只有⼀个库。可以看作是Oracle就只有⼀个⼤数据库。
实例:
⼀个Oracle实例(Oracle Instance)有⼀系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。⼀个数据库可以有n个实例。
⽤户:
⽤户是在实例下建⽴的。不同实例可以建相同名字的⽤户。
表空间:
表空间是⼀个⽤来管理数据存储逻辑概念,表空间只是和数据⽂件(ORA或者DBF⽂件)发⽣关系,数据⽂件是物理的,⼀个表空间可以包含多个数据⽂件,⽽⼀个数据⽂件只能⾪属⼀个表空间。
数据⽂件(dbf、ora):
数据⽂件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某⼀个或者多个数据⽂件中。⽽⼀个表空间可以由⼀个或多个数据⽂件组成,⼀个数据⽂件只能属于⼀个表空间。⼀旦数据⽂件被加⼊到某个表空间后,就不能删除这个⽂件,如果要删除某个数据⽂件,只能删除其所属于的表空间才⾏。
注:
表的数据,是有⽤户放⼊某⼀个表空间的,⽽这个表空间会随机把这些表数据放到⼀个或者多个数据⽂件中。由于oracle的数据库不是普通的概念,oracle是有⽤户和表空间对数据进⾏管理和存放的。但是表不是有表空间去查询的,⽽是由⽤户去查的。因为不同⽤户可以在同⼀个表空间建⽴同⼀个名字的表!这⾥区分就是⽤户了!
关系⽰意图:
理解1:
Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个⽤户(同时⽤户也属于表空间对应的实例)和数据库⽂件,⽤户可以创建多个表(每个表随机存储在⼀个或多个数据库⽂件中),如下图:
理解2:
理解1MS有误。
实例下有和,授权访问,是管理的,经授权在中创建,随机存储到不同的中。如下图所⽰:
操作1:
安装Oracle后会有默认的实例,即ORCL。⼀般不创建多个实例,在默认实例下创建表空间和⽤户等。
1,运⾏CMD进⼊DOS界⾯,⾸先输⼊:sqlplus,回车;再输⼊:sys/sys as sysdba,回车,即进⼊“SQL〉”操作状态。
2,输⼊:CREATE TABLESPACE 表空间名称 LOGGING DATAFILE 'c:\表空间数据⽂件.ora' SIZE 500M autoextend on next 200m maxsize 2048m;,表空间创建完成。
3,输⼊:CREATE USER ⽤户名称 PROFILE default IDENTIFIED BY ⽤户密码 DEFAULT TABLESPACE 授权访问的表空间名称TEMPORARY TABLESPACE temp ACCOUNT UNLOCK;,⽤户创建完成,并授权⽤户访问某表空间。
具体操作如下图所⽰:
操作2:
创建表和插⼊数据,并查询浏览插⼊的数据。
1,创建表,输⼊:
create table 表名(
字段名称1 字段类型,
字段名称2 字段类型,
字段名称3 字段类型
);,回车。
2,插⼊数据,输⼊:insert into 表名(字段1,字段2,字段3) VALUES(值1,值2,值3);,回车。3,查询数据,输⼊:select * from 表名;,回车。
具体操作如下图所⽰:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。