引言
oracle默认端口为1521,根据需要修改。
I 预备知识
1.1 客户端配置
other_db=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 远程服务器IP或主机名)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 全局数据库名)
)
)
登录
sqlplus用名名/密码@网络服务名
1.2 连接到Oracle
- 专用服务器连接: 专用服务器为连接创建一个新的进程,客户端与这个专用服务器直接通信,并由这个专用服务器接收和执行SQL。
- 共享服务器: 使用“共享进程”池为大量用户服务,实际上就是一种连接池机制。
客户端不能直接与共享服务器通信,调度器将客户请求放入请求队列,由共享服务器处理后,把响应放入原调度器的响应队列中,最后调度器把响应传回给客户。
1.3 文件系统机制
- 操作系统(OS)文件系统: 文件存放在文 件系统中,操作系统中可以查看到这些文件。
- 原始分区(raw partitions,也称裸分区): 不是文件,而是原始磁盘,没有文件系统。
- 自动存储管理(Atuomatic Storage Management,ASM): Oracle 10g的新特性,ASM是专为数据库设计的文件系统
• 集群文件系统: 专用于RAC(集群)环境,集群中的多个节点共享的cooked文件系统。
II 逻辑存储结构
2.1 Oracle存储层次体系
- 数据库由一个或多个表空间组成,数据库默认有
SYSTEM
、SYSAUX
、TEMP
三个表空间。 - 表空间是一个逻辑存储容器,由一个或多个数据文件组成,表空间包含段。
- 段就是占用存储空间的数据库对象,由一个或多个区组成,段在表空间中,但是可以包含这个表空间中多个数据文件中的数据。
- 区是文件中一组逻辑连续的块,区段只在一个表空间中,而且总是在该表空间内的一个文件中。
- 块是数据库中最小的分配单位,也是数据库使用的最小I/O单位。
- 位(Bit):本地管理表空间的空间管理单位,一个位可能等于一个区间,也可能多个位组成一个区间。
2.2 表空间的管理模式
- 字典管理表空间(Dictionary-Managed Tablespace): 由字典表管理区(extent)的分配,需要串行的查询、更改字典表,来获得空间。
当创建或删除对象时,Oracle的空间分配或回收是通过数据库中的数据字典表来记录和管理的,用于管理的两个数据字典表分别是:UET$
(used extents-已使用的空间)和FET$
(free extents-空闲空间)。
- 本地管理表空间(Locally Managed Tablespace):8i以后出现的一种新的表空间的管理模式,通过本地位图来管理表空间的空间使用。使用每个数据文件中存储的一个位图(Bitmap)来管理区,需要得到一个区,系统只需在位图中将某一位设置为1,释放空间,再设置为0。
Bit-map
的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。
本地化管理
,就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数据文件的头部加入了一个位图区,在其中记录每个区的使用状况。每当一个区被使用,或者被释放以供重新使用时,Oracle都会更新数据文件头部的这个记录,反映这个变化。
本地化管理的表空间创建语法:
CREATE TABLESPACE 表空间名字
DATAFILE '数据文件详细信息'
[EXTENT MANAGEMENT { LOCAL
{AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M]]}}]
EXTENT MANAGEMENT LOCAL
指定这是一个本地化管理的表空间
AUTOALLOCATE
,则表明让Oracle来决定区块的使用办法;
UNIFORM
,则可以详细指定每个区块的大小,若不加指定,则为每个区使用1M大小。
- 创建表空间的例子
create tablespace tbs_datdatafile'c:\oradata\tbs_dat.dbf' size 2000M;
本地化管理的优点:支持在一个表空间里边进行更多的并发操作,并减少了对数据字典的依赖。
- 避免了字典表空间一直头疼的碎片问题: 表空间里的区的大小可以选择由Oracle系统来决定,或者由数据库管理员指定一个统一的大小。
- 避免产生回滚信息: 从由数据字典来管理空闲块改为由数据文件的头部记录来管理空闲块,不再使用系统表空间里的回滚段。
- 减少了手工合并自由空间的需要: 区的本地化管理自动跟踪表空间里的空闲块
- 提高了空间管理的并发性: 本地化管理的表空间避免了在数据字典相应表里面写入空闲空间、已使用空间的信息。
- 本地化管理的表空间避免了递归的空间管理操作。而这种情况在数据字典管理的表空间是经常出现的,当表空间里的区的使用状况发生改变时,数据字典的表的信息发生改变,从而同时也使用了在系统表空间里的回滚段。
- 扩充表空间大小
- 添加数据文件
alter tablespacetbs_datadddatafile 'c:\oradata\tbs_dat2.dbf' size100M;
- 改变数据文件大小
alter database datafile 'c:\oradata\tbs_dat.dbf' resize 2500M;
- 数据文件自动扩展大小
alter database datafile 'c:\oradata\tbs_dat.dbf' autoextend on next 1m maxsize 20m;
- 修改表空间名称
alter tablespace tbs_datrename totbs_dat1;
- 删除表空间
drop tablespacetbs_datincluding contents anddatafiles;
--and datafiles,表示同时也删除物理文件
2.3 段(segment)
段
就是占用存储空间的数据库对象,如表、索引、回滚段等。
创建表时,会创建一个表段。
创建分区表时,每个分区会创建一个段。
创建索引时,会创建一个索引段。
依次类推,占用存储空间的每一个对象都会存储在一个段中,此外,还有回滚段(rollback segment)、临时段(temporary segment)、聚族段(cluster segment)、索引段(index segment)等。
create table T(id int primary key, content clob)
这里创建了四个段
- 1个Table T的段
- 1个索引段(主键会自动添加唯一索引)
- 2个clob段(一个clob段是lob索引,一个段是lob数据本身)
2.4 区(extent)
区是文件中一个逻辑上连续分配的空间,即由一些连续分布的块组成,最大可以达到2GB。
2.5 块(block)
块是Oracle中最小的空间分配单位。
数据行、索引条目或临时排序结果就存储在块中,通常Oracle从磁盘读写的就是块。
块常见4种大小:2KB,4KB,8KB,16KB。
有些情况下32KB也可以,受操作系统限制。
III 物理存储结构
3.1 Oracle体系结构
- 数据库 (Database):物理操作系统文件或磁盘(disk) 的集合
一个数据库可以由一个或多个实例(使用RAC)装载并打开Oracle RAC是
Oracle Real Application Cluster
,一般有两台或者两台以上同构计算机及共享存储设备构成,可提供强大的数据库处理能力。
• 实例( instance):一组后台进程/线程和一个共享内存区
实例只能装载并打开一个数据库
- 系统全局区SGA (System Global Area)是Oracle Instance的 基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享。
每个实例都只有一个 SGA 区,当多个用户连接到同一实例时,这些用户进程、服务进程共享 SGA 区。包括 :
- 数据高速缓存区
- 字典缓存区
- 重做日志缓存区
- SQL共享池
- 程序全局区PGA(PROCESS GLOBAL AREA)是一个内存区,包含单个进程的数据和控制信息,所以又称为进程全局区。
3.2 物理存储结构
主要是指在操作系统中,Oracle数据的存储和管理方式,它的组成包括:
- 数据文件 (data file)
存储表、索引等实际数据的文件.一个表空间,可以有多个数据文件,一个数据文件,只能属于一个表空间
- 控制文件 (control file)
存储数据库的物理结构等信息的文件。
- 重做日志文件 (redo file)
记录数据库的修改操作和事务操作的文件
- 其他文件
see also
- QPS: 请求进入的速度
- 并发数: 系统中同时存在的请求数
- 并发数 = QPS * 耗时
gzh:iOS逆向