Code前端首页关于Code前端联系我们

Oracle 数据库入门:基本概念

terry 2年前 (2023-09-26) 阅读数 81 #后端开发

数据库:数据库

Oracle 数据库是数据的物理存储。包括数据文件ORA或DBF、控制文件、网络文件、日志文件、参数文件。

Oracle数据库概念与mysql等其他数据库概念有些不同。 Mysql数据库数据库创建流程是--创建库--创建表而Oracle数据库创建流程是--创建表空间--创建用户--让用户创建表

所以Oracle数据库和其他数据库是有区别的。可以这么理解,Oracle只有一个数据库,一个由用户管理的大数据库。

实例

Oracle实例由许多后台进程(Backgound Processes)和内存结构(Memory Structures)组成。一个数据库可以有n个实例(数据库只能通过实例访问)。

数据文件(dbf、ora)

数据文件是数据库的物理存储单元。数据库数据存储在表空间中,实际上存在于一个或多个数据文件中。一个表空间可以由一个或多个数据文件组成,一个数据文件可以只属于一个表空间。一旦数据文件被添加到表空间中,该文件就不能被删除。如果要删除一个数据文件,只能删除它所属的表空间。

表空间

表空间是物理数据库中Oracle相关数据文件的逻辑映射。数据库在逻辑上被划分为一个或多个表空间,每个表空间都包含一组逻辑上相关的结构。每个数据库至少有一个表空间(系统表空间)。每个表空间由同一磁盘上的一个或多个文件组成。这些文件是数据文件。一个数据文件只能属于一个表空间。

表空间是用于管理数据存储的逻辑概念。表空间仅与数据文件(ORA 或 DBF 文件)关联。数据文件是物理的。单个表空间可以包含多个数据文件,单个数据文件只能属于一个表空间。
基本命令:

//创建临时表空间
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中。

oracle 按用户和表空间管理和存储数据。然而,表数据不是由表空间请求的,而是由用户请求的。因为不同的用户可以在同一个表空间中创建同名的表。

基本命令:

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 用户  //指定权限

控制文件

控制文件在Oracle数据库中起着非常重要的作用。没有控制文件(或者控制文件损坏)运行实例会立即崩溃并关闭生死操作如果你不打开你以为你是谁?可以说,如果控制文件损坏,数据库肯定宕机了。 Oracle数据库实例启动过程中,内存中只为Oracle实例开始卸载时分配实例空间。如果继续启动connect状态,此时就会显示控制文件,因为Oracle必须依赖控制文件。控制文件查找数据文件的路径并重新创建日志文件。确保找到它们,然后进入连接状态。至于打开数据库,请确保这些文件是一致的。如果没有问题就可以打开。

控制文件包含数据库数据文件、重做日志文件、数据库名称、数据库创建信息、表空间信息、数据文件状态、日志文件信息、备份信息、检查点信息等许多重要信息。

控制文件是二进制文件,不能直接用文本编辑器写入。该文件由Oracle自己维护。 Oracle建议控制文件至少有两个冗余副本并放置在不同的磁盘上。这样可以防止因为他还有一个兄弟活着,所以一个磁盘被损坏而丢失整个控制文件。即使其中一个坏了,数据库仍然会宕机,但如果是的话,至少我可以恢复得更快。

CDB 和 PDB

Oracle 12C 引入了 CDB 和 PDB 的新功能。在ORACLE 12C数据库引入的多租户环境中,允许一个数据库容器(CDB)承载多个可连接的数据库。 (ESP)。 CDB的全称是Container Database,中文翻译为数据库容器。最初预算项目的全称是Pluggable Database,意思是可以插拔数据库。在ORACLE 12C之前,实例和数据库是一对一或多对一的关系(RAC):即一个实例只能与一个数据库关联,一个数据库中可以加载多个实例。实例和数据库不能具有一对多关系。进入ORACLE 12C时,实例和数据库可以是一对多的关系。下面是官方文档中CDB和PDB的关系图。oracle数据库入门:基本概念image.png

其实如果你熟悉SQL SERVER的话,你会觉得这种类型的CDB、PDB和SQL SERVER的单实例多数据库架构是一样的吗?例如,PDB$SEED可以被认为是系统数据库,例如master和msdb,而PDBS是用户创建的数据库。 SQL SERVER 中的连接以及分离和附加用户数据库实际上是同一件事。看来ORACLE也“抄袭”了SQL SERVER的概念,只不过是用新的方式重新包装而已。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门