oracle视频笔记
- 格式:doc
- 大小:3.61 MB
- 文档页数:59
27.Oracle深度学习笔记——ORACLE审计审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ ORACLE_BASE/admin/$ORACLE_SID/adump/)或数据库(存储在system 表空间中的SYS.AUD$表中不管是否打开数据库的审计功能,用管理员权限连接Instance;启动数据库;关闭数据库都会被记录。
1.相关参数:audit_sys_operations12C默认TRUE当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。
如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
audit_trail12C默认DBDB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;None:不做审计;2.审计级别开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)、Privilege(权限)、object(对象)。
Statement按语句审计,如audit table 会审计数据库中所有的create table,drop table,truncate table语句Privilege按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户 a 访问了用户b的表时(如select * fromb.t)会用到select any table权限,故会被审计。
Oracle数据库学习笔记_Oracle添加主键primarykey的四种⽅法创建主键oracle主键添加语句通常紧跟在建表语句之后,也可以直接嵌在列声明⾥创建,oracle创建主键时会⾃动在该列上创建索引。
常见⽅法⼤概有以下5种:⽅法⼀、使⽤add constraint ⽅法添加主键约束alter table 表名 add constraint 主键名 primary key (列名1,列名2,...)⽅法⼆、使⽤索引创建主键(和⽅法⼀没有区别,可以将⽅法⼀理解为省略了using index)alter table 表名 add constraint 主键名 primary key (列名1,列名2,...)using index [index_name];当省略using index后⾯的index_name时,创建主键的同时创建同名索引;当使⽤已有索引index_name创建主键时,注意索引列和主键列应该相同才能创建成功。
⽅法三、直接添加主键alter table 表名 add primary key (列名1,列名2,...) ;同样,创建主键的同时创建同名索引。
⽅法四、参数列内添加主键create table ALERT_RESULT_EVENT_C(data_date VARCHAR2(8) not null,object_id VARCHAR2(600) not null,event_id VARCHAR2(20) not null,ratio NUMBER(22,4),pairing_object_id VARCHAR2(128),index_value_1 VARCHAR2(128),index_value_2 VARCHAR2(128),constraint PK_ALERT_RESULT_EVENT_C primary key (DATA_DATE, OBJECT_ID, EVENT_ID));删除主键alter table 表名 drop primary key ;采⽤该语句删除主键时,同名索引也会被删掉。
【Oracle学习笔记】定时任务(dbms_job)⼀、概述Oralce中的任务有2种:Job和Dbms_job,两者的区别有:1. jobs是oracle数据库的对象, dbms_jobs只是jobs对象的⼀个实例,就像对于tables, emp和dept都是表的实例。
2.创建⽅式也有差异,Job是通过调⽤dbms_scheduler.create_job包创建的,Dbms_job则是通过调⽤dbms_job.submit包创建的。
3.两种任务的查询视图都分为dba和普通⽤户的,Job对应的查询视图是dba_scheduler_jobs和user_scheduler_jobs,dbms_jobs对应的查询视图为dba_jobs和user_jobs。
这⾥主要是介绍Dbms_job。
⼆、使⽤1、创建job:1BEGIN2 DBMS_JOB.SUBMIT(3 JOB OUT BINARY_INTERGER,--输出变量,是此任务在任务队列中的编号,也可以⾃定义,⼀般不传4 WHAT IN VARCHAR2,--执⾏的任务的名称及其输⼊参数5 NEXT_DATE IN DATE DEFAULT SYSDATE,--任务执⾏的时间6 INTERVAL IN VARCHAR2DEFAULT NULL,--任务执⾏的时间间隔7 NO_PARSE IN BOOLEAN DEFAULT FALSE,--⽤于指定是否需要解析与作业相关的过程8 INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,--⽤于指定哪个例程可以运⾏作业9 FORCE IN BOOLEAN DEFAULT FALSE--⽤于指定是否强制运⾏与作业相关的例程10 );11END新⼿可以使⽤窗⼝创建:2、删除job: dbms_job.remove(jobno); -- jobno任务号3、修改要执⾏的操作: job:dbms_job.what(jobno, what); --指定任务号以及存储过程4、修改下次执⾏时间:dbms_job.next_date(jobno, next_date); --指定任务号的时间5、修改间隔时间:dbms_job.interval(jobno, interval); --指定任务号的间隔时间6、改变与作业相关的所有信息,包括作业操作,作业运⾏⽇期以及运⾏时间间隔等.1 dbms_job.change(2 job in binary_integer,3 what in varchar2,4 next_date in date,5 interval in varchar2,6 instance in binary_integer default null,7 force in boolean default false8 );例⼦:dbms_job.change(2,null,null,'sysdate+2');6、启动job: dbms_job.run(jobno); --指定任务号启动7、停⽌job: dbms.broken(jobno, broken, nextdate); –broken为boolean值 N代表启动,Y代表没启动(STOP)三、Interval 说明间隔/interval是指上⼀次执⾏结束到下⼀次开始执⾏的时间间隔,当interval设置为null时,该job执⾏结束后,就被从队列中删除。
韩顺平oracle学习笔记第0讲:如何学习oracle一、如何学习oracleOracle目前最流行的数据库之一,功能强大,性能卓越。
学习oracle需要具备一定基础:1.学习过一门编程语言(如:java ,c)2.最好学习过一门别的数据库(sql server,mysql , access)教程推荐:oracle使用教程,深入浅出oracle记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解Oracle基础部分:oracle基础使用; oracle用户管理; oracle表管理Oracle高级部分:oracle表的查询; oracle的函数; oracle数据库管理;oracle 的权角色; pl/sql 编程;索引,约束和事物。
期望目标:1 学会安装、启动、卸载oracle2 使用sql *plus工具3 掌握oracle用户管理4 学会在oracle中编写简单的select语句第1讲:基础语法内容介绍:1.为什么学习oracle2.介绍oracle及其公司的背景3.学会安装、启动、卸载oracle4.oracle开发工具5.Sql*plus的常用命令6.oracle用户管理一、主流数据库包括:●微软:sql server 和 access●瑞典:mysql AB公司●IBM公司:DB2●美国sybase公司:sybase●IBM公司:infromix●美国oracle公司:oracle(目前最流行的之一)二、oracle安装,启动及卸载1.系统要求:操作系统最好为windows2000内存最好在256M以上硬盘空间需要2G以上2.oracle安装会自动的生成sys和system两个用户说明:○1Sys用户是超级用户,具有最高权限,具有sysdba角色,create database 的权限,默认密码是manager○2System 用户是管理操作员,权限也很大,具有sysoper角色,没有create database权限,默认密码是 change_on_install○3一般讲,对数据库维护,使用system用户登录就可以了3.启动oracle右键单击我的电脑->服务和应用程序:服务->启动OracleServiceMYORA1(MYORA1是安装oracle时起的名字各有不同)和OracleOracleHome90TNSLlistener4.卸载oracle1、先关掉oralce,net stop OracleServiceORCL(ORCL是我的实例名字,换成你的),或者去我的电脑服务中关闭2、开始->程序->Oracle - oracle的版本号,我的是10ghome->Oracle Installation Products->Universal Installer 卸载oracle3、进注册表,regedit,删除选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。
培训第二天(上午)学习视频《韩顺平oracle视频》学习中遇到的想法:1.sql server 数据——》oracle(编程是实现java,先读在插入)一,oracle的安装1.oracle数据库自带用户 sys(默认密码:manager)(最好权限,可以create database),system(默认密码:change_on_install)。
二,oracle的启动1.启动一个oracle实例,即启动一个单个数据库。
2.管理——服务 oracleservice实例名(一个实例代表一个数据库)+oracle……listener三,oracle的卸载1.卸载需要动注册表(可观看视频)四,sql plus常用命令1.显示用户show user2.链接命令conn 用户名/密码disc3.修改密码passw4.运行一个脚本start和@ 如:start d:\aa.sql || @ d:\aa.sql5.编辑一个脚本edit D:\aa.sql6.spool 该命令可以将sqlplus屏幕上的内容输出到指定的文件中1. spool d:\b.sql2. select * from3. spool off7.交互 &8 set linesize, set pagesize(分页显示)9.desc 表名(查看表结构)五,oracle常用工具1.sqlplus,sqlplusw,pl/sql developer(第三方独立开发),oracle enterprise manager(图像化界面)六,用户管理1.create user 名 identified by 密(密码不能以数字开头)(新创建的用户是没有任何权限的,甚至是没有登录权限 grant, revoke)2.password 名3.drop user 名(如果用户有表,则加参数cascade)培训第二天(下午)(自己动手遇到无法登陆oracle)(gaotuan:gaotuan、system:G6*******cxz)一,用户授权(对象权限(select insert update delete all create index),系统权限)1.grant connect to 名(登录)2.grant resource to 名(创建数据库对象)3.sqlplus "/as sysdba"(sys登陆)4.alter user scott account unlock;(解锁)二,角色connect ,dba对象权限:with grant option系统权限:with admin option收回父权限时下边的用户也没有相应得权限三,表空间一,表空间作用: 1.控制数据库占用的磁盘空间。
Oracle数据库学习笔记Oracle数据库基础 orcale属于关系型数据库,适⽤于各类⼤,中,⼩,微机环境,是⼀种⾼效率、可靠性好的、适应⾼吞吐量的数据库⽅案。
学习,实验完全免费,商⽤需要⽀付相应费⽤。
Oracle 数据库包括数据库实例,和数据库,⼆者脱离谁都没有存在的价值。
实例是⽤来操作数据库的对象,数据库是⽤来存储数据使⽤的。
Oracle主要组件包含实例组件,数据库组件。
SGA(System Global Area)是Oracle Instance的基本组成部分,PGA(Process Global Area)是为每个连接到Oracle database的⽤户进程保留的内存。
每个实例只有⼀个SGA,所有的进程都能访SGA。
PGA是程序全局区,每个⼀个进程都⼀个PGA,PGA是私有的,只有对应进程才能访问对应的PGA。
数据库中包含:参数⽂件,⼝令⽂件,数据库⽂件,控制⽂件,⽇志⽂件以及归档⽇志⽂件。
Oracle实例进场包含⽤户进程,服务器进程和后台进程。
SGA:系统全局区 系统全局区包含共享池,数据缓冲区,⽇志缓冲区。
“共享池”:是对SQL,PL/SQL程序进⾏语法分析,编译,执⾏的内存区;由库缓存和数据字典缓存组成;其⼤⼩直接影响数据库性能。
“数据缓冲区”:临时存储从数据库读⼊的数据,所有⽤户共享,数据缓存区的⽬的是加快数据读写。
“⽇志缓冲区”:⽇志记录数据库所有修改信息,其先产⽣于⽇志缓冲区,当达到⼀定数量时,由后台进程将⽇志数据写到⽇志⽂件中。
PGA:程序全局区 PGA包含单个服务器进程所需要的数据和控制信息,在⽤户进程连接到数据库并创建⼀个会话时⾃动分配的,保存每个与数据库连接的⽤户进程所需要的信息。
PGA为⾮共享区,只能单个进程使⽤,当⼀个⽤户会话结束,PGA释放。
后台进程 后台进程中包含PMON(进程监视器(Process Monitor)),SMON(系统监视器(System Monitor)),DBWR(数据库书写器(Database Write)),LGWR(⽇志书写器(Log Write)),CKPT(检查点(Checkpoint)),以及其他。
学习oracle笔记一、临时表空间 (3)1.目标 (3)2.临时表空间的作用 (3)3.临时表空间组 (3)4.临时表空间的操作 (3)二、UNDO表空间(undo撤销,redo重做) (5)1.目标 (5)2.UNDO管理方式的改变 (5)3.Undo表空间概念 (5)4.Undo相关的重要的参数 (6)5.Undo表空间的操作 (7)6.Oracle11G undo表空间的新特性 (8)三、逻辑备份与恢复 (8)1.目标 (8)2.备份与恢复简介 (8)3.故障类型 (9)4.传统的导出与导入实用程序 (9)5.导出 (11)6.导入 (12)7.导出导入三种方式 (14)8.可传输表空间 (14)9.oracle11G的数据泵 (15)10.Expdp重要的参数 (15)11.inmdp的重要参数 (19)四、数据装载 (20)1.目标 (20)2.数据的装载 (20)3.SQL*LOADER (21)4.外部表 (23)五、闪回flashback (25)1.目标 (25)2.9I的闪回查询 (25)3.10G中的闪回版本查询 (26)4.10G的闪回事务查询 (27)5.10G的闪回表 (27)6.闪回删除 (28)7.10G的闪回数据库 (29)六、物化视图 (30)1.目标 (30)2.问题的提出 (30)3.物化视图的简介 (31)4.物化视图的作用 (32)5.创建物化视图时需要的权限 (33)6.创建物化视图时的选项 (33)7.基于主键的物化视图 (34)8.基于rowid的物化视图 (36)七、使用物化视图和exp实现生产库的逻辑备份的例子 (37)1.问题的提出 (37)2.问题的解决 (37)一、临时表空间1.目标2.临时表空间的作用临时表空间在硬盘上3.临时表空间组4.临时表空间的操作查看表空间:Select * from v$tablespace;Select * from dba_tablespaces;查看数据文件:Select * from dba_data_files;查看临时数据文件:Select * from dba_temp_files;Select * from v$tempfile;查看默认的临时表空间:Select * from database_propertieswhere property_name=’DEFAULT_TEMP_TABLESPACE’;创建临时表空间,不属于组:Create temporary tablespace temp2 tempfile’F:\data\orcl\tem2a.dbf’ size 10M autoextend on;创建临时表空间,属于组:Create temporary tablespace temp3tempfile’F:\data\orcl\tem3a.dbf’size 10M autoextend ontablespace group temp_grp;查看临时表空间组:Select * from dba_tablespace_groups;把temp2加入到temp_grp组内:Alter tablespace temp2 tablespace group temp_grp;把temp2移出temp_grp组:Alter tablespace temp2 tablespace group ’’;给temp2表空间添加一个临时文件:Alter tablespacetemp2 addtempfile’F:\data\orcl\tem2b.dbf’size 10m autoextend on;修改系统默认的临时表空间为另一个临时表空间:Alter database default temporary tablespace temp2;修改系统默认的临时表空间为一个临时表空间组:Alter database default temporary tablespacetemp_grp;二、UNDO表空间(undo撤销,redo重做)1.目标2.UNDO管理方式的改变3.Undo表空间概念4.Undo相关的重要的参数查看undo相关信息:Show parameter undo;5.Undo表空间的操作增加一个undo表空间:Create undo tablespace undotbs2 datafile’F:\DATA\ORCL\undotbs201.dbf’ size 10m autoextend on;给undotbs2表空间增加一个undo数据文件:Alter tablespace undotbs2 add datafile’F:\DATA\ORCL\undotbs202.dbf’ size 10m;查看系统默认undo表空间:Show parameter undo;切换undo表空间:Alter system set undo_tablespace=undotbs2;启用rententiongarentee:Alter tablespace undotbs1 retention guarantee;查看表空间是否启用了rententiongarentee:Select * from dba_tablespaces;取消启用rententiongarentee:Alter tablespace undotbs1 retention no guarantee;查看undo表空间使用情况:Select * from v$undostat;Select to_char(begin_time,’yyyymmdd hh24:mi:ss’),to_char(end_time,’yyyymmdd hh24:mi:ss’),undoblks,txncount from v$undostat;6.Oracle11G undo表空间的新特性三、逻辑备份与恢复1.目标2.备份与恢复简介3.故障类型语句故障:不需要人工处理。
oracle笔记---SGA之⾼速缓存区SGA(system global area)系统全局区域,在内存中分配⼀份共享内存区域为oracle的⼀些关联进程运⾏所共享。
如DBWn,PMON。
SGA分为有以下⼏部分组成:1.⾼速缓存区2.重做⽇志缓存区3.共享池4.⼤池5.java池6.流池7.固定SGA⾼速缓存区⾼速缓存区的主要作⽤于缓存从数据⽂件中读取的数据块。
当⽤户请求数据时,oracle会从⾼速缓存区中检索,如果检索到了对应的数据块即缓存命中,oracle便会直接从缓存区中读取数据。
如果没有命中,oracle的读进程会从数据⽂件中读取对应的数据块,将对应的数据块加⼊到缓存区中。
oracle中缓存区中对应块存在未使⽤,⼲净和脏块这三种状态。
未使⽤是指对应的区域没有缓存任何数据,⼲净状态是指区域中缓存中数据和数据⽂件中的数据⼀致状态,脏状态指定是缓存区缓存的数据已被修改和数据⽂件中的数据不⼀致。
oracle从数据⽂件中读取的数据块置换的是处于⼲净状态和未使⽤状态的缓存中区域。
oracle会在特定是时间点会将⾼速缓存区中的脏数据和冷端中数据同步到数据⽂件中。
oracle利⽤的是LRU(最近最少)原则来区分是该数据块处于冷端还是热端中。
触发DBWn同步数据⽂件的条件:1.缓存区中处于⼲净状态或者未使⽤状态中的区域低于某⼀个阈值的时候。
2.需要推进⼀个检查点。
如做切换⽇志以及ALTER SYSTEM CHECKPOINT命令3.数据表空间处于readonly,offline在缓存区中oracle利⽤LRU的原则来辨别数据块处于冷端还是热端。
使⽤访问触摸器来记录这个区域数据的访问次数,来区别这个数据是出于冷端还是热端。
缓存区中的值的数据块可以处于订住状态,以便⽤户的再次访问。
订住状态的实现也是通过访问触发器来实现的,正常情况下每隔3秒会触发⼀次访问记录器。
缓存池:⾼速缓存区中可以存在多种类型的缓存池,默认情况下只有⼀个缓存池,对应的为配置参数⽂件中对应的默认的数据块的⼤⼩为db_block_size参数设置。
一、安装For each Linux media server, ensure that the SCSI Generic (SG) driver is installed echo modprobe sg >> /etc/rc.moduleschmod +x /etc/rc.modulesmkdir -p /usr/local/oracle/backupcd /usr/local/oracle/backup/media_dir/setup要安装oracle安全备份软件,必须执行以下步骤:(1)、以root 用户身份执行以下命令,创建OSB 主目录:mkdir -p /usr/local/oracle/backup(2)、浏览至您的OSB 主目录:cd /usr/local/oracle/backup(3)、确保提供了解压缩实用程序:ln -s /bin/gunzip /bin/uncompress(4)、在您的OSB 主目录中,以root 用户身份启动Oracle 安全备份的安装。
/root/osb-10.4.0.1.0_linux.x64_cdrom110923/setup(5)按提示输入即可二、管理磁带使用的obtool命令行工具,首先创建带库然后创建磁带mkdev -t library -o -a rman:/dev/sg13 lib13mkdev -t tape -o -a rman:/dev/sg7 -l lib13 -d 1 tape1301mkdev -t tape -o -a rman:/dev/sg8 -l lib13 -d 2 tape1302mkdev -t tape -o -a rman:/dev/sg9 -l lib13 -d 3 tape1303使用lsdev查看已经创建的devicelsdev列出每个带库的详细信息:inventory -L lib13查看卷信息:lsvol -L lib13 -l可以通过lsdev命令查看,磁带的状态是否还处于offline状态lsdev -g tape1301现在向磁带tape01载入一个卷,载入完成后,状态就是online状态:loadvol -D tape1301 -m write 11卸载磁带unloadvol -D tape1301三、设置备份Configure: Database Backup Storage Selectors可以在这个菜单下,指定不同的备份类型,备份到不同的磁带驱动,如果磁带写满,自动换带。
ORACLE学习资料2008-3-151.概要Oracle 1Z0_031课程的主要内容是Oracle数据库的体系结构, 数据库的组件和数据库的备份和恢复所有内容都归结到下面的图:ORACLE 总图2.数据库的启动与关闭2.1.数据库服务及数据库的组成2.1.1.作为一个数据库工具,Oracle是提供数据服务和信息管理的工具,一个Oracle的用户进程并不能直接操作Oracle实例, 必须借助于Oracle服务器进程. 一个Oracle服务由Oracle数据库实例和数据库组成, 数据库实例由内存和后台进程组成, 数据库由数据文件, 控制文件和日志文件组成;他们三类文件是数据库的必需文件,除此之外,数据库还有参数文件,密码文件以及归档日志文件.2.1.2.实例是访问数据库的方法, 对于Oracle数据库而言,一个数据库可以被多个实例打开,但是一个实例只能打开一个数据库; 利用实例的优点就是这种方式数据库不直接对外, 支持多用户访问协同操作及更好的数据一致性.2.1.3.组成数据库实例的内存为系统全局区(SGA),它由共享池(share pool),数据库缓存(Database buffer cache),重做日志缓存(Redo log buffer cache)和java pool, large pool组成,其次还有程序全局区PGA; 组成数据库实例的后台进程主要有PMON(进程监控),SMON(系统监控),DBWR(数据库写进程), LGWR(日志写进程), CKPT(检测点进程)和其他进程.2.1.4.SGA ; 9i中系统全局区有一个参数SGA _MAX_SIZE , 在这个参数范围内, SGA中的shared pool , data buffer cache 和log buffer cache可以动态调配空间, 三个的和不能大于SGA _MAX_SIZE .例:ALTER SYSTEM SET DB_CACHE_SIZE=100M; 有可能提示错误: ORA-02097: parameter cannot be modified because specified value is invalid; ORA-00384: Insufficient memory to grow cache 由于余下的空间不够它的增长.2.1.4.1.Shared Pool: 用来存储最近使用的SQL或是最近使用的数据, 可以用下面的语句修改其大小: ALTER SYSTEM SET SHARED_POOL_SIZE=64M;它由library cache和Data dictionary cache组成. Library cache 中存放最近使用的SQL和PL/SQL的执行计划,编译树及文本等,它不能单独定义,只能借助Shared pool sizing参数定义它的大小, 它采用的算法是最近最少使用算法, 同时它也是由两部分组成,即shared SQL area和shared PL/SQL area ; Data dictionary cache又称row cache, 其中存放的是用户的权限信息,访问的对象,database的结构信息等,对于用户的SQL进行校验和有没有权限进行操作,它也需要通过借助shared pool sizing参数来定义它的大小.2.1.4.2.Database Buffer Cache: 9i中支持系统多块大小,即在9i环境下可以指定多个不同块大小的cache size ,有两套参数DataBase Buffer Cache块大小,他们分别是:showparameter db,根据建立的TableSpace块大小的不同可以设定不同的db_buffer_cache_size参数,db_cache_size来设定defalut的块大小, 9i之前版本,在database创建的时候,块大小固定,由参数db_block_buffer指定,即Db_block_buffers*Db_block_size.无论是依据哪种参数设定,ORACLE使用内存的基本单位是相应的TABLESPACE块的大小.2.1.4.3.Redo Log Buffer Cache: 记录了系统里的用户,用户的操作,操作的数据变化. 它的主要用途就是恢复. 它的大小由一个参数叫做是LOG_BUFFER来指定(showparameter Log_buffer).它是按照”环路”顺序使用的.rge Pool : 是SGA的可选结构组成部分,它主要使用在I/O SLAVES (IOSLAVES是在单cpu os不支持异步的时候模拟异步),backup 和restore操作或是设置共享服务器的时候来存储用户的信息;建议在使用共享服务器的时候,使用它来存放用户全局区(UGA)的一些信息它的大小由LARGE_POOL_SIZE指定, 可以动态设定它的大小(Alter system setlarge_pool_size=32M;)2.1.4.5.Java Pool : 是SGA的可选结构组成部分, 它是在Oracle使用java组件的时候使用, 它的大小由参数JAVA_POOL_SIZE指定2.1.5.PGA (程序全局区): 是针对服务器进程保留的一个内存区域, 根据服务器环境的不同, 它包含的内容也有所不同: 使用独占服务器,它包含栈空间,用户Session的信息,排序区域及游标状态,使用共享服务器的时候,用户的Session信息配置在SGA的large pool 里.其他的在PGA里2.1.6.ORACLE的进程结构(Process Structure): ORACLE进程包括用户进程, 服务器进程和后台进程2.1.6.1.用户进程: 启动一个工具(如:sqlplus)或是程序就启动了一个用户进程, 它不能直接和Oracle服务器进行交互. 用户进程通过后台启动的服务进程访问ORACLE数据库(它不能直接访问数据实例或是数据库) , 用户命令操作数据库所发生的数据改变通过内存完成, 即先将数据调入到内存中, 在内存中进行修改,最后写回到数据库中; 这些工作的完成依赖于Instance的内存结构和后台进程2.1.6.2.服务器进程: 连接用户进程到Oracle的实例(Instance) , 它是用户进程建立了session后才生成或是派生一个服务器进程给这个用户进程.它来进行用户进程的Calls 并返回Results, 它可以独占也可以共享.2.1.6.3.后台进程: Oracle的Instance启动后就启动后台进程, 它有以下必需的进程PMON(进程监控),SMON(系统监控),DBWR(数据库写进程), LGWR(日志写进程),CKPT(检测点进程)(查看SQL为: SELECT * FROM V$BGPROCESS WHEREPADDR<>'00';) 其他的为可选后台进程.2.1.6.3.1.DBWR(数据库写进程): 将数据写回到数据库中, 触发并启动该进程的事件有:checkpoint(同步) ,脏数据达到了一定的程度, 空闲空间过少或没有了空闲空间,Timeout(3秒钟), tablespace offline操作,tablespace readonly操作, Table drop ortruncate操作. 进入tablespace begin backup模式.2.1.6.3.2.LGWR(日志写进程): 将SGA中Redo Log Buffer的内容写到Database的Redo LogFiles里, 触发并启动该进程的事件有: 提交(At commit) , Redo Log Buffer有1/3满, redo的日志超过1M, Every three seconds, 还有Before DBMn writes (写日志优先)2.1.6.3.3.SMON(系统监控): 系统在重启的过程中负责需要的recovery , 他会被启动进行rolls forward in the redo logs , open the database for user acess , roll back uncommittransactions ; 除此还会每隔3秒对自由空间进行整理, 对临时段的清空2.1.6.3.4.PMON(进程监控): 回滚被异常终止的用户进程,包括取消事务,释放锁, 释放其他资源和重启死掉的调度器(dispatchers)(这个在共享服务器中使用)2.1.6.3.5.CKPT(检测点进程): 用来实现数据同步, 该进程执行之前它会启动DBWR进程将数据强制写入物理文件,用检测点信息更新数据文件和控制文件的文件头, 他们的文件头里记录的是同步信息2.1.6.3.6.可选的进程: ARCn 归档进程, 它必须使用在数据库的归档日志模式下, 可以理解为归档进程自动备份在线日志.2.1.7.DATABASE的逻辑结构: 分为四部分, 表空间(tablespace), 段(segments), 分区(extends)和块(blocks).可以理解Database就是一个房子,而表空间就是房间, 段就是一系列相同东西的集合, 分区是Oracle的一个分配单位,为了提高Oracle的存取速度, 块是存取单位, 分区包含合理数量的块, 以便一次分配一定数量的块, 避免频繁的分配块2.2.数据库的启动分为三个阶段(nomount、mount和open)2.2.1.数据库启动必须有足够的权限, 如系统管理员sysdba.2.2.2.nomount :命令startup nomount;此阶段是启动数据实例, 此过程需要读取参数文件, 然后分配物理内存空间给数据库实例,启动后台进程,通过参数文件定位到控制文件 在实例启动过程中会写logfile,这个文件记录了数据库实例启动过程中的一些相关信息,如果没有会自动创建一个(路径举例如下:D:\oracle\admin\yangsl\bdump)完成后的数据库状态为started,这时能访问的数据有和数据库实例相关的表(如:v$instance)和后台进程相关的表(如:v$bgprocess、v$sga) 可以创建数据库实例,重建控制文件。
2.2.3.mount :命令alter database mount;此阶段数据库读取控制文件确认数据库的结构信息将实例和数据库挂接起来,完成后的数据库状态为mounted,能访问和数据库结构相关表(如:v$database、v$datafile、v$tablespace)可以改变dtabase的日志模式,rename file,完成database的恢复。