一、安装和部署:https://www.cnblogs.com/-xuan/p/10211387.html
二、
(1)体系结构
- Oracle体系结构
- 实例:实例是后台进程和内存的集合
- 数据库:数据库是数据的集合,物理上是指存储数据库的信息的一组操作文件,每个数据库有一个逻辑结构和一个物理结构。
- 可插拔数据库:从oracle12c版本开始,oracle引入了可插拔数据库的概念,可插拔是为云计算而生
- 可插拔数据库的结构由一个容器数据库(Continer Database,CDB)和若干个可组装数据库(Pluggable Database,PDB)组成,每个PDB对外个充当一个独立的数据库供应用程序使用
- Oracle服务器:
- Oracle 服务器是由实例和数据库组成,也就是我们常说的数据库管理系统(Database Management System,DBMS)
- Oracle 服务器除了维护实例外,还在用户建立与服务器的连接时启动服务期进程并分配PGA(Program Global Area,程序全局区);
- Oracle存储结构:物理结构,逻辑结构
- 物理结构
- 主要文件:
- 数据文件:数据文件(Data File)的扩展名是*.dbf,,是物理Oracle数据库文件
- 特点
- 每个数据文件只有与一个数据库相联系
- 一个表空间可包含一个或多个数据文件
- 一个数据文件只能属于一个表空间
- 重做日志文件(Redo Log File):扩展名为*.log,它记录了对数据所有的更改信息,并提供了一种数据恢复机制,确定在系统崩溃或者其他意外出现后恢复数据库
- 控制文件(Control File):扩展名是*.ctl,是一个二进制文件
- 存储的信息很多,其中包括数据文件和重做日志文件的名称和位置
- 控制文件是数据库启动及运行必需的文件;当Oracle 读取数据时,要根据控制文件的信息查找数据文件
- 包括了一下关键信息
1 数据文件的位置及大小2 重做日志文件的位置及大小3 数据库名称及创建时间4 日志序列号
- 主要文件:
- Oracle逻辑机构
- 表空间:每个数据库都是由若干个表空间组成用户在数据中建立的所有内容都被存储到表空间;一个表空间可以有多个数据文件,一个数据文件只能有一个表空间
- 创建表空间的目的
- 对不同用户分配不同的表空间,对不同模式的用户分配不同的表空间,方便对用户的操作和对模式的对象的管理
- 可以将不同的数据文件放在不同的磁盘上,有利于磁盘管理,提高I/O性能、备份和恢复等
- 永久性表空间:一般保持基表、视图、过程、索引等的数据
- 临时性表空间:只用于保存系统中短期活动的数据
- 撤销表空间:用于帮助回退未提交的事物数据,已提交的数据在这里是无法恢复的
- Oracle自动建立的四个表空间system、sysaux、users、temp
- system表空间:用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等
- sysaux表空间:作为system的辅助表空间,用于存放各种数据库工具用到的数据;还用于存放个数对象数据如智能代理DBSNMP等
- users表空间:通常作为用户使用的表空间,可以再这个表空间上创建各种对象
- temp表空间:Oracle用户用于存放临时数据的特殊表空间
- 创建表空间格式、修改表空间
- 格式
1 create tablespace tablespacename 2 datafile ‘filename.dbf’ 3 [size integer [ K | M ]] 4 [autoextend [off | on ] ] 5 6 7 tablespacename:是表空间的名字 8 datefile:制定组成表空间的数据文件,当有多个时用逗号隔开 9 filename:是表空间中数据文件的路径和名称,以dbf为扩展名10 autoextend:启用或禁用数据文件的自动扩展
- 例子
1 ceate tablespace tab_work12 datafile '/u01/app/oracle/oradata/orcl/work1.dbf'3 size 10M4 aotoextend on;
- 当创建表空间时未指定自动扩展,并且文件已经满了的时候,有两种方法
- 修改文件的大小
alter database datafile '/u01/app/oracle/orcl/work1.dbf'rexize 80M
- 再向表空间添加一个数据文件
alter tablespace tab_work1 add adtafile '/u01/app/oracle/oradata/orcl/work2.dbg' size 20M autoextend on;
- 修改文件的大小
- 改变表空间的读写状态
1 alter tablespace 表空间名 read write;2 alter tablespace 表空间名 read read only;
- 删除表空间
1 drop tablespace 表空间名 [including contents]
- 格式
- 创建表空间的目的
- 段:存在于表空间中,是一种指定类型的存储结构,段由一组区组成
- 区:是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区,区由连续的块组成
- 数据块:是数据库最小的数据组织单位与管理单元
- 模式:是数据库对象(又称模式对象)的集合。模式对象包括表、视图、索引、同义词、序列、过程和程序包等
- 表空间:每个数据库都是由若干个表空间组成用户在数据中建立的所有内容都被存储到表空间;一个表空间可以有多个数据文件,一个数据文件只能有一个表空间
- 物理结构
- Oracle 内存结构:内存结构作为oracle 数据体系中最为重要的一部分,内存也是影响数据的第一要素
- SGA:所有用户都可以访问的实例的共享内存区域
- 共享池
- 数据缓冲区
- 重做日志缓冲区
- 大池
- Java池
- PGA:一类非共享的内存、专用于特定的服务器进程
- 不是实例的一部分,它包含单个服务器进程或单个后台进程所需的数据控制信息
- UGA:为用户进程存储回话状态的内存区域,UGA可以作为SGA或者PGA的一部分
- SGA:所有用户都可以访问的实例的共享内存区域
- Oracle的进程结构
- PMON:在用户连接意外中断后执行资源清理工作
- SMON:在实例启动时进行实例恢复,三个恢复步骤
- 前滚以恢复未写入文件但已记入联机日志文件的数据
- 打开数据库,以便用户能登陆
- 回滚未提交的事物处理
- DBWR进程
- 管理数据缓冲区
- 将所有修改后的缓冲区写入数据文件
- 使用LUR(Least Recently Used,最近最少使用)算法将最近使用过的数据保存在内存中
- 通过延迟写来优化磁盘的I/O读写
- LGWR进程:负责将重做日志缓冲区中的日志写人日志文件组
- CKPT进程:确保数据缓冲区中所有修改过的数据块都写入数据文件的机制,当检查点玩成后,CKPT进程负责更新数据文件头和控制文件
- ARCn进程:归档日志进程,是一个可选进程,只有打开日志归档时才有这个进程
(2)CDB与PDB的基本操作
1 show con_name # 查看当前所在容器 2 show pdbs # 查询数据库所有容器 3 alter pluggable database orclpdb open; # CDB模式下修改orclpdb为打开状态 4 alter session set container=orclpdb # CDB回话切换到PDB(orclpdb)回话中 5 6 7 以上是在SQL里边的切换PDB数据库,其实连接到PDB数据库的方法有两种 8 1、 sqlplus sys/sys as sysdba 9 alter session set conainer=orclpdb10 11 2、sqlplus sys/sys@orclpdb as sysdba12 13 第二种进入方法需要在'/u01/app/oracle/product/12.2.0/dbhome_1/network/adsmin/tnanames.ora'文件中添加一下内容14 15 ORCLPDB =16 (DESCRIPTION =17 (ADDRESS = (PROTOCOL = TCP) (host= Oracle) (Port=1521))18 (CONNECT_DATA =19 (SERVER = DEDICATED)20 (SERVICE_NAME=orclpdb))
(3)用户管理
- sys:时oracle的一个超级用户,主要用户维护系统信息和管理实例
- system:Oracle数据库的默认管理员,他拥有dba权限;通常用于管理用户、权限、存储等,不建议在system中创建表或视图
- 自定义用户
- 公用用户:存在CDB中,名字必须以c##开头
- 本地用户:存在PDB中
- 创建用户的语法,和修改
- 创建用户
create user 名字identified by 密码下边这些都是可有可无的default tablespace work1 # 默认表空间为work1temporary tablespace temp # 临时表空间为tempquota unlimited on work1 # work1不限制配额quota 10M on work2 # work2限额为10Mpassword expire # 用户第一次登陆必须修改密码
- 修改密码:alter user 张三 identified by 123456; 将正三的密码修改为123456
- 删除用户:drop user 张三 ; 删除张三,如果张三创建的有数据,需要在后边加上cascade
- 创建用户
(4)权限管理
- 预定义的三个角色
- sonnect:拥有连接数据库的权限
- resource:拥有创建表,触发器,过程等权限
- dba:数据库管理员角色
- 授予权限
- grane connect to 张三; 授予张三连接数据库的权限
- 撤销权限
- revoke connect from 张三; 撤销张三的连接权限
(5)导入数据测试
- 测试文件百度云:https://pan.baidu.com/s/1cKT4qVEqzyCz60isnMFwEg蓝奏:https://www.lanzous.com/i2rp0yd
- 连接数据库后执行代码:@ 测试文件位置