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。
转载于:https://blog.51cto.com/baobao0619/136309