还剩42页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库日常维护手册
1.1数据库的__
1.
1.1操作系统的准备工作Oracle数据库的基本软件__在oradb1和oradb2上数据文件,日志文件,控制文件通过手工建库时,指定在共享的阵列上Oradb1与Oradb2的__配置方法相同,以Oradb1为例说明
1.内核参数的修改编辑修改/etc/system文件setshmsys:shminfo_shm__x=0x200000000setshmsys:shminfo_shmmin=1setshmsys:shminfo_shmmni=100setshmsys:shminfo_shmseg=10setsemsys:seminfo_semmni=100setsemsys:seminfo_semmsl=600setsemsys:seminfo_semmns=1200setsemsys:seminfo_semopm=100setsemsys:seminfo_semvmx=32767扩大共享内存和__量参数
2.检查需要的操作系统patch
3.操作系统用户/组的添加groupadddbagroupaddoinstalluseradd-cOracleDBA-d/home/oracle-goinstall-Gdba修改/etc/passwd文件,更改用户登陆shell或其他信息oracle:x:102:101::/export/home/oracle:/bin/ksh
4.Oracle用户环境变量的设定在oracle用户的初始化环境变量文件中/export/home/oracle/.profile,增加如下内容ORACLE_BASE=/opt/app/oracleORACLE_HOME=/opt/app/oracle/product/ORACLE_TERM=vt100ORACLE_OWNER=oracleNLS_LANG=SIMPLIFIEDCHINESE_china.ZHS16CGB231280ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataORACLE_SID=actdbTMP=/tmpPATH=$ORACLE_HOME/bin:/usr/ccs/bin:$PATHLD_LIBRARY_PATH=/opt/oracle/app/oracle/product//lib:/usr/libexportORACLE_BASEORACLE_HOMEORACLE_TERMORACLE_OWNERNLS_LANGORA_NLS33ORACLE_SIDTMPPATHLD_LIBRARY_PATHLANG=zhexportLANGu__sk022sttyerase^HEDITOR=viexportEDITOR文件主要设定数据库的基本目录,数据库的SID名称和数据库的中文语言环境增加可执行文件的路径和操作系统的语言环境设置最后设置vi为常用编辑器
1.
1.2数据库的__
1.用root用户取消显示设置#xhost+
2.将Oracle__光盘插入光驱通过df–k察看光驱是否已mount上
3.以下由Oracle用户执行$cd/cdrom/cdrom0,$./runInstaller出现ORACLEUniversalInstaller的__窗口按Next键继续
4.在Unixuser/group对话框中填入oracle/dba,__Next按钮
5.Destination框输入将要__oracle的目录$ORACLE_HOME,接着出现弹出窗口要求用root运行orainstRoot.sh它创建oraInventory的__目录接着选择要__的产品ORACLE8IEnterpriseEdition
6.选择Customer__方式,将来可以手工建库
7.选择__产品对话框中,建议选择所有产品
8.__确认__的按钮,__正式开始
9.__成功100%后又回到开始的选项菜单,建议察看__日志
10.由于使用双机做HA因此数据库的基本软件需要__在两台服务器上,而数据库在阵列上创建数据库基本软件在两台服务器__完成后通过dbassist手工建库指定数据文件,控制文件,日志文件的路径为共享阵列
11.建库完成后通过oracle用户执行svrmgrl,启动数据库并检查数据库基本信息$svrmgrlSVRMGRconnectinternalSVRMGRstartupSVRMGRselect*fromv$version;SVRMGRselect*fromv$database;执行$lsnrctlstart启动监听程序
1.
1.3数据库patch__
1.Patch下载Oracle数据库的patch从Oracle的metalink__下载,登录成功后,在patch页面中的ProductFamily下拉框中选择”OracleDatabse”,Product下拉框中选择”RDBMSServer”;Release下拉框中选择”Oracle
8.
1.
7.4”;Platform下拉框中选择”SunSolarisOSSPARC64-bit”Language下拉框中选择”AmericanEnglishUS”LimitSearchto下拉框中选择”LatestProductPatchesorMinipacks”,__Submit提交在随后出现的页面中__Download下载patch
2.Patch__Patch下载后首先需要解压缩,__与数据库__方法类似,启动runInstaller__程序,选择解压缩完成后patch目录下的product文件进行__特别注意patch__时,数据库必须处于正常关闭状态
3.__完成后检查select*fromv$version;检查各个产品的版本号是否从
1.2现场数据库工作方法
1.
2.1现场表空间的规划ACT01ACTX01是enus用户的数据表空间以及索引表空间ACT02,ACTX02是page,ra__用户的数据表空间以及索引表空间ACT03ACT04ACTX03ACTX04是rap用户的数据表空间以及索引表空间
1.
2.2现场数据文件的添加1数据库磁盘规划表空间名称磁盘数据文件规划ACT01/disk/data1ACTX01/disk/index1ACT02/disk/data2ACTX02/disk/index2ACT03/disk/data3/disk/data4ACTX03/disk/index3/disk/index4ACT04/disk/data4ACTX04/disk/index42添加数据文件A.添加规则现场建议每次出帐前,为表空间使用率接近80%的表空间添加数据文件原则上现场不要存在超过80%的表空间目前建议每次添加的数据文件大小为4096M.B.添加前,检查表空间原有数据文件(保证数据文件命名的连续性)例如准备为ACTX04添加表空间selectfile_namefromdba_data_fileswheretablespa___name=’ACTX04’/disk/index4/actx04_
01.dbf/disk/index4/actx04_
02.dbf/disk/index4/actx04_
03.dbf/disk/index4/actx04_
04.dbfC.添加数据文件现场添加数据文件,目前原则上大小为4096M.以为actx04添加表空间为例altertablespa__actx04adddatafile‘/disk/index4/actx04_
05.dbf’size4096M;
1.
2.3现场索引的添加1索引添加规则enus用户索引ACTX01表空间rap用户索引ACTX03ACTX04表空间blues用户索引ACTX02表空间ra__用户索引ACTX02表空间2常规表索引的建立CREATEINDEXI_ACCOUNT_FEE_PHONEONACCOUNT_TFEE_PHONETABLESPA__ACTX03nologging;3分区表索引的建立注意事项现场针对分区建立的索引必须都是local类型的索引建立脚本(针对enus的time_t分区表为例)CREATEINDEXI_TIME__ACCTIDNEWONTIME_TACCOUNT_IDLOCALTABLESPA__ACTX01nologging;4察看索引对应的表空间user_indexes;5创建索引的用途以及维护要点考虑用nologging创建索引可以在createindex语句中指定nologging来创建索引并产生最少的重作日志记录.注意:因为用nologging创建索引时不存档建议现场添加索引在凌晨左右进行便于创建索引后数据库尽快完成备份.用nologging创建索引有如下好处:a节省了重作日志文件的空间b缩短了创建索引的时间c改善了并行创建大索引时的性能
1.
2.4数据库用户的建立注以建立rap用户为例createuserrapidentifiedbyrap;grantresour__connecttorap;alteruserrapdefaulttablespa__act03;alteruserraptemporarytablespa__temp;
1.
2.5数据库数据的导入方法探讨针对测试环境数据的搭建1exp要进行测试的用户数据2删除原先表数据truncateselecttruncatetable||table_name||;fromtabs;形成文件,批truncate表3删除表selectdroptable||table_name||cascadeconstraints;fromtabs;形成文件,批删除4导入数据imprap/rapparfile=li.___li.___文件的内容buffer=409600file=expdat_rap_
0630.dmpIGNORE=ygrants=yindexes=yrows=ycommit=yCONSTRAINTS=ylog=likqrap.log
1.
2.6把数据库设置成为非归档模式的方法(针对traffic上面的数据库)startupmount;alterdatabasenoarchivelog;alterdatabaseopen;
1.
2.7检查表的创建模式selectdegreefromuser_tables;
1.3数据库优化及主要参数调整
1.
3.1调整原则Oracle数据库在启动时会读取命名规则为initsid.ora的初始化参数文件这个配置文件中的各个参数设定对整个Oracle数据库性能起决定作用,先简单介绍各个参数的含义,然后给出建议配置除特殊说明外,介绍参数的更改都需进行数据库的重启操作根据数据库系统规模,Oracle提供小,中,大__allmediumlarge三个建议建议配置档,配置时做为参考通过在sqlplus中输入SQLshowparameterparameter_name显示参数名称和相应的值db_block_size:实际值4096数据块大小,数据存储的最小单位,这个参数在Oracle9i以前各个版本中,数据库创建完成后是不可改变的可选范围是2K4K8K16k32k单位是byte应用系统中,部分数据表字段较多,db_block_size设定偏小造成记录不能在单一数据块中存储,因此访问一条用户记录不能在一次物理I/O操作中完成,需要多次I/O导致性能下降;另外较多的varchar2类型字段和数据更新可能造成行链接和行迁移,除设定pctfree较大外,db_block_size也要设定大一些,创建数据库时指定db_block_buffers:实际值_____00数据高速块的多少存放从硬盘中读出的数据块db_block_buffers决定内存中可存放的大小为db_block_size的Oracle数据块的数量应用程序第一次访问数据时从硬盘中读取,然后数据存储在内存中,直到数据长时间不被访问,同时内存中不能容纳更多数据时,数据被写回硬盘,下次需要访问时,再从硬盘中读取该参数越大,Oracle在内存中找到所需数据的可能性就越大相同数据内存读取速度要比硬盘快几十倍,因此响应速度也会大大提高db_block_size与db_block_buffers乘积确定Oracle数据库所占内存的90%左右如果服务器专用运行数据库,建议两个参数的乘积占服务器物理内存的40%,通过对数据缓存的命中率进行监控后,做进一步调整shared_pool_size实际值500000000内存中存放sql语句访问路径,相关访问权限,表结构信息的位置,单位是字节建议在内存允许的情况下配置的大一些,但通常不超过500m通过sql语句监控生产机缓存命中率后进行相应调整sort_area_size实际值4000000可在内存中进行排序的最大字节数应用程序向数据库发出类似orderbygroupby或创建索引时,需要进行排序操作排序在内存中完成的速度同样快于硬盘中速度sort_area_size越大,排序完成在内存中的可能也越大通过对动态视图的监控进行进一步的调整log_buffer:实际值8388608日志缓存大小,对于数据库的dml/ddl等语句首先写入log_buffer然后写入日志文件建议初始配置为512k,如果日志缓存等待明显,再加大,一般不超过为1Mpro__sses实际值500同时访问Oracle数据库的进程数,包括后台进程dbwrlgwrchpt和EnusCnus,Rap各个模块建立的到数据库的长连接数,设定大一点不会造成负面影响,如果偏小则会造成不能进行数据库连接的错误dml_locks:实际值988它表示任何时间所有用户在所有表中放置锁定的最大数量缺省值是事务最大数量的四倍同样可以设定较大一点,不会有负面影响open_cursors:实际值2500用户可以同时打开的游标数设定大一点不会造成负面影响,如果偏小则会出现不能打开游表的错误db_files:实际值200数据库数据文件的数目rollback_segments实际值ACTROLL00~ACTROLL29,共30个回滚段回滚段的名称,用户自己创建完回滚段后将名称添加在此处在OLTP环境下,回滚段的数目为最大并发交易数的1/3~1/4db_file_multiblock_read_count实际值32数据库一次从硬盘中读取的数据块的数目设定DB_FILE_MULTIBLOCK_READ_COUNT可以在进行全表扫描时减少I/O的次数log_checkpoints_to_alert实际值true设置成true的时候,每次检查点的信息写入alert.log文件log_archive_start/log_archive_dest_1实际值true//disk/archive/arch决定数据库采用归档方式指定归档日志存放的路径log_archive___x_pro__sses实际值1,确定后台归档进程ArcN的启动数目目前100M日志文件在交易高峰期,每8分钟就切换一次建议将此值扩大
1.
3.2现场数据库参数设置-配置文件initactdb.oradb_name=actdbinstan___name=actdbservi___names=actdbcontrol_files=/disk/data4/system/control
01.ctl/disk/data3/system/control
02.ctl/disk/data2/system/control
03.ctlopen_cursors=2500__x_enabled_roles=20db_block_buffers=_____00shared_pool_size=367001600large_pool_size=____2912j__a_pool_size=10485760db_file_multiblock_read_count=32log_checkpoint_interval=819200log_checkpoint_timeout=4800cpu_count=8pro__sses=500log_buffer=1048576log_archive_start=truelog_archive_dest_1=location=/disk/archive/archlog_archive_for__t=arch_%t_%s.arclog_checkpoints_to_alert=TRUErollback_segments=ACTROLL00ACTROLL01ACTROLL02ACTROLL03ACTROLL04ACTROLL05ACTROLL06ACTROLL07ACTROLL08ACTROLL09ACTROLL10ACTROLL11ACTROLL12ACTROLL13ACTROLL14ACTROLL15ACTROLL16ACTROLL17ACTROLL18ACTROLL19ACTROLL20ACTROLL21ACTROLL22ACTROLL23ACTROLL24ACTROLL25ACTROLL26ACTROLL27ACTROLL28ACTROLL29background_dump_dest=/opt/app/oracle/admin/actdb/bdumpcore_dump_dest=/opt/app/oracle/admin/actdb/cdumpuser_dump_dest=/opt/app/oracle/admin/actdb/udumpdb_block_size=4096remote_login_passwordfile=exclusiveos_authent_prefix=job_queue_pro__sses=4job_queue_interval=60distributed_transactions=10open_links=4optimizer_mode=CHOOSEdml_locks=988compatible=sort_area_size=4000000sort_area_retained_size=4000000#db_writer_pro__sses=4#db_block_lru_latches=36#cpu*2*
31.
3.3数据库用户信息用户是数据库的使用和访问者同一用户名通常也就是sche__名称下的表共同完成相同的功能,如在我们系统中的Enus用户下的表完成接入功能,Rap用户下的表完成计费,帐务功能用户名称,临时/默认表空间用户创建日期检查是否有用户的默认或临时表空间为system表空间SQLcolusernamefor__ta12;SQLcolDefaultTBSfor__ta12SQLcolTemporaryTBSfor__ta12SQLcolCreateDatefor__ta12SQLselectsubstrusername112UserNamesubstrDEFAULT_TABLESPA__112DefaultTBSsubstrTEMPORARY_TABLESPA__112TemporaryTBSto_charCREATED’yyyy/mm/dd’CreateDatefromsys.dba_usersorderbyusername;USERNAMEDefaultTBSTemporaryTBCreateDate--------------------------------------------------------DBS__PSYSTEMSYSTEM2002/08/17ENUSACT01TEMP2002/08/17OUTLNSYSTEMSYSTEM2002/07/01PAGEACT02TEMP2002/07/04RA__ACT02SYSTEM2003/05/06RAPACT03TEMP2002/08/17RAP00RAP00TEMP2002/10/22RAPTESTACTTESTTEMP2002/09/10SPOTLIGHTUSERSTEMP2003/04/24SSPOTUSERSTEMP2002/07/01SYSSYSTEMTEMP2002/07/01SYSTEMTOOLSTEMP2002/07/01TRA__SVRSYSTEMSYSTEM2002/07/01察看数据库用户的权限/角色创建用户时,会给用户用户一些权限/角色,使用户可以进行相应的操作SQLcolgranteefor__ta20;SQLselectGRANTEEGRANTED_ROLEADMIN_OPTIONfromdba_role_privswheregranteein‘ENUS’’RAP’’RA__’;GRANTEEGRANTED_ROLEADMIN_---------------------------------------------------ENUSCONNECTNOENUSRESOUR__NORA__CONNECTNORA__RESOUR__NORAPCONNECTNORAPRESOUR__NO我们可以看到enusrapra__三个用户都只有connectresour__权限,同时他们不能把connectresour__权限赋予其他用户
1.4数据库的备份/恢复
1.
4.1备份/恢复软件基本介绍此次河南宽带网计费项目Oracle数据库使用的备份/恢复软件是Veritas公司的NetbackupNetbackup建立在Oracle自身提供的备份工具R__n之上同时有R__n的功能,但又克服R__n操作复杂的缺点Netbackup是一个功能强大的企业级数据备份管理软件,它为WindowsNT、UNIX和NetWare环境提供了完整的数据保护机制,具有保护从工作组到企业级服务器的所有的数据的能力.NetBackup的数据中心级介质管理使企业具有了包括带库共享在内的管理介质的各方面能力,并且NetBackup的J__a界面提供了对所有备份和恢复操作的完整的实时和历史情况分析该套装软件共由NetBackupClient,NetBackupServerCatalogDBMedia__nager组成
1.
4.2软件功能分布介绍正常情况下,oradb1运行数据库netbackupclient,oradb2运行rap、netbackupserver,同时oradb2通过VCS与oradb1实现数据库的HA服务器/ip__软件完成功能Oradb1/NetbackupClientNetBackupServer的一个ClientClient不管理任何磁带库设备需要=进行备份时,它仅仅提供Oracle需要备份的数据给ServerServer和Client之间的通过TCP/IP的sockets通讯Oradb2/NetbackupServer__sterServerMediaServerMedia__nagerCatalogDB__sterServer管理制定全网的备份策略,控制所有的备份作业MediaServer只连接存储设备,提供数据分流Media__nage针对磁带设备在备份或归档时调度磁带,并控制上带/卸带动作CatalogDB由R__n控制,记录对数据库进行的备份恢复操作STKL20磁带库设备STKL20的机械手与主备份服务器oradb2直接相连,所有的光纤磁带机直接连接到光线交换机上,所以每台备份服务器都能看到所有的光纤磁带机
1.
4.3系统备份策略/实施备份策略定义一台或几台服务器的备份方法它包括哪些服务器需要备份、备份哪些目录或文件、在什么时间备份、采用什么方式进行备份等配置NBU主要指定义备份策略一个备份策略由四部分组成GeneralAttributes策略的总体属性,包括策略类型,状态,使用的StorageUnit和VolumePoolClientList需要备份的服务器,如OracleServer Oradb1FileList文件列表定义需要备份的文件列表Schedules备份日程表定义进行各种备份的时间 Class类型ScheduleType开始时间要备份的主机保存期限备份文件oraclewholebackuporacleDays(除每月21号)Auto_full3:00:00--6:00Orabk1月/opt/openv/netbackup/scripts/hot_database_backup.shoraclearchivebackuporacle每月21号Auto_FullOrabk1月/opt/openv/netbackup/scripts/hot_archive_backup.sh目前对数据库的备份分成两类,一类是数据库的全备份,第二类是对生成的归档日志的备份备份时netbackup分别调用相应的”/opt/openv/netbackup/scripts/hot_database_backup.sh”和”/opt/openv/netbackup/scripts/hot_archive_backup.sh”两个脚本目前每天早上3点除21日进行全备份到带库,保留一个月每月的21日进行归档日志的备份
1.
4.4备份脚本的内容
1.
4.
4.1全备份脚本位于:/opt/openv/netbackup/scripts/hot_database_backup.sh#!/bin/shCUSER=`id|cut-d-f2|cut-d-f1`R__N_LOG_FILE=${0}.out#then#rm-f$R__N_LOG_FILE#fiecho$R__N_LOG_FILEchmod666$R__N_LOG_FILEechoScript$0$R__N_LOG_FILEecho====startedon`date`====$R__N_LOG_FILEecho$R__N_LOG_FILEORACLE_HOME=/opt/app/oracle/product/exportORACLE_HOMEORACLE_SID=actdbexportORACLE_SIDORACLE_USER=oracleTARGET_CONNECT_STR=system/hnadmR__N=$ORACLE_HOME/bin/r__necho$R__N_LOG_FILEechoR__N:$R__N$R__N_LOG_FILEechoORACLE_SID:$ORACLE_SID$R__N_LOG_FILEechoORACLE_USER:$ORACLE_USER$R__N_LOG_FILEechoORACLE_HOME:$ORACLE_HOME$R__N_LOG_FILEecho$R__N_LOG_FILEechoNB_ORA_FULL:$NB_ORA_FULL$R__N_LOG_FILEechoNB_ORA_INCR:$NB_ORA_INCR$R__N_LOG_FILEechoNB_ORA_CINC:$NB_ORA_CINC$R__N_LOG_FILEechoNB_ORA_SERV:$NB_ORA_SERV$R__N_LOG_FILEechoNB_ORA_POLICY:$NB_ORA_POLICY$R__N_LOG_FILEecho$R__N_LOG_FILEif[$NB_ORA_FULL=1]thenechoFullbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=0elif[$NB_ORA_INCR=1]thenechoDifferentialincrementalbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=1elif[$NB_ORA_CINC=1]thenechoCumulativeincrementalbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=1CUMULATIVEelif[$BACKUP_TYPE=]thenechoDefault-Fullbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=0fiCMD_STR=ORACLE_HOME=$ORACLE_HOMEexportORACLE_HOMEORACLE_SID=$ORACLE_SIDexportORACLE_SID$R__Ntarget$TARGET_CONNECT_STRcatalogr__n/r__n@catadbmsglog$R__N_LOG_FILEappendEOFRUN{ALLOCATECHANNELch00TYPE__T_TAPE;ALLOCATECHANNELch01TYPE__T_TAPE;BACKUP$BACKUP_TYPESKIPINAC__SSIBLETAGhot_db_bk_level0FILESPERSET5#recommendedfor__tFOR__Tbk_%s_%p_%tDATABASE;sqlaltersystemarchivelogcurrent;RELEASECHANNELch00;RELEASECHANNELch01;#backupallarchivelogsALLOCATECHANNELch00TYPE__T_TAPE;ALLOCATECHANNELch01TYPE__T_TAPE;BACKUPfilesperset20FOR__Tal_%s_%p_%tARCHIVELOGALLDELETEINPUT;RELEASECHANNELch00;RELEASECHANNELch01;ALLOCATECHANNELch00TYPE__T_TAPE;BACKUP#recommendedfor__tFOR__Tcntrl_%s_%p_%tCURRENTCONTROLFILE;RELEASECHANNELch00;}EOF#Initiatethecom__ndstringif[$CUSER=root]thensu-$ORACLE_USER-c$CMD_STR$R__N_LOG_FILERSTAT=$else/usr/bin/sh-c$CMD_STR$R__N_LOG_FILERSTAT=$fi#---------------------------------------------------------------------------#Logthecompletionofthisscript.#---------------------------------------------------------------------------if[$RSTAT=0]thenLOGMSG=endedsuc__ssfullyelseLOGMSG=endedinerrorfiecho$R__N_LOG_FILEechoScript$0$R__N_LOG_FILEecho====$LOGMSGon`date`====$R__N_LOG_FILEecho$R__N_LOG_FILEexit$RSTAT
1.
4.
4.2增量备份脚本位于:/opt/openv/netbackup/scripts/hot_archive_backup.sh内容:#!/bin/shCUSER=`id|cut-d-f2|cut-d-f1`R__N_LOG_FILE=${0}.out#then#rm-f$R__N_LOG_FILE#fiecho$R__N_LOG_FILEchmod666$R__N_LOG_FILEechoScript$0$R__N_LOG_FILEecho====startedon`date`====$R__N_LOG_FILEecho$R__N_LOG_FILEORACLE_HOME=/opt/app/oracle/product/exportORACLE_HOMEORACLE_SID=actdbexportORACLE_SIDORACLE_USER=oracleTARGET_CONNECT_STR=system/hnadmR__N=$ORACLE_HOME/bin/r__necho$R__N_LOG_FILEechoR__N:$R__N$R__N_LOG_FILEechoORACLE_SID:$ORACLE_SID$R__N_LOG_FILEechoORACLE_USER:$ORACLE_USER$R__N_LOG_FILEechoORACLE_HOME:$ORACLE_HOME$R__N_LOG_FILEecho$R__N_LOG_FILEechoNB_ORA_FULL:$NB_ORA_FULL$R__N_LOG_FILEechoNB_ORA_INCR:$NB_ORA_INCR$R__N_LOG_FILEechoNB_ORA_CINC:$NB_ORA_CINC$R__N_LOG_FILEechoNB_ORA_SERV:$NB_ORA_SERV$R__N_LOG_FILEechoNB_ORA_POLICY:$NB_ORA_POLICY$R__N_LOG_FILEecho$R__N_LOG_FILEif[$NB_ORA_FULL=1]thenechoFullbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=0elif[$NB_ORA_INCR=1]thenechoDifferentialincrementalbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=1elif[$NB_ORA_CINC=1]thenechoCumulativeincrementalbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=1CUMULATIVEelif[$BACKUP_TYPE=]thenechoDefault-Fullbackuprequested$R__N_LOG_FILEBACKUP_TYPE=INCREMENTALLEVEL=0fiCMD_STR=ORACLE_HOME=$ORACLE_HOMEexportORACLE_HOMEORACLE_SID=$ORACLE_SIDexportORACLE_SID$R__Ntarget$TARGET_CONNECT_STRcatalogr__n/r__n@catadbmsglog$R__N_LOG_FILEappendEOFRUN{#backupallarchivelogsALLOCATECHANNELch00TYPE__T_TAPE;ALLOCATECHANNELch01TYPE__T_TAPE;sqlaltersystemarchivelogcurrent;BACKUPfilesperset20FOR__Tal_%s_%p_%tARCHIVELOGALLDELETEINPUT;RELEASECHANNELch00;RELEASECHANNELch01;ALLOCATECHANNELch00TYPE__T_TAPE;BACKUP#recommendedfor__tFOR__Tcntrl_%s_%p_%tCURRENTCONTROLFILE;RELEASECHANNELch00;}EOF#Initiatethecom__ndstringif[$CUSER=root]thensu-$ORACLE_USER-c$CMD_STR$R__N_LOG_FILERSTAT=$else/usr/bin/sh-c$CMD_STR$R__N_LOG_FILERSTAT=$fi#---------------------------------------------------------------------------#Logthecompletionofthisscript.#---------------------------------------------------------------------------if[$RSTAT=0]thenLOGMSG=endedsuc__ssfullyelseLOGMSG=endedinerrorfiecho$R__N_LOG_FILEechoScript$0$R__N_LOG_FILEecho====$LOGMSGon`date`====$R__N_LOG_FILEecho$R__N_LOG_FILEexit$RSTAT
1.
4.5数据库备份完成情况检查1检查备份输出文件脚本位置orabd1:/opt/openv/netbackup/scripts/检查tail–f/opt/openv/netbackup/scripts/正确结果Script/opt/openv/netbackup/scripts/hot_database_backup.sh====endedsuc__ssfullyonThuJul307:30:27CST2003====2通过netbackup命令行方式检查oradb2:bpadmstatus=0表示备份完成正常
1.
4.6数据库的恢复下面只考虑数据库所有数据文件(包括控制文件)均损坏这一最复杂的情况下的恢复1备份现有的数据库数据文件(如果还有的话)2恢复控制文件将数据库置于nomount状态在svrmgrl下,执行startupnomount在数据库所在的服务器上以oracle身份执行r__ntarget/catalogr__n/r__n@catadbcmdfilerestorecontrol其中restorecontrol的内容如下run{#exec r__ntarget/catalogr__n/r__n@catadbcmdfilerestorecontrol#setuntiltime=;allocatechannelch1type__t_tape;restorecontrolfile;alterdatabasemount;}3执行数据库的全恢复$R__Ntarget/catalogr__n/r__n@catadbcmdfilerestorewho其中restorewho为下RUN{ALLOCATECHANNELch00TYPE__T_TAPE;ALLOCATECHANNELch01TYPE__T_TAPE;RESTOREDATABASE;#RECOVERDATABASE;RELEASECHANNELch00;RELEASECHANNELch01;}4恢复archivelog然后根据控制文件的信息select*fromv$logv$logfile来确定archivelog的sequen__,恢复archivelog%r__ntarget/rcvcatr__n/r__n@catadbcmdfilerecarchive#cmdline:r__ntarget/rcvcatr__n/r__n@catadbcmdfilerecarchiverun{allocatechanneld1TYPE__T_TAPE;setarchivelogdestinationto/disk/archive/arch;restorearchivelogfromlogseq6untillogseq10;releasechanneld1;}5最后执行oracle的recover,在svrmgrl下recoverdatabaseusingbackupcontrolfileuntilcan__l当执行到合适的archivelog时,键入can__lalterdatabaseopenresetlogs注如果盘阵上的控制文件、redolog均未丢失,也可是使用当前的控制文件将数据库恢复当当前,这时候recover的时候只要recoverdatabase就可以了,不要使用recoverdatabaseusingbackupcontrolfileuntilconsole.6打开数据库后,resetdatabaser__ntarget/catalogr__n/r__n@catadbr__nresetdatabase然后对数据库进行全备份
1.
4.7针对catalog数据的备份实现方法:每天上午7:50把catalog数据库r__n用户exp出来.脚本部署:oradb2服务器507***/export/home/oracle/catalog/expuser.sh/export/home/oracle/catalog/logfile/log.log21脚本expuser.sh的内容:#!/bin/kshORACLE_BASE=/opt/app/oracleORACLE_HOME=/opt/app/oracle/product/ORACLE_TERM=vt100ORACLE_OWNER=oracleNLS_LANG=american_america.utf8ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataORACLE_SID=catadbTMP=/tmpPATH=$ORACLE_HOME/bin:/usr/ccs/bin:$PATHLD_LIBRARY_PATH=/opt/oracle/app/oracle/product//lib:/usr/libexportORACLE_BASEORACLE_HOMEORACLE_TERMORACLE_OWNERNLS_LANGORA_NLS33ORACLE_SIDTMPPATHLD_LIBRARY_PATHFILEDIR=/export/home/oracle/cataloglogfile=$FILEDIR/logfile/`date+%y%m%d%H%M%S`.logdumpfile=$FILEDIR/dumpfile/`date+%y%m%d%H%M%S`.dmpexpr__n/r__n@catadbbuffer=4096000OWNER=r__nGRANTS=yROWS=yCOMPRESS=yfile=$dumpfilelog=$logfile
1.
4.8使用R__n备份数据库的另外一种方法usingcontrolfile
1.
4.
8.1全备份脚本1脚本:wholeback.sh#!/bin/shOUTF=${0}.out#---------------------------------------------------------------------------#You__ywanttodeletetheoutputfilesothatbackupinfor__tiondoes#notaccumulate.Ifnotdeletethefollowinglines.#---------------------------------------------------------------------------{#outputblockecho`date`----------------BeginningofScript------------\nechoScriptname:$0ORACLE_HOME=/opt/app/oracle/product/exportORACLE_HOMEORACLE_SID=actdbexportORACLE_SIDORACLE_USER=oracleR__N=r__nCMDFILE=/opt/app/oracle/r__n/wholeback.rcv#---------------------------------------------------------------------------#Printoutthevalueofthevariablessetbythisscript.#---------------------------------------------------------------------------#mustbesetandexportedwithintheswitchusersucom__nd.#---------------------------------------------------------------------------echoecho%${ORACLE_HOME}/bin/$R__Nnocatalogcmdfile$CMDFILE\necho#touch/disk/data2/backup/test.file#su-$ORACLE_USER-cORACLE_SID=$ORACLE_SIDexportORACLE_SID${ORACLE_HOME}/bin/$R__Nnocatalogcmdfile$CMDFILE#RETURN_STATUS=$echoecho`date`----------------EndofScript------------------\nechoechoexit$RETURN_STATUS#exit$RETURN_STATUSechoBackupcontrolfile:alterdatabasebackupcontrolfileto......\ntm=`date+%y%m%d%H%M%S`filename=control.$tmsvrmgrlEOFconnectinternalalterdatabasebackupcontrolfileto/disk/data2/backup/$filename;exitEOFecho\nBackupcontrolfilesuc__ss!\nexit$RETURN_STATUS}$OUTF2脚本wholeback.rcvconnecttargetsystem/hnadmrun{allocatechanneld1typedisk;backupfilesperset5databaseincludecurrentcontrolfilefor__t/disk/data2/backup/%d_%s_%p;backupcurrentcontrolfiletag=databasebackup;sqlALTERSYSTEMARCHIVELOGCURRENT;backupfor__t/disk/data2/backup/arch/arch_%s_%p_%tarchivelogalldeleteinput;#releasechanneld1;}
1.
4.
8.2增量备份脚本1arcbak.sh脚本#!/bin/shOUTF=${0}.out#---------------------------------------------------------------------------#You__ywanttodeletetheoutputfilesothatbackupinfor__tiondoes#notaccumulate.Ifnotdeletethefollowinglines.#---------------------------------------------------------------------------{#outputblockecho`date`----------------BeginningofScript------------\nechoScriptname:$0ORACLE_HOME=/opt/app/oracle/product/exportORACLE_HOMEORACLE_SID=actdbexportORACLE_SID#touch/disk/data2/backup/newfileORACLE_USER=oracleR__N=r__nCMDFILE=/opt/app/oracle/r__n/arcbak.rcv#---------------------------------------------------------------------------#Printoutthevalueofthevariablessetbythisscript.#---------------------------------------------------------------------------#mustbesetandexportedwithintheswitchusersucom__nd.#---------------------------------------------------------------------------echoecho%${ORACLE_HOME}/bin/$R__Nnocatalogcmdfile$CMDFILE\necho#su-$ORACLE_USER-cORACLE_SID=$ORACLE_SIDexportORACLE_SID#svrmgrlEOF#connectinternal#altersystemswitchlogfile;#exit#EOF${ORACLE_HOME}/bin/$R__Nnocatalogcmdfile$CMDFILE#RETURN_STATUS=$echoecho`date`----------------EndofScript------------------\nechoechoexit$RETURN_STATUS#exit$RETURN_STATUSechoBackupcontrolfile:alterdatabasebackupcontrolfileto......\ntm=`date+%y%m%d%H%M%S`filename=control.$tmsvrmgrlEOFconnectinternalalterdatabasebackupcontrolfileto/disk/data2/backup/$filename;exitEOFechoBackupcontrolfilesuc__ss!\nexit$RETURN_STATUS}$OUTF2arcbak.rcv脚本内容connecttargetsystem/hnadmrun{allocatechanneld1typedisk;sqlaltersystemarchivelogcurrent;backupfor__t/disk/data2/backup/arch/arch_%s_%p_%tarchivelogalldeleteinput;releasechanneld1;}
1.5数据库的监控/维护
1.
5.1推荐使用的监控方法Statspack的介绍:Statspack是Oracle公司针对OracleEnterpriseEdition及以上版本推出的性能监控工具包用于替代原有的UTLBSTAT/UTLESTAT比UTLBSTAT/UTLESTAT能够收集更多的数据,包括耗资源多的SQL同时预先计算了许多对性能调优很有用的比值ratios可以更加全面的监控数据的整体运行情况同时可将生成的report文件发送给Oracle公司进行协助分析监控的范围主要是主要内存参数的大小db_block_buffersdb_block_sizelog_buffershared_pool_size系统负载情况每秒钟的生成的日志量,数据库的逻辑读,物理读,交易数量等各类缓存命中率如库缓存命中率,字典缓存命中率,dbblockbuffer命中率排序在内存中进行的比率等造成系统响应时间慢的几类__,通过优化这几类__提高系统响应速度按照各类消耗资源排序的SQL语句通常系统响应速度慢除与参数设置有关外,还与书写不规范的SQL语句有关通过优化捕捉到的SQL语句,提高响应速度各个表空间及组成表空间各个文件的I/O负载情况通过这部分内容判断各个文件I/O是否均衡回滚段信息反映是否有回滚段的竞争,是否有回滚段的过分扩展所有没有按缺省设置的参数Statspack软件包的创建__文件Unix操作系统下,__文件存放在$ORACLE_HOME/rdbms/admin目录下创建时的执行的用户和执行的文件SQLconnectinternal;SQL@/rdbms/admin/spcreate.sql;__过程中的主要动作1__生成一个用户perfstat/perfstat=spcusr.sql,__时输入DEFAULTTABLESPA__/TEMPORARYTABLESPA__2建立需要的Table=spctab.sql3生成dbms_shared_pool和dbms_jobPL/SQL程序包=spcpkg.sqlStatspack软件包的执行/数据采集当系统响应速度出现明显下降的时候,可通过statspack进行系统运行数据采集,并生成报告文件,进行分析初始准备在initsid.ora中设置timed_statistics=true,并让其生效或使用altersystemsettimed_statistics=true;使用创建的perfstat用户连接SQLCONNECTPERFSTAT/PERFSTAT;执行第一次采集程序SQLEXECUTESTATSPACK.SNAP;系统运行一段时间后进行第二次采集SQLEXECUTESTATSPACK.SNAP;生成报告当执行了二次以上数据采集后就可以生成系统运行报告,执行系统运行报告时,需要提供起始数据采集点的起始点和结束点可生成任意两点间的性能报告数据采集点之间数据库关闭过生成的报告无效使用perfstat用户登录必须使用该用户SQLconnectperfstat/perfstat;SQL@/rdbms/admin/spreport;EnterbeginningSnapId:1EnterendingSnapId:2Enternameofoutputfile[st_1_2]:pressreturnorenteranewname输入起始和结束的快照ID并定义输出文件名生成的文件存放在Oracle用户的home目录下
1.
5.2监控/维护脚本运行系统的大多数信息可通过statspack反映,下面提供的脚本主要做为statspack的补充信息
1.
5.
2.1系统日志监控系统在运行过程中,__on后台进程会将出现的各类错误信息写入alertsid.log文件中通过morealertsid.log|grep-iora-来检查出现的各类”ora-“错误同时alertsid.log文件还记录了数据库的开启和关闭的时间从数据库的background_dump_dest参数中找出alert_actdb.log的实际路径SQLsetlinesize200SQLshowparameterbackground_dump_destNAMETYPEVALUE--------------------------------------------------------------background_dump_deststring/opt/app/oracle/admin/actdb/bdump$cd/opt/app/oracle/admin/actdb/bdump$morealert_acdb.log|grep–iora-
1.
5.
2.2归档日志空间监控数据库处于归档方式运行,生成的日志文件将由arch后台进程拷贝到特定的目录下一旦特定的归档目录占满,数据库将处于”挂起”状态通过df–k监控归档日志所在的文件系统查看数据库参数”log_arch_dest_1”对应的文件系统依次为文件系统名称,大小K为单位,已用,剩余,使用百分比,文件系统名称/dev/vx/dsk/dbdg/archive7161774097630025798__2815%/disk/archive
1.
5.
2.3系统等待__v$system_event和v$session_wait反映系统整体等待__和当前每个session的等待__v$system_eventSQLcoleventfor__ta30SQLselecteventtotal_waitsfromv$system_eventorderbytotal_waitsdesc;忽略idleevent后如rdbmsipcmessagepmontimerSQL*NetmessagetoclientSQL*Netmessagefromclient注意有效的等待__EVENTTOTAL_WAITS---------------------------------------------------SQL*Netmessagetoclient5___449605SQL*Netmessagefromclient5___444344rdbmsipcmessage336469357logfilesync303870200logfileparallelwrite260253044dbfilescatteredread97497824dbfilesequentialread62354909logfilesequentialread13720693通过上面的结果我们可以看出,系统范围内的主要等待__是”logfilesync””logfileparallelwrite””dbfilescatteredread””logfilesequentialread””dbfilesequentialread”,可以初步判定日志文件造成最多的等待,是系统优化的第一步v$session_wait当前每个session等待的__SQLcoleventfor__ta30;SQLselectsideventfromv$session_wait;SIDEVENT----------------------------------------28logfilesync167logfilesync168logfilesync228logfilesync53logfilesync2dbfileparallelwrite对输出结果截取一部分我们可以看到sid为28,167,168,228,53的session等待”logfilesync”日志文件同步,而sid为2的session等待”dbfileparallelwrite”文件并行写
1.
5.
2.4当前用户连接信息v$session记录当前所有连接到数据库的用户信息SQLsetlinesize130;SQLcolusernamefor__ta12;SQLcol__chinefor__ta12;SQLcolosuserfor__ta12;SQLcolprogramfor__ta20;SQLselectusernameto_charlogon_time’yyyy/mm/dd’status__chinesidserial#osuserPROGRAMfromv$session;USERNAMETO_CHARLOGON_TIMESTATUS__CHINESIDSERIAL#OSUSERPROGRAM--------------------------------------------------------------------------------------------------------------------2003/04/24ACTIVEoradb111oracleoracle@oradb1PMON2003/04/24ACTIVEoradb121oracleoracle@oradb1DBW02003/04/24ACTIVEoradb131oracleoracle@oradb1LGWR2003/04/24ACTIVEoradb141oracleoracle@oradb1CKPT2003/04/24ACTIVEoradb151oracleoracle@oradb1__ON2003/04/24ACTIVEoradb161oracleoracle@oradb1RECOENUS2003/06/04INACTIVEjdbcclient761414oracleJDBC-
1.0-ClientENUS2003/06/04INACTIVEjdbcclient87048oracleJDBC-
1.0-ClientENUS2003/06/04INACTIVEjdbcclient934719oracleJDBC-
1.0-ClientENUS2003/06/04INACTIVEjdbcclient1036321oracleJDBC-
1.0-Client2003/04/24ACTIVEoradb1111oracleoracle@oradb1ARC0RAP2003/05/29INACTIVEoradb2129905oracleJDBCThinClient依次显示数据库用户名用户名为空表示后台进程登录时间,状态,从哪台服务器进行访问,sid和serial#操作系统用户和访问的程序名称
1.
5.
2.5锁等待信息/造成锁定的信息selects.sidsids.osusers.logon_times.usernameunameDMLltypedecodel.lmode1Null2Row-S3Row-X4Share5S/Row-X6Exclusivelmodedecodel.request0NoYesblockedu.name||.||o.namedetailsfromv$sessionsv$locklsys.o__$osys.user$uwheres.usernamelikeupperCNCands.sid=l.sidandl.id1=o.o__#andl.type=TMando.owner#=u.user#+unionallselects.sidsids.osusers.logon_times.usernameunamedecodel.typeTXTXULUSRSYSltypedecodel.lmode1Null2Row-S3Row-X4Share5S/Row-X6Exclusivelmodedecodel.request0NoYesblockeddecodel.request0nullWaitingonsession||to_charb.siddetailsfromv$sessionsv$locklv$lockbwheres.usernamelikeupperCNCands.sid=l.sidandl.type!=TMandl.id1=b.id1+andb.request+=0orderby5desc3desc21;
1.
5.
2.6后台运行的job信息为了在特定的时间执行任务,除通过操作系统的crontab完成外,还可通过数据库的dbms_jobpackage实现coljidfor__t999headingIdcolsubufor__ta10headingSubmittertrunccolsecdfor__ta10headingSecuritytrunccolprocfor__ta20headingJobword_wrappedcollsdfor__ta5headingLast|Ok|Datecollstfor__ta5headingLast|Ok|Timecolnrdfor__ta5headingNext|Run|Datecolnrtfor__ta5headingNext|Run|Timecolfailfor__t999headingErrscolokfor__ta2headingOkselectjobjidlog_usersubupriv_usersecdwhatprocto_charlast_dateMM/DDlsdsubstrlast_sec15lstto_charnext_dateMM/DDnrdsubstrnext_sec15nrtfailuresfaildecodebrokenYNYokfromsys.dba_jobs/脚本显示后台job的ID提交用户,job内容,执行的具体时间,是否出现过错误等信息
1.
5.
2.7表空间使用/空闲百分比SQLcoltablespa__for__ta30SQLSELECTdts.tablespa___nametablespa__NVLddf.bytes/1024/10240__ailNVLddf.bytes-NVLdfs.bytes00/1024/1024usedNVLdfs.bytes/1024/10240freeTO_CHARNVLddf.bytes-NVLdfs.bytes0/ddf.bytes*
1000990.00Used%dts.contentsdts.extent___nagementdts.statusFROMdba_tablespa__sdtsselecttablespa___namesumbytesbytesfromdba_data_filesgroupbytablespa___nameddfselecttablespa___namesumbytesbytesfromdba_free_spa__groupbytablespa___namedfsWHEREdts.tablespa___name=ddf.tablespa___name+ANDdts.tablespa___name=dfs.tablespa___name+ANDNOTdts.extent___nagementlikeLOCALANDdts.contentslikeTEMPORARYUNIONALLSELECTdts.tablespa___nametablespa__NVLdtf.bytes/1024/10240__ailNVLt.bytes0/1024/1024usedNVLdtf.bytes-NVLt.bytes00/1024/1024freeTO_CHARNVLt.bytes/dtf.bytes*
1000990.00Used%dts.contentsdts.extent___nagementdts.statusFROMdba_tablespa__sdtsselecttablespa___namesumbytesbytesfromdba_temp_filesgroupbytablespa___namedtfselecttablespa___namesumbytes_usedbytesfromv$temp_spa___headergroupbytablespa___nametWHEREdts.tablespa___name=dtf.tablespa___name+ANDdts.tablespa___name=t.tablespa___name+ANDdts.extent___nagementlikeLOCALANDdts.contentslikeTEMPORARY;TABLESPA____AILUSEDFREEUsed%CONTENTSEXTENT___NAGEMENTSTATUSCOLLECTDATA
204850.
3751997.
62.46PER__NENTLOCALONLINEEVENTDATA
10240026018.
37576381.
62525.41PER__NENTLOCALONLINEEVENTINDEX
6144021119.
540320.
534.37PER__NENTLOCALONLINE
1.
5.
2.8用户权限,默认及临时表空间检查每个用户的权限,同时确认没有用户使用system表空间作为缺省表空间和临时表空间colusernameforma12headUsernamejustccolroleforma21headRoleadmingrantjustccoldtsforma12headDefault|Tablespa__justccolttsforma12headTemporary|Tablespa__justccolprofforma18headProfilejustcbreak-onusernameskip1-onrole-ondts-onttsselectusernamedefault_tablespa__dtstemporary_tablespa__ttsprofileprofgranted_role||-||decodeadmin_optionYESA||decodegranted_roleYESGrolefromdba_usersdba_role_privswheredba_users.username=dba_role_privs.granteeandusernamenotinPUBLICorderby1234/
1.
5.
2.9需要重建的索引索引在数据库运行过程中会不断被insertupdatedelete,当索引被删除的记录超过记录总数的20%时或索引”高度”超过3时,需要对索引进行重建通过编译执行下面的存储过程,显示需要进行重建的索引,及语句执行过程中设定serveroutputonSQLsetserveroutputonSQLcreateorrepla__pro__dure____yze_indexassql1varchar2100;index_namevarchar230;index_heightnumber2;index_rationumber3;cursorc1isselectindex_namefromuser_indexes;beginforcur_c1inc1loopSQL1:=____yzeindex||CUR_C
1.INDEX_NAME||VALIDATESTRUCTURE;dbms_output.put_linesql1;executeimmediatesql1;selectnameheightdel_lf_rows/lf_rows*100intoindex_nameindex_heightindex_ratiofromindex_stats;ifindex_height3orindex_ratio20thendbms_output.put_linealterindex||cur_c
1.index_name||rebulid;endif;endloop;end;/SQLexec____yze_index;
1.
5.
2.10表及索引统计信息更新以成本Cost为基础的优化器通过判定表的记录数和字段索引的信息来选择最优,成本最小的SQL语句执行路径在数据库运行的过程中,随着表和索引数据的不断变化,优化器原有的统计数据不能反映最新的数据情况在数据更改频繁的情况下,为了找到最优的执行路径,需要将数据和索引的信息提交给优化器执行dbms_statspackage中的gather_sche___stats过程达到这个目的执行时间间隔依据数据更新的频繁程度判定SQLconnect/assysdba;SQLaltersessionsetsort_area_size=___57280;SQLexecutedbms_stats.gather_sche___stats‘sche___name’’100’degree=4cascade=truemethod_opt=’forallindexedcolumns’;执行dbms_statspackage需要sys用户;由于分析数据和索引需要大量的排序操作,首先为session分配较大的排序区第一个参数是需要分析的数据库用户名通常就是sche___name;第二个参数是执行的并行度最大可以是CPU的个数;第三个和第四个参数表示同时分析提交所有索引的信息;
1.
5.
2.11用户表/索引所占空间汇总以下按照用户对表及表索引所占信息SQLsetlinesize200SQLcolownerfor__ta12SQLcolsegment_namefor__ta35SQLselectp.ownerp.segment_namep.table_size+NVLq.index_size0astotal_SIZEp.table_sizeNVLq.index_size0ASINDEX_SIZEfromselectownersegment_nameroundsumbytes/1024table_sizefromdba_segmentswheresegment_typeinTABLETABLEPARTITIONandownerinRA__ENUSRAPgroupbyownersegment_namepselecta.ownerb.table_namesuma.tt1asindex_sizefromselectownersegment_nameroundbytes/1024astt1fromdba_segmentswheresegment_typeinINDEXINDEXPARTITIONandownerinRA__ENUSRAPadba_indexesbwhereb.index_name=a.segment_namegroupbya.ownerb.table_nameorderbyb.table_nameqwherep.owner=q.owner+andp.segment_name=q.table_name+orderbyp.ownerTOTAL_SIZE;OWNERSEGMENT_NAMETOTAL_SIZETABLE_SIZEINDEX_SIZE-----------------------------------------------------------------------------RAPBILL_T73764081960655680RAPACCOUNT_T106548081960983520RAPACTIVEUSER_T106548081960983520RAPSERVI___BILL_T___7400163880983520RAPEVENT_RA___T1151920164560987360RAPEVENT_ENUS_TIME_T1180156018029609998600RAPEVENT_RESIMPACT_T15079040311368011965360RAPEVENT_T
194222404178640152436001.
5.
2.12备份完成情况信息oradb1/export/home/oracle/hnsql/backupinfo.sql脚本内容selectto_charCOMPLETION_TIMEyyyy/mm/ddtime1sumBLOCKS*4/1024*1024totalGfromv$backup_datafilegroupbyto_charCOMPLETION_TIMEyyyy/mm/dd;
1.
5.
2.13察看用户默认的表空间,临时表空间selectusernamedefault_tablespa__temporary_tablespa__fromdba_userswhereusername=ENUS;
1.6数据库分区表的维护随着用户计费数据的增加,数据库部分表会增长迅速,形成大量数据为了使数据得以平衡负载,达到数据库优化,提高性能,以及便于维护的目的,我们对部分表进行了分区
1.
6.1分区对象分区表名称rap用户的BAD_CDR_TBILL_TEVENT_ENUS_BAD_CDR_TEVENT_ENUS_FLOW_TEVENT_ENUS_TIME_TEVENT_RA___TEVENT_RESIMPACT_TEVENT_TRESOUR___USED_TSERVI___BILL_T
1.
6.2分区字段Created_trap相关的分区表
1.
6.3分区表的建立我们按照每个月的出帐日进行分区表的建立,以EVENT_T表为例CREATETABLEEVENT_TIDNUMBERNOTNULLFLAGINTEGERDEFAULT0EVENT_TYPEVARCHAR2255NOTNULLSERVI___IDNUMBERNOTNULLSERVI___TYPEVARCHAR2255CREATED_TDATESTART_TDATEEND_TDATEACCOUNT_IDNUMBERCHARGE_IDNUMBERNOTNULLSTATUSINTEGERDEFAULT0LOGINVARCHAR2255DIAL_DO__INVARCHAR2255CONTRACT_NOVARCHAR2255BILL_CYCLE_IDNUMBERDOWN_TYPENUMBER2TABLESPA__ACT03PCTFREE10PCTUSED40INITRANS1__XTRANS255STORAGEINITIAL8NEXT20480MINEXTENTS1__XEXTENTS2147483645PARTITIONBYRANGECREATED_TPARTITIONEVENT_T_20020820VALUESLESSTHANTO_DATE2002-08-2000:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIANPARTITIONEVENT_T_20020921VALUESLESSTHANTO_DATE2002-09-2100:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIANPARTITIONEVENT_T_20021021VALUESLESSTHANTO_DATE2002-10-2100:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIANPARTITIONEVENT_T_20021121VALUESLESSTHANTO_DATE2002-11-2100:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIANPARTITIONEVENT_T_20021221VALUESLESSTHANTO_DATE2002-12-2100:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIANPARTITIONEVENT_T_20030121VALUESLESSTHANTO_DATE2003-01-2100:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIANPARTITIONEVENT_T_20030221VALUESLESSTHANTO_DATE2003-02-2100:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIAN,PARTITIONEVENT_T_20030321VALUESLESSTHANTO_DATE2003-03-2100:00:00SYYYY-MM-DDHH24:MI:SSNLS_CALENDAR=GREGORIAN,PARTITIONEVENT_T_NEWVALUESLESSTHAN__xvalue;CREATEINDEXI_EVENT_IDONRAP.EVENT_TIDLOCAL;CREATEINDEXI_EVENT_SERVI___IDONRAP.EVENT_TSERVI___IDEND_TLOCAL;
1.
6.4分区表索引的建立注意事项现场针对分区建立的索引必须都是local类型的索引建立脚本(针对enus的time_t分区表为例)CREATEINDEXI_TIME__ACCTIDNEWONTIME_TACCOUNT_IDLOCALTABLESPA__ACTX01;
1.
6.5分区表的维护根据分区的建立情况,我们从以下几个方面对分区表进行维护
1.
6.
5.1增加分区步骤aSPLIT最后一个分区bREBUILDSPLIT前后的分区的索引c____YZE增加分区后的table为了防止因为忘记建立分区而导致数据不能写入数据库的状况发生,在分区时建立了一个new分区,我们每次新建分区时都要从该分区里分割出一个新的分区来记录下一个月的数据语法结构ALTERTABLE{tablename}SPLITPARTITIONpartitionnameatTO_DATErangeYYYY-MM-DDINTOPARTITIONpartitionname1partitionname2;具体实例1分割event_t的EVENT_T_NEW为两个分区ALTERTABLEEVENT_TSPLITPARTITIONEVENT_T_newatTO_DATE2003-04-21YYYY-MM-DDINTOPARTITIONEVENT_T_20030421partitionEVENT_T_NEW;2REBUILDSPLIT前后的分区的索引I_EVENT_SERVI___ID:alterindexI_EVENT_SERVI___IDrebuildpartitionEVENT_T_20030421tablespa__ACTX03;alterindexI_EVENT_SERVI___IDrebuildpartitionEVENT_T_20030521tablespa__ACTX03;I_EVENT_ID:alterindexI_EVENT_IDrebuildpartitionEVENT_T_20030421tablespa__ACTX03;alterindexI_EVENT_IDrebuildpartitionEVENT_T_20030521tablespa__ACTX03;I_EVENT_CREATED_T索引alterindexI_EVENT_CREATED_TrebuildpartitionEVENT_T_20030421tablespa__ACTX03;alterindexI_EVENT_CREATED_TrebuildpartitionEVENT_T_20030521tablespa__ACTX03;3____yze表Executedbms_stat.gather_table_statsrapevent_t;
1.
6.
5.2删除分区表(暂时不需要这样做)删除分区表分两个步骤1,导出删除分区的数据;2,删除分区
1.
6.
5.3导出删除分区的数据根据目前河南宽带系统数据库分区表的建立方法,到2003年12月21日以后,可以根据数据量的实际情况,删除最初月份的表分区为了保证数据库数据的完整性,在删除分区之前,应该将删除的分区进行备份数据备份方法采用Oracle提供的逻辑备份工具expimp工具具体步骤如下$expparfile=expfileparfile参数指定一个文件,文件里包含exp的属性userid=rap/rap17run(进行导出的用户名/口令)tables=tablename:partition_name(导出的表名,分区名)file=filename.dmp(导出的文件名)direct=yrows=yindexes=ylog=export.log纪录导出过程的日志文件举例说明导出EVENT表的EVENT_T_20020820分区的数据userid=rap/rap17runtables=EVENT_T:EVENT_T_20020820file=/disk/dat_in/EVENT_T_
20020820.dmpdirect=yrows=ycommit=ylog=export.log将导出的分区数据文件备份到磁带上面,做好相应的标记删除分区语法结构ALTERTABLE...DROPPARTITION例子我们以删除EVENT表的EVENT_T_20020820分区为例altertableevent_tdroppartitionevent_t_20020820;ALTERTABLEEVENT_TDROPPARTITIONEVENT_T_20020820;
1.
6.
5.4导入删除分区的数据当需要把已经删除的分区数据重新导入到数据库中时,可以通过Oracle提供的imp实现首先将要恢复的分区分割出来然后进行导入导入的语句为importparfile=impfileparfile参数指定一个文件,里面包含导入使用的各类参数值userid=rap/rap17run(指定要导入的数据)tables=tablename(指定表名)file=export.dmp(指定要导入的文件)rows=yignore=ylog=import.log具体实例导入删除的分区EVENT_T_20020820userid=rap/rap17runtables=EVENT_Tfile=/disk/dat_in/EVENT_T_
20020820.dmprows=yignore=ylog=import.log
1.
6.
5.5对分区表进行删除具体实例删除的分区是EVENT_T_20020820altertableEVENT_TdroppartitionEVENT_T_20020820;
1.7数据库基本信息汇总
1.
7.1版本信息SQLselect*fromv$version;BANNER--------------------------------------------------------------------------------Oracle8iEnterpriseEditionRelease.
4.0-64bitProductionPL/SQLRelease.
4.0-ProductionCORE.
0.0ProductionTNSforSolaris:Version.
4.0-ProductionNLSRTLVersion.
0.0–Production
1.
7.2数据库名称,归档方式状态SQLcolnamefor__ta12SQLselectnameLOG_MODEopen_modefromv$database;NAMELOG_MODEOPEN_MODE--------------------------------------------------------ACTDBARCHIVELOGREADWRITE
1.
7.3数据库__选项SQLsetpagesize0SQLsetlinesize100SQLcolparameterfor__ta40SQLcolVALUEfor__ta20SQLselect*fromv$option;PARAMETERVALUE-----------------------------------------PartitioningTRUEO__ectsTRUEParallelServerFALSEAdvan__dreplicationTRUEBit-__ppedindexesTRUEConnectionmultiplexingTRUEConnectionpoolingTRUEDatabasequeuingTRUEIncrementalbackupandrecoveryTRUEInstead-oftriggersTRUEParallelbackupandrecoveryTRUEParallelexecutionTRUEParallelloadTRUEPoint-in-timetablespa__recoveryTRUEFine-grainedac__sscontrolTRUEN-Tierauthentication/authorizationTRUEFunction-basedindexesTRUEPlanStabilityTRUEOnlineIndexBuildTRUECoales__IndexTRUE__nagedStandbyTRUE__terializedviewrewriteTRUE__terializedviewwarehouserefreshTRUEDatabaseresour____nagerTRUESpatialTRUEVisualInfor__tionRetrievalTRUEExporttransportabletablespa__sTRUETransparentApplicationFailoverTRUEFast-StartFaultRecoveryTRUESampleScanTRUEDuplexedbackupsTRUEJ__aFALSEOLAPWindowFunctionsTRUE
1.
7.4数据库的文件数据库的文件包括3类控制文件controlfile日志文件logfile数据文件datafile控制文件SQLselectnamefromv$controlfile;NAME------------------------------------------------------/disk/data4/system/control
01.ctl/disk/data3/system/control
02.ctl/disk/data2/system/control
03.ctl日志文件名称及大小SQLcolgroup#for__t999headingGroupSQLcolmemberfor__ta45headingMemberjustifycSQLcolstatusfor__ta10headingStatusjustifycSQLcolarchivedfor__ta10headingArchivedSQLcolfsizefor__t999headingSize|MBSQLselectl.group#memberarchivedl.statusbytes/1024/1024fsizefromv$loglv$logfilefwheref.group#=l.group#orderby1;GroupMemberArchivedStatusSize--------------------------------------------------------3/disk/redo/redo
01.logYESINACTIVE1004/disk/redo/redo
02.logNOCURRENT1005/disk/redo/redo
03.logYESINACTIVE1006/disk/redo/redo
04.logYESACTIVE100数据文件名称,所在表空间及大小SQLcolID#for__ta12SQLcolFILE_NAMEfor__ta32headingDataFileNameSQLcoltablespa___namefor__ta18headingRelatedTablespa__SQLselectsubstrFILE_ID13ID#FILE_NAMETABLESPA___NAMEBYTES/1024*1024MSTATUSfromsys.dba_data_filesorderbyTABLESPA___NAMEFILE_NAME;ID#DataFileNameRelatedTablespa__MStatus--------------------------------------------------------------------------------------7/disk/data1/act01_
01.dbfACT012048__AILABLE32/disk/data1/act01_
02.dbfACT012048__AILABLE8/disk/data2/act02_
01.dbfACT022048__AILABLE9/disk/data3/act03_
01.dbfACT032048__AILABLE21/disk/data3/act03_
02.dbfACT032048__AILABLE31/disk/data3/act03_
04.dbfACT032048__AILABLE33/disk/data3/act03_
05.dbfACT032048__AILABLE28/disk/data4/act03_
03.dbfACT032048__AILABLE35/disk/data4/act03_
06.dbfACT034096__AILABLE13/disk/data4/act04_
01.dbfACT042048__AILABLE15/disk/data3/acttest.dbfACTTEST2048__AILABLE17/disk/data3/acttest
1.dbfACTTEST2048__AILABLE19/disk/data3/acttest
2.dbfACTTEST2048__AILABLE10/disk/index1/actx01_
01.dbfACTX012048__AILABLE11/disk/index2/actx02_
01.dbfACTX022048__AILABLE12/disk/index3/actx03_
01.dbfACTX032048__AILABLE22/disk/index3/actx03_
02.dbfACTX032048__AILABLE23/disk/index3/actx03_
03.dbfACTX032048__AILABLE27/disk/index4/actx03_
04.dbfACTX032048__AILABLE29/disk/index4/actx03_
05.dbfACTX032048__AILABLE30/disk/index4/actx03_
06.dbfACTX032048__AILABLE34/disk/index4/actx03_
07.dbfACTX034096__AILABLE36/disk/index4/actx03_
08.dbfACTX034096__AILABLE14/disk/index4/actx04_
01.dbfACTX042048__AILABLE16/disk/index3/ac___est.dbfAC___EST2048__AILABLE18/disk/index3/ac___est
1.dbfAC___EST2048__AILABLE20/disk/index3/ac___est
2.dbfAC___EST2048__AILABLE6/disk/data4/system/indx
01.dbfINDX9__AILABLE24/disk/data4/rap00_
01.dbfRAP002048__AILABLE25/disk/index4/rapx00_
01.dbfRAPX002048__AILABLE26/disk/index4/rapx00_
02.dbfRAPX002048__AILABLE3/disk/rbs/rbs
01.dbfRBS2048__AILABLE1/disk/data4/system/system
01.dbfSYSTEM512__AILABLE4/disk/temp/temp
01.dbfTEMP2048__AILABLE2/disk/data4/system/tools
01.dbfTOOLS8__AILABLE5/disk/data4/system/users
01.dbfUSERS10__AILABLE
1.
7.5表空间信息数据库中的表存放在表空间中,表空间是一个逻辑概念,由物理文件组成进行数据规划时,原则上将功能相近的表放到同一个表空间中表空间按功能分为数据表空间和索引表空间,按存储的内容可分为永久表空间和临时表空间,按管理方式可分为本地管理和字典管理表空间大小剩余空间使用百分比SQLcoltablespa__for__ta30SQLSELECTdba.tablespa___nametablespa__nvlROUNDused.bytes/1024*102400USEDMBnvlROUNDfree.bytes/1024*102400FREEMBROUNDnvlused.bytes0+nvlfree.bytes0/1024*10240totalfromdba_tablespa__sdbaselecttablespa___namesumbytesbytesfromdba_segmentsgroupbytablespa___nameusedselecttablespa___namesumbytesbytesfromdba_free_spa__Groupbytablespa___namefreewheredba.tablespa___name=used.tablespa___name+anddba.tablespa___name=free.tablespa___name+orderbydba.tablespa___name;TABLESPA__USEDMBFREEMBTOTAL--------------------------------------------------ACT0137613354096ACT0288211662048ACT039690464614336ACT0416823662048ACTTEST280733376144ACTX0116803682048ACTX029319552048ACTX0314331614920480ACTX042003452048AC___EST449116536144INDX099RAP0080712412048RAPX00__132054096RBS1501__82048SYSTEM100412512TEMP12168322048TOOLS178USERS2810表空间的管理方式和存储内容SQLcoltablespa___namefor__ta16;SQLselecttablespa___nameCONTENTSEXTENT___NAGEMENTfromdba_tablespa__s;TABLESPA___NAMECONTENTSEXTENT___NAGEMENT------------------------------------------------------SYSTEMPER__NENTDICTIONARYTOOLSPER__NENTDICTIONARYRBSPER__NENTDICTIONARYTEMPTEMPORARYDICTIONARYUSERSPER__NENTDICTIONARYINDXPER__NENTDICTIONARYACT01PER__NENTDICTIONARYACT02PER__NENTDICTIONARYACT03PER__NENTDICTIONARYACTX01PER__NENTDICTIONARYACTX02PER__NENTDICTIONARYACTX03PER__NENTDICTIONARYACT04PER__NENTDICTIONARYACTX04PER__NENTDICTIONARYACTTESTPER__NENTDICTIONARYAC___ESTPER__NENTDICTIONARYRAP00PER__NENTDICTIONARYRAPX00PER__NENTDICTIONARY
1.
7.6回滚段的信息回滚段用于存储正在进行的事务(未提交的事务)所修改值的原有值,其他用户访问到这部分数据时,会自动从回滚段中读取而不会看到未提交的数据回滚段实现数据库的语句级读一致性和事务级一致性察看回滚段名称,大小,所在表空间,以及状态SQLsetpagesize0SQLsetlinesize80SQLcolID#for__ta2SQLcolownerfor__ta6SQLcolTablespa__Namefor__ta10SQLcolRollbackNamefor__ta15SQLcolSizeMfor__t
99.99SQLcolStatusfor__ta6SQLcolextent#for__ta6SQL/1024*1024SizeMfromsys.dba_segmentssys.dba_rollback_segsIDOwnerTablespa__RollbackNameSizeMExtentStatus------------------------------------------------0SYSSYSTEMSYSTEM.6411ONLINE30SYSRBSACTROLL
005.0010ONLINE31SYSRBSACTROLL
015.0010ONLINE32SYSRBSACTROLL
025.0010ONLINE33SYSRBSACTROLL
035.0010ONLINE34SYSRBSACTROLL
045.0010ONLINE35SYSRBSACTROLL
055.0010ONLINE36SYSRBSACTROLL
065.0010ONLINE37SYSRBSACTROLL
075.0010ONLINE38SYSRBSACTROLL
085.0010ONLINE39SYSRBSACTROLL
095.0010ONLINE40SYSRBSACTROLL
105.0010ONLINE41SYSRBSACTROLL
115.0010ONLINE42SYSRBSACTROLL
125.0010ONLINE43SYSRBSACTROLL
135.0010ONLINE44SYSRBSACTROLL
145.0010ONLINE45SYSRBSACTROLL
155.0010ONLINE46SYSRBSACTROLL
165.0010ONLINE47SYSRBSACTROLL
175.0010ONLINE48SYSRBSACTROLL
185.0010ONLINE49SYSRBSACTROLL
195.0010ONLINE50SYSRBSACTROLL
205.0010ONLINE51SYSRBSACTROLL
215.0010ONLINE52SYSRBSACTROLL
225.0010ONLINE53SYSRBSACTROLL
235.0010ONLINE54SYSRBSACTROLL
245.0010ONLINE55SYSRBSACTROLL
255.0010ONLINE56SYSRBSACTROLL
265.0010ONLINE57SYSRBSACTROLL
275.0010ONLINE58SYSRBSACTROLL
285.0010ONLINE59SYSRBSACTROLL
295.0010ONLINE
1.
7.7数据库参数信息数据库在启动时,除读取控制文件,日志文件外,还要会读取位于$ORACLE_HOME/dbs/目录下的initsid.ora参数文件该参数文件控制数据库使用的内存总量,各个子部分的量,连接数据库的进程数,归档日志目录等重要信息该参数文件在很大程度上影响数据库的性能察看没有使用缺省值的参数SQLcolnamefor__ta30SQLcolvaluefor__ta40SQLsetlinesize80SQLselectnamevaluefromv$parameterwhereisdefault=’FALSE’;NAMEVALUE----------------------------------------pro__sses500cpu_count8shared_pool_size500000000j__a_pool_size32768db_block_buffers_____00db_block_size4096compatiblelog_archive_startTRUElog_archive_dest_location=/disk/archive/archlog_archive_for__tarch_%t_%s.arclog_buffer8388608log_checkpoint_interval200000log_checkpoint_timeout3600db_file_multiblock_read_count32log_checkpoints_to_alertTRUEdml_locks988__x_enabled_roles20remote_login_passwordfileEXCLUSIVEdistributed_transactions10instan___nameactdbservi___namesactdbopen_links4sort_area_size4000000sort_area_retained_size4000000db_nameactdbopen_cursors2500os_authent_prefixoptimizer_modeCHOOSEjob_queue_pro__sses4job_queue_interval60background_dump_dest/opt/app/oracle/admin/actdb/bdumpuser_dump_dest/opt/app/oracle/admin/actdb/udumpcore_dump_dest/opt/app/oracle/admin/actdb/cdumpcontrol_files/disk/data4/system/control
01.ctl/disk/data3/system/control
02.ctl/disk/data2/system/control
03.ctl。