《Oracle知识培训.ppt》由会员分享,可在线阅读,更多相关《Oracle知识培训.ppt(60页珍藏版)》请在三一办公上搜索。
1、2023/2/5,Oracle基础培训,要求培训大纲,1、ORACLE 10g概述2、如何判断Windows 环境下ORACLE的进程是否正常3、ORACLE运行状态监控主要参数4、ORACLE性能调优主要方法、调试结果如何观测5、ORACLE常见故障及解决方法6、集团OA数据库应该关注的运行参数,培训大纲,1、ORACLE 10g概述(表空间管理、内存管理、网络连接)2、Oracle启动与关闭3、ORACLE常见故障及解决方法4、备份方法5、数据库监控及日常维护工作6、集团OA数据库应该关注问题,数据库应用的体系结构,客户端/服务器体系结构,网络,客户端,数据库服务器,数据库应用的体系结构,
2、多层体系结构:应用服务器,网络,中间层/应用服务器,网络,客户端,数据库服务器,数据库服务器体系结构,数据库服务器,Oracle数据库:此处特指数据库物理文件Oracle实例(instance):系统全局区(system global area,SGA)、Oracle后台进程。,数据库,物理数据库结构:包括数据文件(datafile)、重做日志文件(redo log files)、和控制文件(control files)。逻辑数据库结构:包括数据块(data blocks),数据扩展(extents),数据段(segments)、表空间(tablespace),这些逻辑结构使Oracle可以精
3、细地控制磁盘空间的使用。,物理数据库结构,数据文件:每个Oracle数据库使用一个或多个物理的数据文件(datafile),包含所有的数据库数据;一个数据文件只能属于一个数据库;控制文件:含有说明数据库物理结构的内容。例如,其中包含以下信息:数据库名、数据文件、重做日志文件的名称和位置、数据库创建的时间戳;实例每次启动时,通过控制文件中的内容来确定哪些数据库文件和重做日志文件是执行数据库操作所必需的;重做日志文件:主要功能是记录对数据的操作;为了防止重做日志自身的问题导致故障,Oracle支持多重重做日志(multiplexed redo log)功能,即将内容相同的多份重做日志保存在不同的磁
4、盘中。当数据库运行在ARCHIVELOG模式下,Oracle将自动地归档重做日志文件。,逻辑数据库结构,一个数据库被分割为数个被称作表空间(tablespaces)的逻辑存储单位,每个表空间内保存的是一组相关的逻辑对象。例如,一个表空可以用来存储一个应用所需的一组对象,以便简化管理操作。,表空间的管理(1),大文件表空间和小文件表空间:由一个单一的大文件构成的,而不是多个小的数据文件表空间的一些限制:1024个数据文件、大小受操作系统或Oracle版本文件限制创建表空间:create tablespace appsys datafile D:ORACLEPRODUCT10.2.0ORADATA
5、ORCLAppSys001.dbf size 100m autoextend on next 8m;,表空间管理(2),Oracle数据库的物理文件可以设置成自动增长的类型,这样数据库在需要更多空间时,物理文件会按设定 的增长量自动增长到指定的最大值.这样会有一些好处:保证不会因为分配数据区域(extent)失败而终止应用.但如果没有设定这个最大值,它将会是一个非常大的数字.数据块大小不同,其最大值也不一样.因为Oracle的物理文件最大只允许4194303个数据块(datablock).如果你管理的数据库物理文件是自动增长的并有可能超过操作系统或Oracle版本文件最大限制时,请尽快 改变它
6、的属性,把它设定成非自动增长的或者限定它最大的值.,表空间的管理(3),查看表空间的剩余空间:SELECT Tablespace_Name,SUM(Blocks)AS Free_Blk,Trunc(SUM(Bytes)/(1024*1024)AS Free_m,MAX(Bytes)/(1024)AS Big_Chunk_k,COUNT(*)AS Num_Chunks FROM Dba_Free_Space GROUP BY Tablespace_NameSELECT a.Tablespace_Name,Round(Total-Free)/Total,3)*100 Pecent from(SEL
7、ECT Tablespace_Name,SUM(Bytes)Free FROM Dba_Free_Space GROUP BY Tablespace_Name)a,(SELECT Tablespace_Name,SUM(Bytes)Total FROM Dba_Data_Files GROUP BY Tablespace_Name)B where a.Tablespace_Name=b.Tablespace_Name,表空间的管理(4),扩展表空间:alter tablespace test add datafile D:ORACLEORADATAORACLE8APP01.DBF size 1
8、0M autoextend on next 50M maxsize 1500M;,表空间的管理(5),假如物理文件的物理位置是 D:ORACLEORADATAORACLE8APP01.DBF 用下面的SQL语句可以实现这一操 作:alter database datafile D:ORACLEORADATAORACLE8APP01.DBF autoextend off;,方案schema/用户,方案是一组数据库对象的集合。方案和数据库用户名相同,并属于该用户。方案对象是代表数据库数据的逻辑符号。方案对象包括表、视图、索引等逻辑数据结构每个用户都有一个默认表空间(select*from data
9、base_properties),数据库实例,Oracle创建并利用内存结构来完成各项工作。例如,在内存中存储需要运行的程序代码和用户使用的数据。和Oracle有关的两个基本内存结构是系统全局区(system global area,SGA)和程序全局区(program global area,PGA)系统全局区(System Global Area,SGA)是包含了一个Oracle实例所拥有的数据及控制信息的共享内存区域。Oracle在实例启动时分配SGA空间,并在实例关闭时回收。每个实例都有自己的SGA。程序全局区(Program Global Area,PGA)是服务器后台进程所需的数据
10、与控制信息的内存缓冲区。PGA是当服务器后台进程启动时由Server创建的,Oracle系统全局区,SGA是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作共享池(Shared Pool)由共享SQL区和数据字典区组成。参数SHARED_POOL_SIZE 确定共享池的大小数据缓冲存储区(Database Buffer Cache)用于存储从数据文件中读的数据的备份日志缓冲存储区(Log Buffer)以记录项的形式备份数据库缓冲区中被修改的缓冲块,这些记录将被写到日志文件中。,共享全局区自动管理,在之前版本的数据库中,DBA 需要手
11、工地设置 SGA 各个组件的容量,具体来说就是设定 SHARED_POOL_SIZE,DB_CACHE_SIZE,JAVA_POOL_SIZE,和 LARGE_POOL_SIZE 等初始化参数。Oracle 数据库 10g 中提供的共享全局区自动管理(Automatic Shared Memory Management)功能大大简化了针对 SGA 的管理工作。在 Oracle 10g 中,DBA 只需使用 SGA_TARGET 参数指定实例可用的 SGA 总量即可,Oracle 能够自动地将内存分配给 SGA 的各个子组件,以便提高内存的使用效率。当 SGA 的内存处于自动管理状态时,SGA
12、内各个内存组件的容量可以根据系统的负载灵活地调整而无需任何额外的配置工作。Oracle 自动地将可用的内存分配给有需要的 SGA 组件,使系统中 SGA 内存的利用率达到最大。,手工管理的 SGA 内存组件,还有少量的 SGA 内存组件容量是不能自动调整的。当应用需要时,DBA 要显式地设定这些组件的容量。这样的内存组件有:保留/回收缓存区(Keep/Recycle buffer cache)(由 DB_KEEP_CACHE_SIZE 和 DB_RECYCLE_CACHE_SIZE 参数控制)非标准容量数据块使用的缓存(由 DB_nK_CACHE_SIZE,n=2,4,8,16,32 参数控制
13、手工控制容量的内存组件将会占用自动调整容量的内存组件的可用空间,监听进程,listener.ora,Listener,Client,Server,tnsnames.ora,sqlnet.ora,如何以sysdba的身份登录到数据库,sqlnet.ora设置Alter user test identified by,连通性的概念和术语,数据库服务服务名 数据库的一个逻辑表示数据库呈现给客户的一种方式连接描述串数据库的位置数据库服务的名字监听(进程)接收客户的连接请求将请求转给数据库服务器,2023/2/5,第22页,连接方法,当一个客户向一个服务器发出请求时,监听(进程)进行如下之一的操作:生成
14、一个服务器进程并将连接传递给该进程在Oracle 共享服务器配置中把连接交给一个dispatcher(分配器进程)将连接改向为一个dispatcher(进程)或一个服务器进程,生成与传递连接,Listener,Server,Client,Dedicated Server Process,1,2,3,直接交给连接,Listener,Dispatcher,1,2,3,SharedServerProcess,SharedServerProcess,静态服务注册:listener.ora 文件,1.LISTENER=2.(ADDRESS_LIST=3.(ADDRESS=(PROTOCOL=TCP)(H
15、ost=stc-sun02)(Port=1521)4.SID_LIST_LISTENER=5.(SID_LIST=6.(SID_DESC=7.(ORACLE_HOME=/home/oracle)(GLOBAL_DBNAME=ORCL)9.(SID_NAME=ORCL),监听控制实用(程序)(LSNRCTL),$lsnrctl,LSNRCTL,LSNRCTL set current_listener listener02,客户端问题,ORA-12154“TNS:could not resolve service name”ORA-12198“TNS:could not find path to
16、destination”ORA-12203“TNS:unable to connect to destination”ORA-12533“TNS:illegal ADDRESS parameters”ORA-12541“TNS:no listener”,Oracle启动与关闭,要启动和关闭数据库,必须要以具备Oracle 管理员权限的用户登陆,通常也就是以具备SYSDBA权限的用户登陆,Oracle 服务的启动,oracle.exe是oracle的服务,没有这个服务oracle数据库是启动不了的。这个是安装完oracle自动生成的系统服务。默认情况下,服务设为自动启动。net start or
17、acleserviceSID 这里的SID为你的数据库的名字。,Oracle启动,启动一个数据库需要三个步骤:1、创建一个Oracle实例(非安装阶段)(STARTUP NOMOUNT):创建实例,读取init.ora初始化参数文档、启动后台进程、初始化系统全局区(SGA)。2、由实例安装数据库(安装阶段)(STARTUP MOUNT,ALTER DATABASE MOUNT;):读取控制文档中关于数据文档和重作日志文档的内容,装载但并不打开该文档 3、打开数据库(打开阶段)(STARTUP,ALTER DATABASE OPEN):使数据文档和重作日志文档在线,处于正常工作状态,能够接受用户
18、请求,Oracle关闭,SHUTDOWN NORMAL:不允许新的连接,等待现在连接退出SHUTDOWN IMMEDIATE:当前正在被Oracle处理的SQL语句立即中断,强行回滚当前任何的活动事务,然后断开任何的连接用户(常用)SHUTDOWN TRANSACTIONAL:正在活动的事务执行完毕SHUTDOWN ABORT:任何正在运行的SQL语句都将立即中止、任何未提交的事务将不回滚。,ORACLE 备份方法,逻辑备份物理备份热备份冷备份,逻辑备份特点,利用EXP工具对数据进行备份简单、易实施缺点:对数据库介质故障的排除比较因难可能丢失大量的数据数据的备份、恢复时间长,冷备份,冷备的特点
19、简单、安全如数据库文件多或文件较大时备份时间较长备份期间不能使用数据库,离线数据库全后备 数据文件、日志文件、控制文件和参数文件 记录数据库所有文件的路径及文件名 用NORMAL关闭数据库 用操作系统命令拷贝数据库所有文件 重新启动ORACLE实例,热备特点,比较复杂、易出错要求数据库必须是归档模式RMAN优点:备份期间可以正常使用数据库可以每次备份数据库的一部分文件。比较适合于大型或不能SHUTDOWN的数据库,热备特点,无归档操作:在介质出现失败时,只能将数据库恢复到最后后备的那一刻。归档操作:在介质出现失败时,能使用归档日志文件最大量的恢复数据库数据。,常见错误,数据库可能出现的错误:用
20、户错误 语句失败 用户进程失败 实例失败 介质失败,用户错误,一般原因:用户意外删除了一个对象用户删除表中的所有行用户提交有错误的数据解决方法:(Oracle10G的flashback功能)培训数据库用户用表的Export恢复用日志文件进行时间片恢复,语句失败,一般原因:应用中有逻辑错误用户往表中输入错误数据用户使用不适当特权操作用户建立超过分配量的表表空间中剩余空间不够解决方法:调整应用修改错误数据DBA授予适当特权修改用户表空间限量给表空间追加数据文件,用户进程失败,一般原因:用户没有连接到会话用户进程被异常中断用户程序产生了一个非中断会话地址解决方法:由PMON后台进程撤消异常中断的用户
21、进程,并释放该进程已经获得的系统资源或锁。,介质失败,一般原因:存放数据库的介质出现故障。文件被意外删除。解决方法:恢复方法依赖于后备方法和被影响的文件。使用最后一次归档的日志文件恢复数据库数据。,实例失败,一般原因:在启动实例时停电硬件问题(CPU失败)软件问题(操作系统错误)后台进程失败(DBWR、LGWR、PMON、SMON)解决方法:connect internalstartup,数据库监控,Em:(E:oracleproduct10.2.0db_1installreadme.txt)SpotlightAwrrpt(oracle 10g),查看awr报告,如果你用的是oracle 10
22、g的话,这个有种很简单的方法就是查看awr报告。很简单,你登陆到服务器的操作系统,进入到$ORACLE_HOME/rdbms/admin目录下。然后sqlplus/as sysdba登陆到数据库,执行 awrrpt.sql;然后按照提示一步一步做,注意格式选html(这样方便你阅读)。最后会让你命名这个文件。完了之后,你把那个文件拷贝到本地用IE打开就看到了。里面有很详细的,包括这段时间占CPU,IO,等等最严重的SQL排行。很好很强大。,如何查看后台正在运行着的sql语句,select a.program,b.spid,c.sql_text from v$session a,v$proces
23、s b,v$sqlarea c where a.paddr=b.addr and a.sql_hash_value=c.hash_value and a.username is not null;,能查出长时间操作的语句,select/*+rule*/username,sid,opname,round(sofar*100/totalwork,0)|%as progress,time_remaining,sql_text from v$session_longops,v$sql where time_remaining 0 and sql_address=address and sql_hash
24、_value=hash_value;,查看锁和等待,SELECT/*+rule*/lpad(,decode(l.xidusn,0,3,0)|l.oracle_username User_name,o.owner,o.object_name,o.object_type,s.sid,s.serial#,p.spidFROM v$locked_object l,dba_objects o,v$session s,v$process pWHERE l.object_id=o.object_id AND l.session_id=s.sid and s.paddr=p.addrORDER BY o.ob
25、ject_id,xidusn DESC,查找指定系统用户在oracle中的session信息及进程id,select s.sid,s.SERIAL#,s.username,p.spidfrom v$session s,v$process pwhere s.osuser=junsansi and s.PADDR=p.ADDR,日常工作,1 确保服务器工作状态正常,各类数据库状态正常(select*from v$instance)2 检查硬盘空间是否够用3 查看数据库日志,查看跟踪文件,检查是否有错误信息(oracleproduct10.2.0adminorclbdump)4 检查备份的有效性(对
26、RMAN备份方式,检查第三方备份工具的备份日志以确定备份是否成功对EXPORT备份方式,检查exp日志文件以确定备份是否成功对其它备份方式,检查相应的日志文件)5 通过系统的性能监视器对服务器的性能参数监控发现数据库的性能是否下降,寻找原因并解决6 填写dba日志,日常工作,5、检查数据文件的状态记录状态不是“online的数据文件,并做恢复。select file_name from dba_data_files where status=OFFLINE6、检查表空间的使用情况select a.tablespace_name,round(total-free)/total,3)*100 pe
27、cent from(select tablespace_name,sum(bytes)free from dba_free_space group by tablespace_name)a,(select tablespace_name,sum(bytes)total from dba_data_files group by tablespace_name)b where a.tablespace_name=b.tablespace_name7、检查剩余表空间select tablespace_name,sum(blocks)as free_blk,trunc(sum(bytes)/(1024
28、*1024)as free_m,max(bytes)/(1024)as big_chunk_k,count(*)as num_chunks from dba_free_space group by tablespace_name;8、监控数据库性能运行utlbstat.sql/utlestat.sql生成系统报告,或者使用statspace收集统计数据9、检查数据库性能,记录数据库的CPU使用、IO、Buffer命中率等等,使用vmstat,iostat,glance,top10、日常出现问题的处理,集团OA数据库,备份策略表空间使用SQL性能,谢谢!,附:日志文件写操作图示,Group 1,
29、Group 2,Member 2.1,Member 1.1,附:镜像日志文件图示,Group 1,Group 2,Disk 1,Disk 2,附:如何将数据库变为归档模式,附:安全管理 角色管理,ORACLE数据库预定义的角色:CONNECT:ALTER SESSION,CREATE CLUSTER,CTEATE DATABASE LINK,CREATE SEQUENCE,CREATE SESSION,CREATE SYNONYM,CREATE TABLE,CREATE TABLE,CREATE TRIGGER RESOURCE:CREATE CLUSTER,CREATE PROCEDURE,
30、CREATE SEQUENCE,CREATE TABLE,CREATE TRIGGER DBA:All system privileges WITH ADMIN OPTION EXP_FULL_DATABASE:SELECT ANY TABLE,BACKUP ANY TABLE,INSERT,DELETE and UPDATE on the tables SYS.INCVID,SYS.INCFIL and SYS.INCEXP IMP_FULL_DATABASE:BECOME USER,WRITEDOWN,附:日常检查,1、控制数据库对象的空间扩展情况,根据本周每天的检查情况找到空间扩展很快的
31、数据库对象,并采取相应的措施。删除历史数据、扩展表空间alter tablespace add datafile size 调整数据对象的存储参数next extent pct_increase2、监控数据量的增长情况根据本周每天的检查情况找到记录数据数量增长很快的数据库对象,并采取相应的措施删除历史数据、扩表空间alter tablespace add datafile size 3、系统健康检查检查以下内容:init.ora controlfile redo log filearchiveingsort area sizetablespace(system,temporary,tables
32、pace fragment)datafiles(autoextend,location)object(number of extent,next extent,index)rollback segmentlogging&tracing(alert.log,max_dump_file_size,sqlnet)4、检查无效的数据库对象select owner,object_name,object_type from dba_objects where status=INVALID5、检查不起作用的约束select owner,constraint_name,table_name,constraint_type,status from dba_constraintswhere status=DISABLED and constraint_type=p6、检查无效的triggerselect owner,trigger_name,table_name,status from dba_triggerswhere status=DISABLED,