01基本概念

本文最后更新于 2021-07-20 09:50:45

基本概念

数据库

Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。

实例

一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有n个实例(只有通过实例才能对数据库进行操作)

用户

用户是在实例下建立的。不同实例可以建相同名字的用户(同一个实例可以创建不同的用户)。

1
2
3
4
5
6
7
8
select * from dba_users; //查全库的所有用户  
select * from all_users; //查当前用户可见的用户
select * from user_users; //当前的用户
drop user 用户名 cascade;
create user 用户名 identified by 密码 default tablespace 表空间 temporary tablespace 临时表空间;
之后授权
GRANT DBA to 用户 //此处假设授予dba角色拥有的权限
GRANT connect,resource to 用户 //指定权限

表空间

表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//创建临时表空间
create temporary tablespace fas
tempfile '/u01/app/oracle/oradata/XE/fas_temp.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//创建表空间
create tablespace fas
logging
datafile '/u01/app/oracle/oradata/XE/fas.dbf'
size 100m
autoextend on
next 32m maxsize 2048m
extent management local;

SELECT DISTINCT tablespace_name FROM dba_tables;
drop TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES cascade onstraints;

数据文件(dbf、ora)

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是存在于某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

控制文件

控制文件在Oracle数据库中扮演着很重要的角色,没有控制文件(或者控制文件损坏了),运行着的实例立即崩溃,关闭着的死活打不开,你以为你是谁,可以说,控制文件一旦损坏,数据库必然down了。Oracle数据库实例启动过程中,当启动到unmount时,此时只是在内存中为Oracle实例分配了实例空间,然后如果继续要启动到mount状态,这个时候控制文件就闪亮登场了,因为Oracle要依据控制文件找到数据文件跟重做日志文件的路径,确定找到了再进去mount状态,至于打开数据库就是确定这些文件都一致,没有问题的话就能打开了。

控制文件包括了很多重要的信息,比如数据库的数据文件、重做日志文件、数据库的名称、数据库创建信息、表空间信息、数据文件的状态、日志文件信息、备份信息、检查点信息等

控制文件是一个2进制文件,不可以直接通过文本编辑器进行编写,这个文件由Oracle自己进行维护,Oracle建议控制文件至少有两份冗余,并且放在不同的磁盘中,这样能够避免一个磁盘的损坏,造成整个控制文件都丢失的情况,因为他还有一个兄弟健在,尽管一个坏了,数据库还是得down,但是有一个在的话,至少我恢复起来要快不少。

重做日志文件

每个Oracle数据库都拥有一组文件,其中包括2个或者多个重做日志文件(其实也可以拥有多组,用途跟多个控制文件一样)。这组文件整体被称为数据库的重做日志,而重做日志又是由一条一条的重做记录组成的,所有也被称为重做记录
重做日志的主要作用就是记录所有的数据变化,当一个故障导致被修改过的数据没有从内存中永久的写到数据文件里,那么数据的变化是可以从重做日志中获得的,从而保证了对数据修改的不丢失。
为了防止重做日志自身的问题导致故障,所以Oracle拥有多重重做日志功能,也就是可以同时保存多组完全相同的重做日志在不同的磁盘上。
重做日志里的信息只是用于恢复由于系统或者介质故障所引起的数据没法写入数据文件的数据。比如突然断电导致数据库的关闭,那么内存中的数据就不能写入到数据文件中,内存中的数据就会丢失。但当数据库重新启动时丢失的数据是可以被恢复的,可以从最近的重做日志中读取丢失信息然后应用到数据文件中,这样就把数据库恢复到断电前的状态。
在恢复操作中恢复重做日志信息的过程叫做回滚。

注意

表的数据,是用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了

Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个空间可以被多个用户授权访问,每个用户可以创建多个表(每个表被表空间随机存储在一个或多个数据库文件中


01基本概念
https://jiajun.xyz/2021/07/19/oracle/01基本概念/
作者
Lambda
发布于
2021年7月19日
更新于
2021年7月20日
许可协议