以下是我学习oracle做的心得笔记,仅供参考:
1、其实数据库就是 内存+硬盘 使用良好的程序算法最快的读出最准确的数据
2、oracle的结构就是instance(实例 进程) + database(数据文件 )
3、一个ORACLE实例只有一个SGA 系统全局区 当实例启动时就会占用相应的内在空间
但是PGA会有多个,每当有一个server process 启动时就会有一个PGA区域。
4、SGA是最占用内存的区域
5、SGA包括shared pool
dababase buffer cache
redo log buffer
other structres(例如:lock and latch management,statistical data)
large pool 、java pool 是可配置的
11g 中还增加了stream pool
6、SGA_MAX_SIZE 单位:granules 分配:SGA小于128M是4M 超过128就是16M
SGA是个连续分配内在的区域
查询granule
select component ,granule_size from v$sga_dynamic_components;
COMPONENT GRANULE_SIZE
---------------------------------------------------------------- ------------
shared pool 4194304
large pool 4194304
java pool 4194304
streams pool 4194304
DEFAULT buffer cache 4194304
KEEP buffer cache 4194304
RECYCLE buffer cache 4194304
DEFAULT 2K buffer cache 4194304
DEFAULT 4K buffer cache 4194304
DEFAULT 8K buffer cache 4194304
DEFAULT 16K buffer cache 4194304
COMPONENT GRANULE_SIZE
---------------------------------------------------------------- ------------
DEFAULT 32K buffer cache 4194304
Shared IO Pool 4194304
ASM Buffer Cache 4194304
14 rows selected.
7、进程分为USER PROCESS 、SERVER PROCESS 、BACKGROUD PROCESS
USER PROCESS 是客户端的进程
SERVER PROCESS 是服务端响应客户端响应的进程
--客户端通过TCP/IP连接访问服务端进程 、服务端可以通过虚拟的TCP/IP(lo 、127.0.0.1--local loopback 本地回路)或者是IPC(INTER PROCESS COMMUNICAITION)进行通讯。
BACKGROUND PROCESS是ORACLE的主要进程分为强制进程(MANDATORY)和可选进程(OPTION) 。
MANDATORY PROCESS包括 DBWn(写数据文件的进程,n是序号,ORACLE最多可以有20个DBW进程同时工作)、 LGWR(写日志文件的进程)、SMON (SYSTEM MONITER)、PMON(PROCESS MONITER)、CKPT(CHECK POINT原来是由LGWR负责的)
OPTION PROCESS 比如:ARCn但是生产环境肯定是必须归档模式的,所以这个进程基本是必须的
8、SHARED POOL 包括library cache(SQL AREA ,PL\SQL AREA)、data dictionary cache()
9、PGA 一个服务进程就有一个PGA,如DBW LGWR等各自都有一个PGA区域
10、用户连接时客户端有一个USER PROCESS 服务端会启动一个SERVER PROCESS
11、一个tablespace可以有多个datafiles,一个datafile可以对应多个segment ,一个segment可以横跨多个datafile
必须是连接的db blocks才能组合成一个extent
12、一个ORACE SERVER包括instance 和database
一个instance包括内存和后台进程PGA background process
database 包括三种文件:datafile , online redo log file,control file
13、自从ORACLE 9.2.0以后不会提供SYS 和 SYSTEM用户的默认口令,必须要指定
注意手工用SQL语句创建数据库时,如果不指定这两个用户的口令,它会用默认的口令,这可能是个漏洞
14、show parameter sga; --后面的参数名可以不写全,它会自动匹配
15、
16、什么是SID,SGA的内存unique key值是通过ORACLE_HOME和ORACLE_SID合起来再hash出来的,
所以如果设置SID或者HOME不正确,就有导致ORACLE NOT AVAILABLE ERROR的错误,
在WINDOWS环境下SGA不是共享内存的形式,但是如果一台机子上 将了一套数据库软件也就是在一个ORACLE_HOME下
唯一区别数据库的就是SID了
17、
18、因为SPFILE是二进制文件,所以要查看的话可以用strings spfilemes.ora ,它是将可打印的字符打印出来。
19.SPFILE前面的*. 在多个instance对应一个数据库时有用,要把*改成实例名。
20、
21、
22、alter system PFILE= 没有SPFILE=,如果要指定SPFILE的话,可以在PFILE中写上面的一句话,指定SPFILE的位置即可
23、 select * from fzq where regexp_like(value,'1[0-9]{4}60')
24、
25、nomount只是读取spfile 分配SGA 启动部分后台进程 相当于车间和工作都好了 ,但是没有猪进行屠宰
26、mount 是读取内存中SPFILE的contorlfile的配置目录,打开读取数据文件、日志文件的配置 进行与数据库进行关联
26、
27、mount后 数据库已经挂载 但还是关闭状态,只能由管理员进行维护工作 mantanice
28、
恢复和回滚工作都是由SMON进程来执行的。
tail -f 可以动态观察内容的变化
数据库的文件一般就在oracle_base目录下的oradata、admin目录下有文件;
oradata存的是数据文件、日志文件、控制文件,admin是跟踪文件、pfile等