首先:oracle实例是内存和后台进程的总称。
但是数据库是实例和文件的总称
oracle rac:多个实例,一个库
多台计算机同时运行一个库,这样我就可以把我的运载压力分到其他的机子上面。但是他们写的数据都是在一个数据库中。
oracle数据库结构
一、内存结构:
sga:系统全局区
共享池:shared_pool_size,主要是存放sql语句
数据库缓冲区:db_cache_size
数据库的数据块:db_block_size
日志缓冲区
log_buffer
大型池:large_pool_size
SQL> show parameter large
NAME TYPE VALUE
------------------------------------ ----------- ---------
large_pool_size big integer 0
oracle使用内存是共享内存段。
SQL> show sga
Total System Global Area 293601280 bytes
Fixed Size 1248600 bytes
Variable Size 104858280 bytes
Database Buffers 180355072 bytes
Redo Buffers 7139328 bytes
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -----------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 280M
sga_target big integer 280M
pad:私有全局区
二、进程结构
最核心的进程:
smon:系统监控进程,处理数据库,undo,temp,表空间回收
dbwr:主要处理数据库换出去的数据写到硬盘
lgwr:把日志buffer的数据写到日志文件
ckpt:触发dbwr写脏数据到数据文件,保证数据的一致
pmon:清空用户连接上来的那些进程资源
用户进程:客户端或是客户发起的连接进程
服务进程:服务器段为客户发起连接的进程
数据库的连接模式:专有模式,共享模式
服务器端的内存:
数据库sga,数据库pga使用,服务器端的进程
共享模式:一定是连接处理速度要快
三、存储结构
1、控制文件:
SQL> select * from v$controlfile;
STATUS
-------
NAME
--------------------------------------
IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------
G:\ORADATA\ORACLE\CONTROL01.CTL
NO 16384 430
G:\ORADATA\ORACLE\CONTROL02.CTL
NO 16384 430
STATUS
-------
NAME
--------------------------------------
IS_ BLOCK_SIZE FILE_SIZE_BLKS
--- ---------- --------------
G:\ORADATA\ORACLE\CONTROL03.CTL
NO 16384 430
SQL> desc v$controlfile;
名称 是否为空? 类型
---------------------------------------------------------------------------------------------------
STATUS VARCHAR2(7)
NAME VARCHAR2(513)
IS_RECOVERY_DEST_FILE VARCHAR2(3)
BLOCK_SIZE NUMBER
FILE_SIZE_BLKS NUMBER
控制文件可以有多个,v$controlfile;
SQL> show parameters control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string G:\ORADATA\ORACLE\CONTROL01.CT
L, G:\ORADATA\ORACLE\CONTROL02
.CTL, G:\ORADATA\ORACLE\CONTRO
L03.CTL
2、数据文件:
SQL> alter database backup controlfile to trace;
数据库已更改。
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------
G:\ORADATA\ORACLE\USERS01.DBF
G:\ORADATA\ORACLE\SYSAUX01.DBF
G:\ORADATA\ORACLE\UNDOTBS01.DBF
G:\ORADATA\ORACLE\SYSTEM01.DBF
G:\ORADATA\ORACLE\EXAMPLE01.DBF
G:\ORACLEMDF\USER_DATA.DBF
F:\ZHEN.DBF
3、日志文件:
SQL> select * from v$LOG;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
1 1 65 52428800 1 NO INACTIVE 3010912 29-10月-15
2 1 66 52428800 1 NO CURRENT 3043401 30-10月-15
3 1 64 52428800 1 NO INACTIVE 2973128 29-10月-15
4、参数文件
SQL> show parameters
数据库结构: