3.1创建数据库时部分参数调整
在使用dbca创建数据库时,首先需要调整以下两个参数:
charactorset:字符集设置,目前所有生产环境均使用ZHS16GBK;
process:允许的最大进程数,默认值为150,根据数据库连接实际情况进行设置。目前XXT主数据库为1000,历史库、统计库等为800。
3.2一些表空间的调整
undo和temp表空间:Oracle安装初始,undo表空间大小为50M,并且自动扩展,这样会带来较大的隐患。故对所有生产环境,均要求undo、temp等表空间关闭自动扩展(auto extend),调整方法:
alterdatabase datafile 'datafilepath' autoextend off;
alterdatabase tempfile 'tempfilepath' autoextend off;
另外,两个表空间的大小对数据库操作的影响也是很大的,需要调整至适当值。公司内一般环境的undo表空间及temp表空间体积均为4G即可,调整方法:
alter databasedatafile 'datafilepath' resize 4096M;
alterdatabase tempfile 'tempfilepath' resize 4096M;
3.3 redo日志调整
Oracle安装完成后,默认三组redo log,每组两个成员,文件大小50M。在数据变动较大的数据库,频繁切换redo log会严重影响数据库I/O性能;但过大的redo log在切换时也会对性能产生一定影响。对公司内生产环境,redo log标准如下:
a.使用6组redo log;
b.每组redo log一个成员,每个成员200M。
查看当前redo log使用情况:
selectgroup#,sequence#,members,bytes/1024/1024,status,archived from v$log;
新增redo log组:
alter databaseadd logfile '/usr/oracle/oradata/xxttjdb/redo04.log' size 200M;
删除redo log组:
alter databasedrop logfile group n;
删除redo log成员:
alter databasedrop logfile member 'path'。
3.4使数据库运行在归档模式
为保证数据恢复效率和完整度,为后期使用DataGuard提供条件,新装数据库安装完成后,需要将其切换至归档模式。
在sqlplus下执行以下语句:
select name,log_mode,force_logging from v$database;
如log_mode值为ARCHIVELOG,force_logging值为yes,则表明数据库目前已运行在归档模式下,并已启用强制归档。如运行在非归档模式下,则需将数据库切换为归档模式,并启用强制归档。操作方法:
a.创建归档日志目录:在默认情况下,如不自定义归档日志目录,则归档日志保存在FRA(FlashRecovery Area)中,默认的FRA大小为2G。故日常使用中,推荐在操作系统中创建自定义的归档日志目录,并修改属主及组信息为oracle:dba:
mkdir p/usr/oracle/oradata/arch
chown Roracle.dba /usr/oracle/oradata/arch
b.修改数据库相关参数,指定归档日志存放路径,并将数据库切换至归档模式运行,启用强制归档。自定义归档日志路径有两种方式:修改log_archive_dest参数或修改log_archive_dest_n参数,两种方式的区别:
*修改log_archive_dest参数时,需禁用db_recovery_file_dest,即不能使用Flash RecoveryArea。此种方法直接修改spfile即可,操作:
alter system set db_recovery_file_dest='';
alter system setlog_archive_dest='/usr/oracle/oradata/arch';
shutdown immediate;
startup mount;
alter database archivelog;
alter database force logging;
alter database open;
*修改log_archive_dest_n参数时,无需禁用FRA,但不能直接对spfile修改(即使用alter system方式),需通过修改pfile方式进行,方法:
create pfilefrom spfile;
在最新的pfile中增加以下内容:
*.log_archive_dest_1='location=/usr/oracle/oradata/arch'
指定pfile启动数据库:
startup mountpfile=’/usr/oracle/product/10.2.0/dbs/initanalyse.ora’;
alter databasearchivelog;
alter databaseforce logging;
create spfilefrom pfile;
alter databaseopen;
变更完成后,再次在sqlplus下执行:
select name,log_mode,force_logging from v$database;
用于查看数据库是否已经运行在归档模式下并强制归档。确认已经启用归档后,在sqlplus下执行如下语句:
alter system switch logfile;
执行成功后,切换至自定义的归档日志目录,查看归档日志是否已经生成。
4备份相关
参数调整完成后,需增加对应的备份机制及备份清理机制。目前的备份机制采用RMAN为主、辅以exp形式进行。
RMAN备份脚本分sh脚本和sql脚本,通过sh调用sql。两脚本内容如下(以XXT主库为例):
rmanbak.sh:
rman cmdfile=/edu-backup/shell/rmanbak_xxt.sqllog=/xxtbak/rmanbak/baklog/rmanbak_$rq.log
rm -f /xxtbak/rmanbak/baklog/rmanbak_$rq1.log
find /usr/oracle/admin/xxtnewdb/bdump/xxtnewdb_*.trc-type f -mtime +60 -exec rm {} ;
find /usr/oracle/admin/xxtnewdb/udump/xxtnewdb_*.trc-type f -mtime +60 -exec rm {} ;
find /xxtbak/rmanbak/archivelog/* -type f -mtime +1-exec rm {} ;
find /xxtbak/rmanbak/datafile/inc_* -type f -mtime +1-exec rm {} ;
find /xxtbak/rmanbak/ctlfile/c-* -type f -mtime +1-exec rm {} ;
rmanbak.sql:
connect target;
run{
crosscheck backup;
crosscheck copy;
delete noprompt expired copy;
delete noprompt expired backup;
delete noprompt obsolete;
backup incremental level=1
for recover of copy datafilecopy format'/xxtbak/rmanbak/datafile/datafile_%U'
tag 'incr_xxt' database format'/xxtbak/rmanbak/datafile/inc_%U'
plus archivelog format'/xxtbak/rmanbak/archivelog/arc_%U';
recover copy of database with tag 'incr_xxt';
crosscheck archivelog all;
delete expired archivelog all;
}
exp备份脚本如下:
rq=`date +"%Y%m%d"`
rq5=` date "-d 7 day ago""+%Y%m%d" `
rm -f /edu-backup/bak/pxxt22_$rq5
rm -f /edu-backup/bak/zipexpbak.$rq5
rm -f /edu-backup/bak/zipxxtbak${rq5}.dmp.gz
rm -f /edu-backup/bak/alert_xxtnewdb${rq5}.log
rm -f /edu-backup/bak/listener.${rq5}.log
#rm -f /edu-backup/bak/data_syn_{rq5}.tar.gz
cp /usr/oracle/product/10.2.0/network/log/listener.log/edu-backup/bak/listener.$rq.log && >/usr/oracle/product/10.2.0/network/log/listener.log
cp /usr/oracle/admin/xxtnewdb/bdump/alert_xxtnewdb.log/edu-backup/bak/alert_xxtnewdb$rq.log && >/usr/oracle/admin/xxtnewdb/bdump/alert_xxtnewdb.log
#mv /usr/oracle/admin/nmxxtdb/arch/*/archbak
mknod /edu-backup/bak/pxxt22_$rq p
gzip < /edu-backup/bak/pxxt22_$rq >/edu-backup/bak/zipxxtbak$rq.dmp.gz &
exp system/system#nmxxtdbnewfile=/edu-backup/bak/pxxt22_$rq log=/edu-backup/bak/zipexpbak.$rq full=y
rm -rf /edu-backup/bak/p*
#tar -zcvf /xxtbak/fullbak/data_syn_$rq.tar.gz/usr/oracle/data_syn/
chmod 755 -R /edu-backup/bak/