数据库的特点:数据结构化;数据共享;减少数据冗余;优良的存储功能。
Oracle的网格(Grid)实现:
存储网格(ASM)、数据库网格(RAC)、应用网格(stream)、网格控制(grid control)
Oracle服务器想要对外提供数据管理的服务,就必须先启动实例(instance),实例启动时会在内存里分配一块共享空间(SGA),之后启动一组后台进程,即可生成数据库实例。它是处于用户和物理数据库之间的一个中间层软件。
会话:当客户端应用程序建立了一个到RDBMS服务器的连接,就说打开了一个会话。在会话期间的设置只会对该会话环境产生影响,并仅在会话期间有效。
事物:将会话中的每个操作划分为逻辑工作单元。
Oracle的主要数据库文件:
① 数据文件(data file):用来存储数据库中的全部数据,依附于表空间而存在的,是表空间在物理上的存在形式,文件名格式为*.dbf。参数db_files限制数据文件的数量。
② 日志文件(Log file):用于记录数据库所做的全部变更(如Insert,delete,update),一般分为几个组,同组内的几个日志文件大小要一样。以便在系统发生故障时对数据库进行恢复,保证数据库的安全,文件名格式为*.log。根据事务信息将被覆盖时是否应该将文件归档有:Archivelog(归档日志)和Noarchivelog模式。
③ 控制文件(control file):用于打开、存取和维护数据库全局物理结构的二进制文件,一般有两个或更多的控制文件,每个控制文件都记录相同的信息。文件名格式为*ctl。参数control_files指定文件的物理位置。如果数据库的物理结构发生了变化,应立即备份控制文件。
④ 初始化参数文件--服务器参数文件(spfile)和文本初始化参数文件(pfile):
l spfile是一个二进制文件,不能手工编辑,可以在数据库运行时通过alter system set 命令来对参数文件进行修改,而不需要重启数据库;虽然可读但是不能通过操作系统命令进行修改。默认文件名spfile<SID>.ora。
SQL> alter system set xx=xx scope=memory/spfile/both;
l pfile是普通的文件,可用vi编辑器修改,修改后必须重启数据库才能生效。默认文件名init<SID>.ora。
数据库启动时搜索参数文件的顺序:spfile<SID>.ora,init<SID>.ora,init.ora。
生成spfile: SQL> create spfile='...' from pfile='...';
导出spfile进行手工编辑:SQL> create pfile from spfile;
Oracle内存结构:
系统全局区(SGA):Data Buffer Cache, Redo Log Buffer, Shared Pool, Large Pool, Stream Pool, Java Pool;
SGA的管理参数:DB_CACHE_SIZE, LOG_BUFFER, SHARED_POOL_SIZE, LARGE_POOL_SIZE, Java_POOL_SIZE和STRAMS_POOL_SIZE。
其尺寸大小由SGA_MAX_SIZE控制,不能修改。可以通过修改参数SGA_Target不为0,实现对SGA的自动管理。设置SGA_Target大小的查询语句:
select ((select sum(value) from v$sga)-(select current_size from v$sga_dynamic_free_memory))/1024/1024 || 'MB' "sga_target" from dual;
程序全局区(PGA):由排序区,会话区,游标区和堆栈区组成。
Oracle进程:
l 后台进程(Background Processes):dbwr, lgwr, smon, pmon, ckpt, arch, lckn, reco。
l 用户进程(Client Processes)
l 服务器进程(Server Processes):专用服务器进程和共享服务器进程。
共享服务器模式的设置:动态修改下列参数Shared_servers为0运行专用服务器模式,大于0运行共享服务器模式, Max_shared_servers, Shared_server_sessions, Dispatchers(共享服务模式下的调度进程), Max_Dispatchers。
可查看参数shared_server及视图v$shared_server和v$dispatcher了解服务器运行模式情况。
数据库对象
用户和模式的区别:模式是一组数据库对象的集合;用户是一组权限的集合。
表(table)
视图(view)
索引(index):建立在表的一列或多列上,由Oracel自动维护和使用,对用户完全透明。提高检索的性能,却降低了对表中数据的修改(insert,update,delete)操作。
序列(sequence):独立于表,故同一序列生成器可用于一个或多个表。
同义词(synonym)
触发器(trigger):是一些过程或PL/SQL程序段,当一个特定的事件发生时会自动引发这些过程的执行。
子程序:过程(Procedure),函数(Function)和包(package)。
Oracle的逻辑结构:
表空间:最大的逻辑存储结构。
System表空间包括system表空间和sysaux辅助系统表空间;
回滚段表空间(Undo Tablespace)存储更改前数据副本,进行回滚信息的自动管 理;
临时表空间(Temp Tablespace);
用户表空间;
段(segment):相同类型数据的存储分配区域,通常一个对象拥有一个段。可分为数据段,索引段,临时段和回滚段。(回滚段用于保存数据被修改之前的值,可以实现事物回滚,数据库恢复,数据库的读一致性和闪回查询等,设置参数Undo_Management=auto/manual来实现自动管理和手动管理。)
区(extent):由数据库中多个连续的数据块构成的最小的存储分配单元,区的分配方式有本地管理方式(主导)和字典管理方式。
数据块(Data Block):数据库中最小的I/O单元,大小由参数DB_BLOCK_SIZE设置,不可更改。
数据字典 :数据库创建过程中创建,由一系列表和视图构成,对于所有的用户(包括DBA)都是只读的。只有Oracle系统才可以对它进行管理和维护。都属于sys模式,存储于system表空间中。可分为数据字典表和数据字典视图:
ALL视图:“all_”开头;
USER视图:“user_”;
DBA视图:“dba_”;
基础表:存储数据库相关信息的表(表、索引、约束及数据对象)。属于sys用户,名称中包含“$”字符。
动态性能视图:虚拟表的集合,记录当前数据库的活动。名字以“V$”字符开头。