1.
每一个启动的数据库至少对应一个例程,是管理数据库的一个实体,由一组内存结构和一系列后台进程组成,一个数据库可以由多个例程同时访问
2.
启动实例过程:读取参数文件、根据参数文件设置
SGA
区,
PGA
区、根据参数的值启动后台进程。
Startup nomount
:这种状态用于创建一个新的数据库,或创建一个新的控制文件。
Startup mount
打开数据库的控制文件获取数据库名称和物理文件的位置和名称等信息,用于修改数据文件和重做日志文件、数据库的完全恢复、改变数据库的归档模式。
Startup open
正常启动数据库,只要具有
create session
权限的用户就能够连接到数据库。
Startup force
先异常关闭数据库然后重启它。
Startup restrict
数据库置入
open
模式,但只有
restricted session
权限的用户才能访问数据库,可做一些维护任务:数据库数据的导入和导出,执行数据装载操作。
PGA
区是用户进程连接到数据库并建立一个对应的会话时,由服务器进程分配的专门用于当前用户会话的的内存区,只有服务器进程本身才能访问它自己的
PGA
区。而
SGA
区则是所有服务器进程都可以共享的、可写的内存区。
3
。参数文件的寻找顺序:
spfileSID.ora
,默认
spfile
,
initSID.ora
,默认
pfile
。
4
。
PFILE
特点:文本文件,可直接用编辑器手工修改,下次启动有效,只当实例启动时打开。
SPFILE
特点:二进制文件,在服务器端维护,对参数的修改可以直接作用到参数文件中永久生效。在启动时修改
5
。
Oracle
逻辑存储结构:多个块组成区,多个区组成段,多个段组成表空间,多个表空间组成逻辑数据库。一个区只能在一个数据文件中,一个段的各个区可以分别在多个数据文件中。一个
db
块对应多个操作系统块。一个表空间可以包含多个数据文件,但一个数据文件只能属于一个表空间。
db
块较大一般用在数据仓库中,这样可以使
B
树较浅,在联机事务处理中块要小。
6.
控制文件的信息包括:数据库的名称、数据文件和重做日志文件的名称位置、
scn
信息和检查点信息,时间戳,表空间信息
7
。数据文件,正在使用的联机数据文件是不能备份的
8
。重做日志文件:每个数据库至少需要两个重做日志文件。还可以启用自动归档功能,将要被覆盖的重做日志文件的内容存储到另外的归档文件中。强制
log switch
的命令:
alter system switch logfile
,
alter system checkpoint
,
FAST_START_MTTR_TRAGET
参数。
9
。当用户连接到数据库,实际上是连接到该数据库的例程,通过例程来连接使用数据库。每个例程用
SID
系统标示符标识。每个例程都只有一个
SGA
,当多个用户同时连接到一个例程时,所有的用户进程和服务器进程都可以共同使用
SGA
区
10
。数据
cache
:大小由
DB_CACHE_SIZE
指定,分为三部分
keep
:其中的数据长期保存,
recycle
:一旦使用完就会被换出内存,默认
buffer
:使用
LRU
调度算法换出数据。数据高速缓存中有两种列表:
DIRTY
列表:保存已被修改但还没被写入数据文件的脏缓存快。
LRU
列表:保存有空闲缓存块、命中缓存块、还没有被移入
DIRTY
列表的脏缓存块。
11
。重做日志高速缓存:记录修改操作。当缓存中的重做记录达到一定数量或到达某个时间点时,再由
LGWR
写入重做日志文件。出发
LGWR
条件:
12
。触发
checkpoint
的条件:在日志文件切换时,当用
normal
,
transactional
和
immediate
关闭例程时,
FAST_START_MTTR_TRAGET
参数,
ALTER SYSTEM checkpoint
,
ALTER tablespace
命令。
13
。共享池里有数据字典缓存和库缓存。数据字典缓存存储经常使用的数据字典信息,库缓存保存解析过的
SQL
语句。
14
。后台进程
DBWn
,触发条件:
checkpoint
发生,脏数据达到门限值,
drop
和截断命令,表空间被置于备份模式、脱机状态或只读状态。
LGWR
的触发条件:
commit
操作,重做日志高速缓存被写满三分之一时,含有
1mb
的重做信息时,
DBWn
为检查点清除脏缓存块,
3
秒钟为启动
LGWR
时。
CKPT
的作用:检查点以前的数据不用前滚,更新数据文件的文件头,更新控制文件的检查点信息。
SMON
:实例恢复:前滚,打开数据库,回滚。释放临时文件,合并基于
DMT
的相邻空闲盘区。
PMON
:释放锁,释放资源重启调度进程,回滚事务。
15
。数据字典:信息包括:数据库的逻辑和物理结构,对象的定义和分配的空间,完整性约束,用户,角色,权限。包括两部分:基表和数据字典视图。数据字典视图的命名规则,复数,
DBA_
、
ALL_
、
USER_
开头。
16
。动态性能视图:在例程的运行过程中,会在数据字典中维护一系列的“虚拟表”,当例程被创建时向其中添加信息,信息来源于内存和控制文件,当例程消亡时,这些表也被删除,属于
SYS
用户名称都是
V$
加单数。
DBA_
视图被称为静态数据字典视图
17
。跟踪控制文件
alter database backup controlfile to trace
,
查看日志:在
background_dump_dest
下查找
alertSID.log
18
。表空间:系统表空间:包含数据字典,回滚段,非系统表空间:
undo
表空间,临时表空间,默认临时表空间不能
drop
表,不能脱机,不能存持久数据。用
LMT
和
DMT
通过
extent
来管理表空间,
DMT
使用时加锁,只能串行执行,用两张表来管理,
FET$ UED$
当删掉一个
extent
后,高水平标志位不变,导致以后读入没有用的数据,易产生碎片。全盘扫描读到此标志位。
LMT
在文件头维护一张位图表,没有合并表空间的的需求。其手动管理方式:使用
free-list
列表,从头部加入和删除,降到
pctused
才加入
list
,避免头部争用,
pctfree
用来避免发生行迁移。
DMT
需要回滚段,因为对数据操作会对两张表执行
DML
操作。不能被脱机的表空间:系统表空间,有
active undo segment
的表空间(当中的事物没有提交),默认临时表空间。
回滚段类型:
system
,
non-system
。回滚段不能被共享,每个实例只能有同时拥有一个
UNDO
表空间激活,回滚段存放
DML
修改前的旧镜像。回滚原因:事务回滚,事务恢复,读一致性(在回滚段中保证读一致性)。
Create undo tablespace ***
只能接两个字句,
datafile
和
extent management
。回滚方式:自动和手动。
19
。所有
DML
都用回滚段
Uniform
指定表空间中所有区的大小都相同。
当执行
DDL
时,隐式
commit
20
。索引:分类,简单索引,复杂索引(基于函数),还可以分为单列索引和多列索引。查询返回结果超过百分之二十不适合使用索引,表过小不建议使用索引。长时间使用后要让索引重建:
alter index *** rebuild tablespace ***
。让树平衡,提高读取效率。合并有索引,
alter index *** coalesce
,可以减少需要读取的块,提高读取性能。索引提高了
select
效率,降低了
DML
效率。
规则选择器选项不要用
rule
,用
allrows
或
firstrow
。游标的选项
cursor_sharing
为
exist
时,只有使用绑定变量才能共享执行计划,参数值为
similar
时可以共享执行计划
21
。约束的种类:
not null
,
unique
,
pk
,
fk
,
check
Enable novalidate
速度快,不检查以前的是否符合约束,
22
。编码
语言
+
国家
+
编码,常用的
us7ascii
,
zhs16gbk
,
zhs16cgb23128.
。在迁移数据库时要注意,在创建数据库时要规划好。
23.
命令:创建
undo
表空间
create undo tablespace *** datafile *** size 4m
。创建临时表空间
create temporary tablespace *** tempfile *** size 4m
。
扩展表空间方法:添加数据文件:
alter tablespace *** add datafile *** size 3m
。改变数据文件的大小:
alter database datafile *** resize 4m
。允许表空间自动扩展:
alter database datafile *** autoextend on next 1m maxsize 20m
。
24
。网络体系结构,一层机构:应用程序和服务器在一台计算机上(一般为小型机),终端被连接到计算机,用户使用终端与数据库进行交互。二层结构,客户机
/
服务器体系结构,应用程序安装在客户机上,
oracle
服务器被安装在服务器上,二层结构的缺点是存在大量的冗余,即每台客户机都要安装应用程序。三层结构,依赖互联网,引入了中间件,应用软件可以只安装在应用服务器上。客户机必须具有连通互联网的功能,并且与有
web
浏览器,客户机与应用服务器连接,应用服务器再与数据库服务器相连接。全局数据库名是将一个数据库与任何其他数据库唯一区别开来的数据库全称,格式为:数据库名
.
数据库域。一个
oracle
数据对于一个客户机来说表示为一个服务。一个数据库是用一个“服务名”来标识的,全局数据库名是数据库的默认服务名,由初始化参数文件中的
db_name
和
db_domain
两个参数共同表示,在
listener.ora
文件中由
SERVER_NAME
表示。
Oracle net
将连接标示符用作访问数据库服务的路径,即用于指定数据库的位置和数据库服务名等信息,连接标示符的例子如下(
DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sjm-laptop)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ora92.sjm.com))
)。为了避免每次访问数据库都输入这么多内容,可以设置一个引用这个连接标示符的网络服务名。网络服务名是数据库服务在客户机端的名称,网络服务名被存储在客户机端的
tnsname.ora
中,在
SQLPlus
中输入的主机字符串就是网络服务名。网络会话是通过监听程序建立的,是运行在服务器端的一个单独的服务进程,监听网络上的客户机对服务器的连接请求,由服务器端的
listener.ora
来控制,只有一个
listener.ora
,但是可以运行多个监听程序,一个监听程序可以监听多个协议地址,服务器端配置的目的就是配置监听程序的配置文件(
listener.ora
)。当采用本地命名方法时,客户机端配置的目的就是配置
tnsname.ora
,如果要配置命名方法,在客户端还要配置文件
sqlnet.ora
,在分布式环境中,服务器需要与其他服务器连接时也要在这个服务器端配置
tnsname.ora
文件。
SID
是
oracle
数据库例程的唯一标示符,每个数据库例程对应一个
SID
。