Oracle 笔记1 表空间及用户
特性 | Oracle | MySQL |
---|---|---|
开发商 | Oracle 公司 | 最初由 MySQL AB 开发,后被 Sun 收购,现属 Oracle 公司 |
数据库类型 | 关系型数据库(RDBMS),支持对象-关系模型 | 关系型数据库(RDBMS) |
开源性 | 闭源商业软件,需付费授权(有免费开发版) | 开源软件(社区版免费,企业版付费) |
支持的操作系统 | 跨平台,支持 Windows、Linux、Unix 等主流系统 | 跨平台,支持 Windows、Linux、Unix、macOS 等 |
数据类型 | 支持丰富的数据类型,包括 VARCHAR2、NUMBER、DATE、TIMESTAMP、LOB(BLOB、CLOB 等)、XMLType 等 | 支持常见数据类型,如 VARCHAR、INT、DATE、DATETIME、BLOB、TEXT 等,类型相对简洁 |
事务支持 | 完全支持 ACID 特性,支持分布式事务 | 支持 ACID 特性(InnoDB 引擎),MyISAM 引擎不支持事务 |
锁机制 | 支持行级锁、表级锁、页级锁等多种锁机制,锁粒度灵活 | InnoDB 支持行级锁和表级锁,MyISAM 仅支持表级锁 |
存储引擎 | 单一存储引擎架构(但功能丰富) | 插件式存储引擎,常用的有 InnoDB(默认)、MyISAM、Memory 等,不同引擎特性不同 |
分区表支持 | 支持多种分区方式(范围分区、列表分区、哈希分区、复合分区等),功能强大 | 支持范围分区、列表分区、哈希分区等,但功能相对简单 |
高可用性 | 提供 RAC(Real Application Clusters)、Data Guard 等高级高可用方案 | 可通过主从复制、MGR(MySQL Group Replication)等实现高可用,方案相对简单 |
备份与恢复 | 提供 RMAN(Recovery Manager)等专业备份恢复工具,支持增量备份、块级恢复等 | 支持 mysqldump、binlog 等备份方式,企业版有更高级的备份工具 |
性能优化 | 有完善的优化器,支持多种索引类型(B 树、位图索引等),可通过多种方式进行性能调优 | 优化器相对简单,主要依赖 B 树索引,性能调优方式相对基础 |
权限管理 | 基于角色的复杂权限管理系统,权限控制精细 | 权限管理相对简单,基于用户和数据库对象的权限控制 |
适用场景 | 大型企业级应用、复杂业务系统、高并发高可用要求高的场景 | 中小型应用、Web 应用、快速开发场景,对成本敏感的项目 |
价格 | 商业授权费用较高 | 社区版免费,企业版费用相对较低 |
1 安装Oracle
# 下载镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
# 运行容器
docker run -d -p 1521:1521 -p 5500:5500 -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=ORCLPDB1 -e ORACLE_PWD=123456 -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=AL32UTF8 --name oracle registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
https://localhost:5500/em
username:sys
password:123456
Container Name:ORCLPDB1
2 创建表空间
特性 | Oracle | MySQL |
---|---|---|
表空间定义 | 数据库逻辑存储的核心单位,是数据文件的集合,所有数据库对象(表、索引等)必须存储在表空间中 | 仅InnoDB引擎支持表空间概念,作为数据存储的逻辑容器,默认包含系统表空间和独立表空间 |
默认表空间 | 安装后自动创建多个系统表空间: - SYSTEM:存储数据字典 - SYSAUX:辅助系统表空间 - USERS:默认用户表空间 - TEMP:临时表空间 |
InnoDB默认使用: - 系统表空间(ibdata1):存储数据字典、 undo日志等 - 独立表空间(默认开启):每个表对应一个.ibd文件 |
表空间与数据文件关系 | 一个表空间可包含多个数据文件(.dbf),数据文件大小可配置自动扩展 | InnoDB表空间: - 系统表空间:对应一个或多个ibdata文件 - 独立表空间:每个表一个.ibd文件 - 通用表空间:可包含多个表,对应一个ibd文件 |
表与表空间的映射 | 1. 表必须属于某个表空间(默认指定的表空间) 2. 可通过 ALTER TABLE 移动表到其他表空间 |
1. 独立表空间模式:每个表默认对应自己的表空间 2. 系统表空间模式:所有表共享系统表空间 3. 可通过 ALTER TABLE 修改表所属表空间 |
临时表空间 | 专用的TEMP表空间,用于存储临时数据(排序、分组等操作),与用户表空间严格分离 | 无专门的临时表空间概念,临时表数据默认存储在系统表空间的临时表区域,或通过tmp_table_size 等参数控制 |
表空间管理方式 | 支持两种管理方式: - 字典管理(早期) - 本地管理(默认,通过位图管理空间分配) |
自动管理,无需手动配置空间分配策略,由InnoDB引擎自动维护 |
表空间扩展 | 1. 可手动添加数据文件扩展表空间 2. 可配置数据文件自动扩展(AUTOEXTEND) |
1. 独立表空间:随表数据增长自动扩展.ibd文件 2. 系统表空间:需手动配置自动扩展参数 |
表空间备份恢复 | 1. 支持表空间级备份(RMAN的TRANSPORTABLE TABLESPACE) 2. 可单独恢复某个表空间 |
1. 独立表空间可单独复制.ibd文件备份 2. 需配合表空间导出(ALTER TABLE … DISCARD TABLESPACE)操作 |
加密支持 | 支持表空间级加密(TDE,透明数据加密),保护存储在磁盘上的数据 | InnoDB支持表空间加密(从MySQL 5.7开始),可对独立表空间或通用表空间加密 |
权限控制 | 可对表空间设置配额(QUOTA),限制用户使用的空间大小 | 无表空间级权限控制,权限管理基于表级或数据库级 |
主要优势 | 1. 表空间与数据文件映射灵活,便于存储管理 2. 支持精细的空间配额控制 3. 完善的表空间级备份恢复机制 4. 支持分区表与表空间的关联,优化大数据存储 |
1. 独立表空间设计简化了单表管理 2. 自动扩展机制降低了维护成本 3. 表空间与表文件一一对应,便于理解和操作 |
适用场景 | 大型数据库、需要精细存储管理的场景、多租户环境 | 中小型应用、Web应用、对存储管理复杂度要求较低的场景 |
CREATE TABLESPACE 表空间名
DATAFILE 'D:\Oracle\A.DBF' -- 数据文件的物理路径
SIZE 100M -- 如 100M(初始大小)
AUTOEXTEND ON -- 开启自动扩展
NEXT 10M -- 如 10M(每次扩展的大小)
MAXSIZE 1096M -- 如 500M 或 UNLIMITED(无限制)
EXTENT MANAGEMENT LOCAL -- 本地管理(推荐,默认)
SEGMENT SPACE MANAGEMENT AUTO; -- 段空间自动管理(推荐,默认)
3 创建表空间用户
1. 核心管理用户
用户名 | 权限级别 | 主要用途 | 解锁与使用 |
---|---|---|---|
SYS | 最高权限(SYSDBA) | 数据库字典(系统表)的所有者,负责数据库底层管理(如启动/关闭数据库、创建数据文件等)。 | 默认未锁定,登录需指定AS SYSDBA :CONNECT SYS/密码 AS SYSDBA; |
SYSTEM | 高权限(DBA角色) | 用于数据库日常管理(如创建用户、授权、管理对象),权限略低于SYS,不存储数据字典。 | 默认未锁定,登录方式:CONNECT SYSTEM/密码; |
2. 示例与工具用户
用户名 | 用途 | 解锁方法 |
---|---|---|
SCOTT | 经典示例用户,包含EMP (员工表)、DEPT (部门表)等示例表,用于学习SQL。 |
默认锁定,解锁命令:ALTER USER SCOTT ACCOUNT UNLOCK; ALTER USER SCOTT IDENTIFIED BY tiger; (密码设为tiger) |
HR | 现代示例用户,提供更复杂的人力资源相关表(如EMPLOYEES 、DEPARTMENTS ),结构更贴近实际业务。 |
默认锁定,解锁命令:ALTER USER HR ACCOUNT UNLOCK; ALTER USER HR IDENTIFIED BY hr; |
SYSMAN | Oracle Enterprise Manager(OEM)的专用用户,存储OEM的监控数据和配置信息。 | 用于图形化管理工具(如OEM),默认密码需在安装时设置。 |
OUTLN | 存储“存储大纲”(Stored Outline),用于固定SQL执行计划(已被SQL Profile替代,较少使用)。 | 通常无需手动操作,默认锁定。 |
3. 系统与服务用户
用户名 | 用途 | 注意事项 |
---|---|---|
DBSNMP | 用于数据库监控(如Oracle Intelligent Agent),收集数据库性能数据。 | 自动用于后台监控,不建议手动登录或修改。 |
APPQOSSYS | 用于Oracle Application Quality of Service Management(应用服务质量管理)。 | 系统内部使用,一般无需用户干预。 |
MDSYS | 存储空间数据(如地理信息),支持Oracle Spatial组件。 | 仅当安装Spatial组件时存在,用于空间数据管理。 |
4. 创建表空间用户
CREATE USER test
IDENTIFIED BY 123456
DEFAULT TABLESPACE test -- 关联默认表空间(通常使用已存在的users表空间)
TEMPORARY TABLESPACE temp -- 关联系统临时表空间temp
QUOTA UNLIMITED ON test; -- 允许在users表空间无限使用空间
5. 修改表空间用户
ALTER USER SCOTT
DEFAULT TABLESPACE test
TEMPORARY TABLESPACE temp_test;