1、基于linux平台的oracle9i安装及日常运维目标在完成课程学习以后,应当需要掌握以下:1、熟练在linux平台上安装oracle9i数据库2、能够解决在安装过程中可能出现的问题3、掌握数据库日常管理内容4、解决简单的日常管理问题5、基本熟悉分析、解决数据库问题的基本步骤一、数据库的安装1、安装概述1.1、oracle数据库安装概述阅读基于linux平台的版本的notes计划安装完成预安装检查配置工作安装oracle 软件和建库完成安装后配置工作开始使用oracle1、安装概述1.2、oracle数据库安装方法交互式安装【基本、高级安装选项】使用响应文件的自动安装【静默、压缩安装】1.3、
2、安装类型企业版标准版自定义组件1、安装概述1.4、预配置数据库类型General purposeTransaction processingData warehouse 1.5、数据文件存储文件系统裸设备裸逻辑卷1、安装概述1.6、数据库字符集确定1.7、基于os系统平台相应的数据库介质比如:32bit的os就不能安装64bit的数据库。2、预安装准备工作2.1、以root登陆打开xterm2.2、检查系统硬件需求物理内存Swap区设置/tmp目录软件安装的磁盘空间数据库文件磁盘空间2、预安装准备工作2.3、检查系统软件需求操作系统类型内核版本所需的package2、预安装准备工作2.4、检查
3、网络设置配置Name ResolutionName Resolution安装在DHCP计算机上,简化计算机网络管理安装在多个ip地址计算机上,需要设置ORACLE_HOSTNAME参数2、预安装准备工作2.5、创建所必需的操作系统用户组和用户用户组:Oracle Inventory Group:oinstall(必须)Osdba group:dba(必须)Osoper group:oper(可选)用户(安装oracle软件)Primary group:oracle inventory groupSecondary group:osdba group2、预安装准备工作2.6、配置内核参数【/et
4、c/sysctl.conf】kernel.shmall=2097152 kernel.shmmax=2147483648 kernel.shmmni=4096 kernel.sem=250 32000 100 128 semmsl,semmns,semopm,and semmni2、预安装准备工作2.6、配置内核参数(续)fs.file-max=65536net.ipv4.ip_local_port_range=1024 65000net.core.rmem_default=1048576net.core.rmem_max=1048576net.core.wmem_default=262144
5、net.core.wmem_max=262144#/sbin/sysctl-p2、预安装准备工作2.7、设置oracle安装用户的shelllimits/etc/security/limits.confNofile:最大可以打开的文件描述符的数目Noproc:当个用户最大可以使用的进程数/etc/pam.d/文件增加条目:session required/lib/security/pam_limits.sosession required pam_limits.so/etc/profile:设置oracle用户的shell启动资源限制2、预安装准备工作2.8、准备安装软件所需目录Oracle
6、base directory:Oracle inventory directory:Oracle home directory:Oracle database datafiles directory:注:oracle软件安装用户要有对这些目录的读写权限2、预安装准备工作2.9、配置raw partition、raw logical volumesraw partitionraw partition:创建raw partition绑定raw partition 到 raw devices创建mapping files2、预安装准备工作2.9、配置raw partition、raw logical
7、 volumesraw logical volumesraw logical volumes创建数据库所用卷组为数据库文件建立相应的逻辑卷2、预安装准备工作2.10、配置软件安装用户环境 UMASKDISPLAYORACLE_BASEORACLE_SIDNLS_LANG./bash_profile、source .bash_profile3、安装工作a、下载软件b、拷贝到硬盘上c、解压【oracle安装用户有读的权限】d、进入相应的目录进行安装e、根据提示作出相应的选择输入,比如口令等等。f、按照要求运行orainstall.sh、root.sh脚本 注:可以只安装软件,然后建库,也可以同时建
8、库,根据需要自行选择。4、安装后工作必须:1)、为数据库打上必要的patch2)、配置oracle产品推荐:1)、备份root.sh文件2)、配置新的或者升级数据库3)、配置用户二、数据库日常运维1、数据库参数文件及参数spfile:由oracle自己维护的二进制服务器参数文件,不能手工修改。可以使用alter system命令来修改:ALTER SYSTEM SET SESSIONS=500 SCOPE=SPFILE;pfile(init_sid.ora):可以进行手工编辑的参数文件。oracle启动过程寻找参数文件的顺序:spfile_sidspfileinit_sid.orainit.o
9、ra 1、数据库参数文件及参数Sga:shared_pool_size db_cache_size large_pool_sizePga:pga_aggregate_targetProcesses、Sessions、使用语句修改参数值,也可以使用oem工具ALTER SYSTEM SET PROCESSES=1000 SCOPE=SPFILE;注:根据业务运行的需要,合理分配各种资源。注:根据业务运行的需要,合理分配各种资源。2、控制文件管理事项控制文件是数据库运行过程中重要的文件,它是二进制形式,该文件的损坏将直接导致数据库宕机。说明:a、至少有1个冗余镜像,最好有2个。b、存储在不同物理位
10、置上。c、周期性备份,并在数据库结构发生变化时备份。control_file_record_keep_time:指定条目保存时间。默认为7天。2、控制文件管理事项 3、是否采用归档模式主要涉及到的参数:log_archive_start、log_archive_dest log_archive_dest_N、log_archive_format 操作步骤:Shutdown immediate;Startup mount;Alter database archivelog;Alter database open;注:归档目录日志转移策略设置是否合理。注:归档目录日志转移策略设置是否合理。3、是否
11、采用归档模式3、是否采用归档模式4、redo 日志的规划根据业务量,结合系统io情况:日志组数:多个日志组可缓解归档压力。日志组成员:每组成员不宜过多,推荐为两个,并且尽量放在不同的物理位置。位置:与数据文件置于不同的物理磁盘上,尽量不要放在raid5上。大小:保持日志15-20分钟切换一次,频繁的日志切换会严重降低系统的性能。4、redo 日志的规划5、数据文件管理指南新增数据文件:alter tablespace test add datafile/opt/oracle/oradata/test01.dbf size 100M;数据文件resize:alter tablespace nam
12、e datafile 1 resize 500M;alter database datafile 1 resize 500M;数据文件脱机:alter tablespace test datafile 2 offline;alter database datafile 2 offline(drop);5、数据文件管理指南说明:a、数据文件不能设置过大,受限于操作系统,过大的文件对于数据库和操作系统的管理都会带来不利。b、数据文件不要设置为自动扩展,根据实际耗用定期按需分配。c、不能直接删除数据文件(9i)。5、数据文件管理指南6、表空间的日常管理6.1、表空间扩容a、增大数据文件:ALTER
13、TABLESPACE NAME DATAFILE /opt/oracle/oradata/name01.dbf RESIZE 500M;b、新增数据文件:ALTER TABLESPACE USER_DATA ADD DATAFILE /opt/oracle/oradata/user01.dbf SIZE 50M;6、表空间的日常管理6.2、表空间清理DROP TABLESPACE USER_DATA INCLUDING CONTENTSAND DATAFILES;6.3、表空间coalesceALTER TABLESPACE USER_DATA COALESCE;6、表空间的日常管理6.4、表
14、空间使用情况监控通过查询数据字典视图 dba_free_space、dba_data_files计算得出。dba_free_space是关于数据文件空闲extent信息:其中重要列tablespace_name:表空间名称bytes:空闲extent的大小(字节)6、表空间的日常管理6.4、表空间使用情况监控(续)dba_data_files记录了数据文件信息。其中重要的列有:file_name:数据文件名称tablespace_name:表空间名称bytes:数据文件的size(字节)status:数据文件的状态user_bytes:用户可以使用的size通过两个视图的联合查询即可得出表空间
15、使用情况。6、表空间的日常管理6.4、表空间使用情况监控(续)TABLESPACE TYPE ALLOC TOTAL FREE RT-UNDOTBS1 UNDO SYSTEM 31457280 .00SYSAUX PERMANENT SYSTEM 251658240 4063232 1.61USERS PERMANENT SYSTEM 5242880 1900544 36.25SYSTEM PERMANENT SYSTEM 503316480 6160384 1.22EXAMPLE PERMANENT SYSTEM 104857600 23396352 22.31其中:TOTAL:为表空间总的
16、容量。FREE:为该表空间空闲容量。RT:为表空间中空闲空间所占比例。6、表空间的日常管理6.5、表空间管理要点a、将表和相关索引存储在不同的表空间上,减少io竞争。b、对于碎片较多的表空间,建议定期整理。c、对表空间使用情况进行监控,及时扩容。d、undo、temp表空间给于一个合理的大小,避免不必要的问题。6、表空间的日常管理7、日志、trace文件的监控a、alert_sid.logb、sqlnet.logc、listener.logd、bdump、udump下的跟踪文件针对这三个日志文件,他们用于记录数据库重要操作,以及发生错误的相关信息,对于数据库故障诊断有非常重要的作用,建议定期备
17、份整理。#tail-1000 alert_test.log|more7、日志、trace文件的监控管理要点:a、对于这类日志和跟踪文件,DBA应该每天都要查看,如果发现相关问题或者错误,及时记录问题并协助解决。b、定期备份整理,以免造成文件过大,数据库和操作系统维护成本增加。c、bdump、udump下的跟踪文件中的信息是处理一个600、7445等错误的重要资料,不能随意删除,建议备份整理。8、进程监控 为了确认数据库实例是否工作正常,需要检测数据库后台进程是否工作正常。主要的后台进程有:DBWR:数据库读写进程LGWR:redo log写进程CKPT:检查点进程SMON:系统监控进程PMON
18、:进程监控进程ARCH:归档进程RECO:恢复进程8、进程监控检测方法:$ps ef|grep ora查看DBSNMP运行情况:$ps ef|grep dbsnmp对于重要进程缺少的情况,建议立即停机检查。8、进程监控9、linuxcache、buffer与oracle内存首先需要说明的是,linux的文件cache、buffer对oracle数据库运行是没有任何好处的。oracle有自己的内存结构来存储数据库对象,包括buffer cache、share pool、log buffer、large pool等,所以一般我们建议是oracle的数据文件使用raw设备,尽量不要使用文件系统,这样
19、充分利用操作系统硬件资源,提升数据库系统性能。10、表和索引使用情况监控a、对事务量较多的表和索引进行定期分析:dbms_stats.gather_table_statsdbms_stats.gather_index_stats对于碎片较多的表和索引定期进行整理,提高检索效率。b、定期查看无效的数据库表和索引(对象)SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS=INVALID;11、其它监控a、文件系统空间状况:df kb、今天或者近期备份是否成功,查看相关备份日志文件。c、使用statspack,定期收集
20、数据库运行数据信息,进行性能监控。d、对操作系统的资源使用情况进行监控:top、vmstat、iostat12、常见问题及应对处理方法问题一、向表中插入数据时,报无法扩张XXXX字节?处理方法:查看该表空间使用情况,确定是否数据文件是否自动扩展,如果未自动扩展则可能是表空间剩余空间不足,无法分配需要的字节数。如果为自动扩展,常见情况下,应该是当数据文件写满将自动扩展,如果无法扩展则要判断该文件是否达到操作系统文件大小限制。一般我们建议不要使用数据文件的自动扩展,通过增加数据文件的方式为表空间扩容。不要让数据文件盲目自动扩展,以免引起不必要的问题。12、常见问题及应对处理方法问题二、执行一个查询
21、语句时报ora-01555错误?处理方法:首先需要明确的时,查询的时候不需要使用回滚段,但是oracle需要读一致性,所以有时候需要到回滚段中找数据块变更前的镜像,如果由于某些原因,这部分镜像被覆盖,则oracle会报snapshot too old错误,这一般可能是两个原因引起:一就是undo 表空间确实过小,此时建议增大,并增大undo_retention参数。二就是sql语句写的不够优化,查阅了不需要的数据,从而引发该错误。12、常见问题及应对处理方法问题三、客户端无法连接到数据库server?处理方法:a、查看数据库监听是否启动:lsnrctl statusb、确认是否ping 通数据
22、库serverb、tnsping 本地服务名12、常见问题及应对处理方法问题四、查看谁锁定了表,并释放资源?处理方法:找到锁定表的user,然后kill掉它,释放资源。SELECT T2.USERNAME,T3.OBJECT_NAME,T2.SID,T2.SERIAL#,T2.LOGON_TIME FROM V$LOCKED_OBJECT T1,V$SESSION T2,DBA_OBJECTS T3 WHERE T1.SESSION_ID=T2.SID AND T1.OBJECT_ID=T3.OBJECT_ID ORDER BY T2.LOGON_TIME;根据得到的sid和serial#,k
23、ill掉:alter system kill session sid,serial#;12、常见问题及应对处理方法问题五、临时表空间无法分配XXXX字节?处理方法:这一般是由于sql语句不够优化或者temp表空间过小造成。临时表空间一般是用来排序操作的,但是磁盘的排序比内存排序效率要差很多,一般尽量在内存中排序,所以在物理内存比较充足的情况下,给pga设置一个合理的值,减少temp的使用,提升系统效率。13、应急处理 在数据库的日常运行过程中难免会出现紧急事故,这时候需要保持清醒的头脑,冷静分析,根据相关的日志文件和报错信息进行可能问题排查,逐一清查,直到问题解决,如果自己不能判断问题的源头,可以向原厂或者第三方厂家请求协助。千万不要在生产库上进行无把握的操作。尤其是带有不可恢复性的操作。13、应急处理案例一、alert.log文件不能正常写?案例二、数据库重启时,不能正常启动?AQ&Q U E S T I O N SA N S W E R S