基本概念
oracle 19c 版本
- 实例-instance
是用于管理数据库文件的内存结构 - 数据库
磁盘上的物理文件,可以通过create database 进行创建。
实例存在于内存中,而数据库存在磁盘上,所以实例可以独立于数据库存在,数据库也可以独立于实例存在。 - CBD
Container Database 数据的元数据存储库
创建用户c## user_name 开头,创建的是common 用户 - PDB
Pluggable Database
创建本地用户user - PDB$SEED
pdb数据的模板库
如果所示的关系
实例支持两种模式
只读实例
读写实例
只读实例能够运行查询,但是不能支持 DML修改操作(UPDATE、DELETE、INSERT 以及 MERGE),也不能从客户端直接进行连接。初始化参数 INSTANCE_MODE 设置为 READ_ONLY
oracle 数据库启动方式
Oracle启动模式的nomount阶段- 启动一个实例,但没有与数据库关联。
Oracle启动模式的mount阶段-实例已经启动,并且读取数据库的控制文件。数据库对用户不可用。
Oracle启动模式的open阶段-实例已经启动,并且打开数据库。授权用户可以访问数据文件中的数据。
Oracle 数据库使用 SID 和 Oracle 主目录的路径名称作为共享内存的键值。
oracle 内存结构
PGA 称为程序全局区,程序全局区不是实例的一部分,当服务器进程启动时,才分
SGA 称为系统全局区,它是数据库实例的一部分,当数据库实例启动时,会首先分配系统全局区。
SGA组成
- 共享池(Shared pool)
共享池由两部分组成,即库高速缓存(Libray cache)和数据字典高速缓存(Data dict cache)
查看数据共享池的大小
show parameter shared_ pool_ size;
alter system set shared_pool_size=16M - 数据库高速缓存区(Database buffer cache)
数据写入的内存缓存区 - 重做日志高速缓存区(Redo Log buffer cache)
redo log 日志内存缓存区,写数据前,先写redo log 刷磁盘后,才写数据到数据缓冲区 - large_ pool
Oracle 在共享池中分配额外的空间用于存储用户进程和服务器进程之间的会话信息。这样减轻共享缓存区的压力 - java_ pool
oracle 三种文件
1.数据文件
datafile 文件包含数据对象表和索引,一旦数据文件被建立则不能改变大小
2.控制文件
记录数据库的物理结构
3.重做日志文件
联机日志文件-Oracle用来循环记录数据库改变的操作系统文件
归档日志文件-指为避免联机日志文件重写时丢失重复数据而对联机日志文件所做的备份
oracle 进程
与数据库服务器建立连接时,就启动了一个用户进程
服务器进程犹如一个中介,完成用户的各种数据服务请求,而把数据库服务器返回的数据和结果发给用户端。
服务进程和用户进程有专有连接和共享连接
oracle 启动命令
su - oracle
sqlplus / nolog
conn / as sysdba
startup
stop immediate 启动实例
alter database open; 打开数据库
lsnrctl start 启动监听