Oracle笔记.docx_第1页
Oracle笔记.docx_第2页
Oracle笔记.docx_第3页
Oracle笔记.docx_第4页
Oracle笔记.docx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DBA任务:评估数据库服务器硬件的可用性,适应性安装ORacle软件应用数据库规划创建数据库,实施数据库规划(内存,外存,进程)创建数据库备份机制和备份环境创建和维护数据库访问用户实施应用数据库系统,导入基础数据监视数据库,准备从数据库失败中恢复监视数据库,调整数据库性能工具:sqlplus,PL_SQL developer(偏开发),toad(偏性能监控,报表,管理)安装数据库:数据库管理工具:DBCA,DBUA,netca,netmgr,oem,SQLPlus,RMAN,OracleSecureBackup(磁带备份管理),数据泵,SQLLoader(不常用).OEM:emctl start stop set status存储选项:文件系统,ASM,裸设备安装选项:无提示模式安装.为数据库制定计划:不同模板创建不同类型数据库:数据仓库,事物处理数据库,通用数据库.创建数据库:管理Oracle实例:一个Database Control只能管理一个数据库.OEM需要先启动监听才能登陆.调用已存在某脚本文件里的SQL语句:SQLscript.sql数据库网络连接配置:用oracle net manager配置客户和中间件连接,用TNSPing测试oracle网络连通。监听配置文件:$ORACLE_HOME/network/admin/listener.ora支持的方法/限制:$ORACLE_HOME/network/admin/sqlnet.ora监听报错文件:$ORACLE_HOME/network/log/listener.log文件listener.ora内容:TCP,host,port1521,实例(不写,系统默认自己找)。在服务器端。$lsnrctl(start,stop,status,service)$lsnrctl start listener1(指定启动哪一个监听)客户端要连接数据库:要知道监听所在主机,监听端口号,使用的网络协议,监控的数据库服务名(优先找db_unique_name,缺省就是db_name数据库名=db_domain域名由于没设置,所以缺省就是orcl)。SQLshow parameter nameSQLshow parameter db_domain网络连接命名方法:简易连接Easy Connect:缺省。不支持失败转移,不支持RAC。本地命名Local Naming:要求本地参数文件。支持失败转移,支持RAC。$ORACLE_HOME/network/admin/tnsnames.ora在客户端定义网络配置工具:$netmgr:新建一个服务名Naming Service,Net Service Name随便取,缺省是scott/tiger可以改。创建一个服务别名:?测试Oracle网络连接:tnsping命令连接数据库管理器OEM:$emctl start/stop dbconsole 在$ORACLE_HOME/install/readme.txt里有网址。启动顺序:监听-数据库-OEM-SQL*Plus关闭顺序:反过来dbca,netca,emcaSQLalter user scott identified by tiger account unlocknetca主要用来配置监听和配置NET服务名,以便远程连接数据库。netmgr主要是配置你创建的监听服务,因为你创建完监听,还要为监听配置,监听你创建的数据库实例!Oracle客户端如何配置?实际使用中主机+客户端怎么配置?练习配置linux主机+linux客户端,linux主机+Windows客户端, Aix主机+linux客户端,Aix主机+Windows客户端oralce 10g 是web方式访问,也可以不安客户端服务器端本身就包含客户端的功能服务器端自动包含客户端的,没有必要重装一个客户端。客户端打不开69:1158/em问题:关防火墙,换浏览器(如果用linux虚拟机,如果用host-only方式,混杂模式选全部允许,在cmd可以ping通169和161,用Win7主机可以打开OEM)一个实例配置多个监听1)不同的实例以不同的实例名区分,但端口都是1521;一个监听器可以监控多个实例多个实例可以在同一端口监听缺省的是1521端口,也可以是自定义端口2)每个实例应有一个监听器与之对应;一个监听器可以监控多个实例3)tnsname中,使用不同的实例名来建立不同的连接;tnsname中的别名是不受限制的,但是实例名及端口要和监听器监听对应tnsping的是net service name用netca和netmgr在服务器端新配置一个监听listener1在客户端新配置服务名orcl1新端口1522:如果想用1522连OEM监听端口从1521改为其他端口,要改OEM配置文件:/db/oracle/product/11.2/db_1/ASUS_orcl/sysman/config/perties/db/oracle/product/11.2/db_1/ASUS_orcl/sysman/emd/targets.xml才能登陆OEM.监听:监控服务器端口号,知道主机有哪些实例.监听相当于接线员,将用户进程的请求转接到服务器进程,通过服务器进程连接到实例,然后即使关闭监听,也不影响当前已连接的用户访问数据库,但再有新用户就无法连接到实例.用户也可以通过节点2的监听连接到节点1的监听,再连接到节点1的数据库.Failover失败转移和Loadbalance负载平衡与RAC没有必然关系,是通过网络机制实现的.data格式:表示2进制 #strings !$ 可以查看2进制文件#gpasswd 将用户移出或加入某个组SQL语句执行步骤:解析,执行,获取.export ORACLE_SID=指定想启动的数据库名DBA对表的管理,索引的管理,视图的管理:用OEM创建启动监听,启动数据库,启动OEM($ORACLE_HOME/install/readme.txt)创建表的主键约束时,Oracle自动定义索引,约束名就是索引名.为视图设定检查约束,约束条件名称.创建public类型的同义词.表空间分本地管理和数据字典管理(一般不用).SQL和PL_SQL:用ed文本编辑器改输错的命令:SQLdefine_editor=geditSQLed 编辑保存关闭SQL/ 执行或SQLdefine_editor=viSQLedSQL/或用rlwrap第三方软件.PL/SQL建表:SQLcreate table t10(a1 number(10),a2 number(10),a3 number(10);SQL begin 2 for i in 1.10000 loop 3 insert into t10 values(i,i,i); 4 end loop; 5 commit; 6 end; 7 /看oracle官方文档中的Reference和SQL Reference数据定义语言:DDL(create,alter,drop等)数据操纵语言:DML(Insert,Update,Delete,commit)SQL Plus:用exit退出会commit,直接关终端不会commit。数据查询语言:DSL(seelct)SQLselect username,account_status from dba_users;数据库管理员:SYS(有sysdba权利)可以启动,关闭,备份,恢复 SYSTEM(无sysdba权限)可以建表,操作管理OEM工具:DBSNMP 监控数据库 SYSMAN:select * from tab(资料库存了一些表和视图)数据控制语言:DCL(Grant,Revoke)约束:constraint.相关视图:user_constraints查约束名字和类型.user_cons_columns查约束在哪个列上.表级约束: create table table2(xx int,no int,name varchar2(10) ,primary key (no,name)列级约束: create table table1(xx int,no int,name varchar2(10) primary key)列约束和表约束:约束可以是列约束或表约束列约束被指定为列定义的一部分,并且仅适用于那个列表约束的声明与列的定义无关,可以适用于表中一个以上的列.当一个约束中必须包含一个以上的列时,必须使用表约束.约束类型:C检查约束:非空(not null)属于检查P主键约束PK:不能为空,不能重复.一列或多列组合.关系型数据库要求每个表都有主键.R外键约束FK:包含外键的表是子表.主键表里有,外键表才能插入数据.要删主键表里的数据,外键表有子数据,不能删(例如先删雇员再删部门).外键可以为空.级联删除主键表和外键表:在最后加on delete cascade.U唯一约束:可以为空,一个表可以有多个.一般不用.建了P或U后,ORacle会自动给该列建索引由其他表中的数据建表:create table t1 as select * from t2.产生的表没有主外键.SQLcreate table emp10(empno number(6) not null,empname varchar2(40) not null,deptno number(2),constraint emp10_pk primary key(empno),constraint emp10_fk foreign key(deptno) references dept10(deptno);例:create table employee1 (empid varchar2(5) primary key, 主键约束lastname varchar2(25) not null, 非空约束firstname varchar2(25),salary number(10,4) check (salarydrop table dept purge 物理删除:数据行,结构,约束,索引都删掉,同义词,视图不会级联删除,但对象无效.drop table:属于事物,基于表的checkpoint操作.索引:是一个对象,用空间换时间,索引存列的值和rowid.Null值无索引.索引适用于检索少数据量,数据散的情况,表中如果索引多,删除就慢.索引重建:可以建函数索引:在列参与表达式,索引失效时.多个列创建索引顺序:distinct最大的在前.2%-4%,25% 1GB以上的再单独建索引.SQLcreate (unique) index dept_index on dept(dname);视图:user_indexes当前用户的索引视图,user_ind_columns查索引在哪个列上,列名column_position显示该列的位置.带索引的列可以有多个,其中排在第一位置的列是放在where子句中的.简单视图:只包含一个基表.可以插入,修改,删除.基表也会被改.复杂视图:包含一个以上基表.多数情况,不能对复杂视图进行数据更新.视图:三个功能 封装复杂的SQL逻辑,安全,SQL的应急优化.简单视图,复杂视图视图开头:dba_,all_,user_ v$,gv$,x$,_$视图加约束,必须用select *视图不支持alter,支持replacecreate权限相当于有drop权限.权限:create session=connect系统权限,对象权限,级联授权时,中间断开.序列sequence:表的序列常被用来作为表的主键列,保证行的值不重复.currval:返回序列当前值nextval:增加序列并返回新值序列:第一次调用时,值为start_with,再调用时,必须先调用nextval.l序列号不参与回滚SQLcreate sequence seq1;SQLselect * from user_sequences;同义词synonym:别名,数据库中使用的表或视图实际上都是同义词.SQLcreate (public) synonym emp_data for scott.emp;同义词:可以用于安全限制用户操作数据库.某个用户下,建的公有同义词名称可以与表同名.数据库链接:DB Link:分布式数据库基础.两台机器:都要启动监听.用netmgr建service naming(107)如果用scott用户,要授权:grant create database link to scottconn scott/tigercreate database link hhh connect to scott identified by tiger using 107试select table_name from user_tableshhhselect * from user_db_linksSQL语句中-表示注释查询结果排序:order by desc ascwhere子句指定查询条件:=,=,=,!=,=,in,not in,any,some,all,exists,between,like,is(not)null,not,|例:select empno|ename,sal from emp合成列.select drop table |table_name|; from user_tables生成语句.连接查询: 外链接加分组要注意外连接:左右连接(+)例:自连接:例select e1.empno,e1.ename,e1.sal from emp e1,emp e2 where e1.sal=e2.sal and e1.empnoe2.empnojoin.using可指定链接列分组查询:子查询:非关联子查询:引用不同的表例:select deptno,dname from dept where deptno in(select deptno from emp where ename like %KING);关联子查询:引用相同的表例:select empno,ename,deptno,sal from emp a where sal(select avg(sal) from emp b where b.deptno=a.deptno);多层子查询:最多用到3层,再多就说明表结构有问题多行子查询:in等价于=any.用not in 时要保证子查询非空,加where限定(is not null,id=id,not exits)主小子大:用exist 主大子小:用in例:select ename,deptno,sal from emp where deptno=(select deptno from dept where loc=CHI);例:select * from dept where exists (select * from emp where dept.deptno=emp.deptno and emp.sal2500) order by deptno;例:select ename,sal,deptno from emp where deptno in (select deptno from dept where dname like %A);多表查询:select d.dname,e.empno,e.ename from dept d,emp e where d.deptno=e.deptno;组函数:count(*)不忽略空值,其它聚合函数都忽略空值.count(列)忽略空值.count(1).sum例:select sum(comm)/count(*)和avg(comm) from emp结果不同如果要计算行数,用count(*)不是好方法.应该用count(列名)或count(rowid).例:select count(distinct job) from emp;max,min:数字,字符串,日期. avg,count,sum:只放数字例:select job,count(job) from emp group by job;select deptno,job,avg(sal) from emp group by deptno,job;单行函数:abs,round(n,integer)四舍五入,trunc(n1,n2)截断函数,substr返回字符串,lpad,upper大写转换,to_char字符转换,months_between两日期间相差月数,add_months,next_day,last_dayDecode:日期类型和数字类型可以和字符串类型隐式转换.!=,between.and,IN( , , )是or的逻辑,not in是and的逻辑,like %表示0或多个字符,_表示一个字符,escapesqlselect instr(helloworldwsss,w,2,2) from dualsqlselect trim(H from HHHelloWorldHHH) from dual去掉两头的所有H转换函数:数字to_char显式转换到字符串to_date转换到日期日期to_char显式转换到字符串to_number转换到数字.ddd:一年的第几天d:周日 Q:季度空值函数:NVL:9i,NVL2:10g,11g,nullifcoalesce与trim类似,但用的很少.case.end:9i以后,decode:9i以前,只能判断等于的逻辑.行转列常用到.case when:可以支持判断范围.null值参与运算,结果都为null. null不等于0也不等于空白is null区别=null排序时,不指定nulls first(null作为最大值)或nulls last(null作为最小值),把null值作为最大值处理.字符,日期:左对齐数字:右对齐 number(10,2)表示全长10位,小数点占2位char(10):定长(不够要用空格补齐)varchar2(10):可变长度数据库平常读写比例: 7:3单引号:q 转义多行函数:分析函数:报表用分组:group by (大集合变小集合),基于分组做统计(加入聚合函数)例:select deptno,job,count(*),sum(sal) from emp group by deptno,job;例:select tablespace_name,sum(bytes/1024/1024) from dba_data_files group by tablespace_name;统计表空间大小例:select deptno,job,count(*),sum(sal) from emp group by rollup(deptno,job) order by deptno; cube(deptno,job) grouping sets(deptno,job)筛选组:having(分组条件),order by排序例:select deptno,job,count(*),sum(sal) from emp where deptno10 group by deptno,job having sum(sal)6000 order by deptno;报表高级分组函数:rollup,cubegroup by rollup(colx,coly,colz):n=3,1+n=4,colx,colx+coly,colx+coly+colz,allgroup by cube(colx,coly,colz):n=3,2的3次方=8, colx,coly,colz,colx+coly,colx+colz,coly+colz,colx+coly+colz,all例:select deptno,job,count(*) from emp group by rollup(deptno,job);select deptno,job,count(*) from emp group by cube(deptno,job);内连接:只返回满足连接条件的值外链接:可用+例:select d.dname,d.deptno,e.empno,e.ename from dept d,emp ewhere d.deptno=e.deptno(+) order by d.deptno;例:select * from dept where exists(select * from emp where dept.deptno=emp.deptno and emp.sal2500) order by deptno;全外链接:不能用+例:数据集合:union:select * from emp union select * from myemp;不包括重复行union all:select * from emp union all select * from myemp;包括所有数据intersect: select * from emp intersect select * from myemp;查交集minus:select * from emp minus select * from myemp;表emp中去掉与表myemp中相同的数据死锁: 一般来说都是应用逻辑问题,找到相应的两段程序,看看事务中的逻辑顺序是否交叉。&乱乱乱乱乱乱乱&PL/SQL:oracle 中 set serveroutput on打开oracle自带的输出方法dbms_output。在执行set serveroutput on以后,使用dbms_output方法可以输出信息,例如:dbms_output.put_line(This is);变量定义和赋值,条件语句,循环语句.PL/SQL程序块中的SQL语句为结果集(隐式游标),显式游标需要声明,用法,异常处理过程:不用返回值函数:一定有返回值包:触发器:可以在DML语句执行前后触发,触发时机是update,insert,deleteSQL语句例子:sql语句执行顺序:from,where,group by,having,order by,selectdistinct:显示时去掉重复的行连接符|:把两个列合成一个列显示,或者拼字符串,如拼成一句话(运维常用,生成维护脚本)select drop table 表1|表2|.SQL进行文件操作:SQL save /home/oracle/01.sql 把当前执行的sql语句保存SQLget /home/oracle/01.sqlSQL/执行get到的语句SQLstart /home/oracle/01.sql 执行文件中的语句SQL /home/oracle/01.sql 执行文件中的语句SQLdefine_editor=geditSQLed /home/oracle/01.sql 编辑文件中的SQL语句SQLspool /home/oracle/01.sql 到spool off之间执行的sql语句保存到文件SQLspool offSQL l 或l1,l2 看sql语句的某一行,可以改Top_N:比如查前3名业务id:业务主键表id:表主键order by加列名或1,2,3结果集中序列号+desc,asc:必须放在最后一行,对结果集排序.如果值相同按数据块的存储顺序排列.替代变量:select * from t1 where job_id=&job_title;两个&:传值.(用在替代变量多次出现,只用输入一次就行)用define可以事先定义变量值.set verify on/off:是否显示提示信息dual:系统公共表,只有一行,但有多列列最好不要放在表达式中.安装完oracle后,/rdbms下是工具集.学习用户:scott,hr,sh操纵语句:merge报表用,trancate释放空间,能rollback.事物结束:commit,rollback,DDL读一致性:SQL发起时,数据是什么样,就是什么,中间做修改不影响,因为从undo中获得.SQLPLUS中exit是隐式提交,disconnect也是.点关session窗口不提交.用PL_SQL Developer做运维.Oracle表最多1000个列,一个表中只能有一个列是long类型,不支持order by,group by.rowid:伪列:rownum,rowid,rowscn模式对象:管理约束:约束校验的时间点,语句级检查 立即,延迟性检查 事物结束(commit,rollback)数据字典:user_,dba_,all_写磁盘,v$_不写磁盘,动态变化,gv$ rac用的TimeStamp:时间戳海量数据:几百个T以上ETL:抽取,转换,加载merge:select,from,where,having,order by:后面都可以带子查询.&乱乱乱乱乱乱乱&数据库概念:用sys给scott权利建视图:SQLgrant create view to scott;SQLcreate view v1 as select * from t1;SQLselect * from v1;DDL语句CREATE,DROP,RENAME,GRANT等作为独立事物,自动commit回滚段:Rollback Segment表级锁:防止DDL语句行级锁:别人可以改其他行10g自动加锁:某个用户修改表时,加两种锁,commit后表示修改完。两个用户同时改同一行数据,第二个用户执行语句处于等待状态,直到第一个用户commit或Rollback释放锁(同时也释放回滚段)。在sybase中,没有回滚段和锁的概念,在修改时不允许查询。SQL alter user scott identified by tiger account unlock;系统改变号:每个事物产生一个SCN。数据字典:系统用的表和视图.视图是逻辑意义的表,不是真实的表。数据字典视图:用户能查询到。数据字典表:不让用户看。sys:dba_tables,dba_users,dba_views.scott:user_tables,user_views数据字典视图分类:user_:查某用户拥有的对象all_:用户可以访问的(有授权)的对象dba_:整个数据库拥有的对象SQLselect tablespace_name from dba_tablespaces动态视图:v$开头(内存中的信息转化成视图),v$开头的后面没有sSQLselect name from v$databaseSQLselect name from v$datafileSQLselect instance_name from v$instance其他视图:用户常用的数据字典视图:USER_OBJECTS/ALL_OBJECTS/DBA_OBJECTS给出数据库的各种对象信息。USER_TABLE/ALL_TABLE/DBA_TABLE给出数据库表的信息。USER_INDEXES/ALL_INDEX/DBA_INDEX:给出数据库索引信息USER_VIEW/ALL_VIEW/DBA_VIEW:给出数据库视图信息USER_SEQUENCE/ALL_SEQUENCE/DBA_SEQUENCE:给数据库出序号对象信息USER_USERS/ALL_USERS/DBA_USERS:给出数据库用户信息USER_CONSTRAINTS/ALL_CONTRAINTS/DBA_CONTRAINTS:数据库约束信息USER_CONS_COLUMNS/ALL_CONS_COLUMNS/DBA_CONS_COLUMNS:数据库包含列的信息USER_IND_COLUMNS/ALL_IND_COLUMNS/DBA_IND_COLUMNS:数据库索引列信息USER_TAB_COLUMNS/ALL_TAB_COLUMNS/DBA_TAB_COLUMNS:数据库的表列的信息数据库体系结构:$ps -fu oracle 查oracle用户进程$ps -ef |grep ora_启动过程:启动实例(读参数文件)mount(装载控制文件)open(打开数据文件和日志文件)启动完成数据库结构:内存结构,进程结构,存储结构 实例(系统全局区SGA,后台进程)和数据库文件内存结构:SGA(由所有服务器进程和后台进程共享)和 PGA(用于每一个服务器进程或后台进程) 每一个进程使用一个PGA,SGA是包含实例的数据和控制信息的内存区。 SQLselect * from v$sgainfo;SQLshow parameter sga SQLselect name,bytes/1024/1024,resizeable from v$sgainfo Granule Size No 4M 颗粒(内存分配最小单位,根据系统内存大小不同)Fixed SGA Size No 和是4M的整数倍Redo Buffers No 固定值,不能改大小SGA包含以下数据结构:数据库缓冲区高速缓存:缓存从数据库检索的数据块(磁盘数据在内存中的镜像)。存储最近使用的数据块.尺寸由初始化参数DB_CACHE_SIZE决定(现在不用了).重做日志缓冲区:高速缓存重做信息(用于实例恢复),直到可以将其写入磁盘中存储的物理 重做日志文件(记录所有数据块的改变,保证所有数据修改可重现可恢复 几十到100M)。尺寸由LOG_BUFFER决定,顺序使用,循环使用.共享池:缓存可在用户间共享的各个结构.包括库高速缓存(存放解析过的SQL和PLSQL语句,减少重解析.经编译后的代码以及执行计划)和数据字典缓存(行row缓存,包含表,列等对象定义及权限信息.)尺寸由初始化参数SHARED_POOL_SIZE决定(现在不用了)大池:可选区,可为某些大型进程(如备份恢复)提供大量内存.与SQL和PLSQL不相关的块.流池:由oracle stream使用,数据泵用到.流复制用.JAVA池:JAVA程序用.PGA:oracle服务器进程为客户机请求提供服务。每个服务器进程都有自己专用的PGA,这个PGA是在服务器进程启动时创建的.包含:排序区,用户会话信息,光标信息,堆栈空间,SQLshow parameter pga;是一个参考值,Oracle会自己调整大小,oracle会尽量不超过这个参考值,但会根据实际情况增加.进程结构:用户进程(在数据库用户请求连接到Oracle服务器时启动) 服务器进程(可以连接到Oracle实例,它在用户建立会话时启动) 后台进程(在启动Oracle实例时启动)后台进程:系统监视器SMON(出现故障后,在启动实例时执行崩溃恢复任务) 进程监视器PMON(用户进程失败时执行进程清理任务) 数据写进程DBWn(将修改后的块从数据库缓冲区高速缓存写入磁盘中数据文件) 检查点进程CKPT(通过更新数据库所有数据文件和控制文件指出最新的检查点) 日志写进程LGWR(将重做日志条目写入磁盘) 归档进程ARCn(发生日志切换时将联机重做日志文件复制到归档存储器)服务器进程和数据库缓冲区高速缓存:缓存有四种状态:已连接(防止多个会话同时对同一数据块执行写操作,此时其他会话正等待访问该块);干净(缓冲区已解除连接,如果没有再次引用当前数据块,可以考虑立即腾出该缓冲区.此时不是缓冲区内容已与磁盘中存储的数据块内容同步就是缓冲区中包含块的快照);空闲或未使用(实例刚启动,缓冲区为空.与干净相似.);脏(缓冲区不再处于已连接状态,但数据块已更改,DBWn必须先将内容刷新到磁盘,才能腾出缓冲区.)物理数据库结构(数据库文件):构成Oracle数据库的文件:控制文件(1-8个最少2个.包含数据库本身的数据,物理数据库结构信息逻辑结构信息.是二进制文件.用多路控制文件,做3个控制文件的镜像放在不同磁盘);数据文件(一个表空间最多1023个文件.一个文件最大32T.包含数据库中的用户数据或应用程序数据);联机重做日志文件(至少2组.记录数据库的改变,应采用多路日志.三个日志组循环使用,每个组可以有多个成员缺省50M,放在不同磁盘.用来实现数据库实例恢复.如果数据库已崩溃但未丢失任何数据文件,那么使用日志文件可以通过实例恢复数据库)Oracle数据库的附加文件:参数文件(定义启动实例时如何配置实例.初始化,启动实例时读参数文件,Oracle读的第一个文件,在$ORACLE_HOME/dbs下的spfileorcl.ora,二进制文件.文本参数文件pfile:initorcl.ora.创建服务器参数文件:SQLcreate spfile from pfile;SQLcreate spfile=$ORACLE_HOME/dbs/spfileorcl.ora from pfile=$ORACLE_HOME/dbs/initorcl.ora;SQLcreate pfile from spfile;SQLcreate pfile=$ORACLE_HOME/dbs/initorcl.orafrom spfile=$ORACLE_HOME/dbs/spfileorcl.ora;);口令文件(二进制.d大小写敏感.允许用户远程连接到数据库并执行管理任务.存sys用户的口令,存sysdba/sysoper用户名及口令,放在数据库外面,在$ORACLE_HOME/dbs下的orapworcl.其他用户的口令放在数据文件里.); 超级用户的安全审核机制有两种:1.操作系统审核(默认风格):优先级别高于口令文件2.口令文件审核创建口令文件: orapwd file=orapworcl password=oracle查看口令文件有哪些用户:select * from v$pwfile_users;(实际是从二进制的口令文件中取的数据)将用户加入到口令文件:grant sysdba to scott;revoke sysdba from scott;sysdba和sysoper权限相差多少:sysoper缺少的权限:1.创建数据库2.删除数据库3.启动数据库到受限会话访问模式4.热备份数据库5.不完全恢复备份文件(用于恢复数据库.因介质故障或用户错误损坏或删除了原始文件时,需要还原备份文件);归档日志文件(包含实例生成的数据更改的实时历史记录.使用这些文件和数据库备份可以恢复丢失的数据文件.使用归档日志可以恢复还原的数据文件.);跟踪文件(.trc);警告日志文件(.log)参数backgroung_dump_dest指定跟踪文件和警告文件的路径show parameter dumpSQLselect username,sid,serial# from v$session查看有哪些用户连上数据库 scott 154 772SQLalter system kill session 154,772;杀scott sessionSQLselect username,osuser,machine from v$session where username is not null;有哪些用户SQLdesc v$process 可以查用户连接对应的操作系统进程后台进程作用:单用户请求服务进程或多用户(1022个)进程通过调度器请求服务进程,服务进程打开一个PGA或多个PGA,服务进程连接到实例,打开SGA(三个主要内存区共享池,数据高速缓存,重做日志缓存).PMON:进程监视器.(监视用户进程执行情况,启动死掉的用户进程,用户进程失败时执行清理,释放用户进程占用的资源,将实例信息注册到监听中)SMON:系统监视器.(空间管理:定期合并表空间空闲碎片,回收创建表或索引时产生的临时段.实例恢复:读取联机日志:前滚(将已提交的事物写入数据文件,也就是已写日志,没写数据文件的脏块),回滚(没提交的数据要回滚).释放资源:现在用LMT本地管理方式)DBWn:把数据缓存中的脏数据写到数据文件中,确保缓存有足够的空闲空间.脏数据就是正在使用但没有写到数据文件中数据.0-9,a-j.九种情况触发:发生CKPT,脏数据缓冲区达到阀值,扫描整个数据缓存没有空间,timeout超时检查,集群环境的ping请求,truncating或dropping一个表,把表空间改为只读模式,把表空间或临时表空间设为offline,热备份.LGWR:将重做日志缓冲区写到联机日志文件.触发条件:提交,重做日志缓存满1/3,在redologbuffer中来了一个超过1M的记录改变,每隔3秒,任何一次数据写之前(9种).CKPT:检查点进程,将从上一检查点以来所有被修改过的数据块写入数据文件.三个动作:调度数据写,把检查点信息写到控制文件,把检查点信息写到数据文件头.ARCH:归档进程,数据库处于归档模式时,将不活动的联机重做日志中的内容复制到存档日志.归档模式下,当LGWR进行日志切换,数据库会被挂起,进行目标日志的归档,归档日志操作影响数据库性能,尤其在需要进行频繁大批量数据更改时.服务器进程:代表用户把数据从磁盘读到数据缓存.例:做一个update操作.服务器进程将数据块从数据文件中读到数据高速缓存中进行修改,同时重做日志缓冲区记录修改操作,如果此时正常关闭数据库,LGWR将日志缓存写到联机重做日志文件和控制文件中,CKPT触发DBWn将数据缓存中的脏块写到数据文件中,归档进程ARCH写联机重做日志文件,控制文件,归档日志文件.如果在commit后或3秒后断电(LGWR已将日志缓冲区写入联机日志和控制文件),通电后startup mount状态下,用联机日志恢复所有操作,发现没提交的操作再做Rollback回滚.启动状态分步:SQLstartup nomount (ORACLE读参数文件,与参数相关的视图可供查询)查找参数文件的顺序:spfileorcl.ora-/dbs/spfile.ora-/dbs/initorcl.ora-未找到报错分配SGA启动后台进程打开alert_orcl.log文件和跟踪文件SQLshow parameter spfile (如果value有值说明启动的是spfile)SQLstartup pfile=$ORACLE_HOME/dbs/in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论