年底客服机房进行整理,需停电,趁机对系统数据库进行调整,以下为简要脚本记录:
l 为服务器增加硬盘(主要用于正式数据的存储)
l 进行数据库完全备份
l 增加归档设置
l 增加表空间
1. 进行数据库的完全备份
a) 导出nvl_user全部
$su- oracle
$expdp nvl_user/nvl#2016 schemas=nvl_user directory=expdp_dir dumpfile=nvl_user_20170121.dmp logfile=nvl_user_20170121.log job_name=my_job1
b) 压缩文件
$gzip /oralog/backup/nvl_user_20170121.log
$gzip /oralog/backup/nvl_user_20170121.dmp
c) 转移文件
$scp-r /oralog/backup/nvl_user_20170121.log.gzroot@172.16.16.51:/home/nvc_db_backup/imp_data
$scp-r /oralog/backup/nvl_user_20170121.dmp.gzroot@172.16.16.51:/home/nvc_db_backup/imp_data
数据密码:123456789
d) 删除文件(磁盘空间足够时可不执行,以冗余存储)
$rm-f /oralog/backup/nvl_user_20170121.dmp.gz
$rm-f /oralog/backup/nvl_user_20170121.log.gz
2. 对磁盘进行初始化
$su– root
$fdisk–l 查看磁盘详情,发现sdb、sdc有大量空间为使用
$fdisk /dev/sdb 按询问逐步操作,将磁盘未使用的区域用到,产生sdb2
$fdisk /dev/sdc 按询问逐步操作,将磁盘未使用的区域用到,产生sdc2
$reboot 非常重要,否则无法进行后续操作
$mkfs.ext3 /dev/sdb2 按提示操作
$mkfs.ext3 /dev/sdc2 按提示操作
$df–h 查看发现已比原来增加了sdb2、sdc2
注意:磁盘再分区或者格式化前操作系统会有防误操作提示,务必认真查看提示确认将分区磁盘是否有被使用等情况,避免风险。
3. 为新增磁盘建立oradata2/oralog2目录并分配权限
$mkdiroralog2
$mkdir/oradata2/oradata
$mkdir/oradata2/oradata/orcl
$chownoracle:oinstall oralog2
$chownoracle:oinstall oradata2
$chownoracle:oinstall /oradata2/oradata
$chownoracle:oinstall /oradata2/oradata/orcl
$mount/dev/sdc2 /oralog2
$mount/dev/sdb2 /oradata2
4. 查看Oracle数据库的归档设置
$sqlplus/ as sysdba
a) 查看归档设置
SQL>archivelog list;
发现未开启归档模式。
b) 查看归档文件限制大小
SQL>showparameter db_recover;
发现db_recovery_file_dest_size不足4G,一旦开启归档模式,将很快消耗掉空间,需设置为其它目录下的另外一个足够大的空间,一遍减少后续日志的定期清理频率。
c) 查看磁盘空间,寻找合适的大小
$df-h
发现app目录剩余仅39G,故将db_recovery_file_dest_size设置为24G (虽然oralog目录并非默认归档目录,并不受此参数影响);
发现/oralog目录剩余327G,/oralog2目录剩余440G,故将归档路径设置在oralog和oralog2上:。
SQL>alter system set db_recovery_file_dest_size=24G;
设置多个归档路径
SQL>showparameter log_archive;
发现已设置了log_archive_dest_1,故无需再设置log_archive_dest_2,如某用户认为需要进行冗余日志处理,将日志存储到多个物理磁盘,则可启用log_archive_dest_2,设置步骤可参考以下:
$su- root
$mkdir/oralog2/archive_log
$mkdir/oralog2/archive_log/log
$chownoracle:oinstall /oralog2/archive_log
$chownoracle:oinstall /oralog2/archive_log/log
$su- oracle
$sqlplus/ as sysdba;
SQL>altersystem set log_archive_dest_2='location=/oralog2/archive_log/log';
注意:log_archive_dest_n可设置为远程服务器路径,此客户并无此需求,且本身oralog与oralog2在一个物理磁盘上,无此必要,故不进行此设置。
d) 设置归档文件的文件名存放形式
SQL>showparameter log_archive_format;
SQL>altersystem set log_archive_format='ARC%S_%R.%T_%D.log' scope=spfile;
e) 重启数据库并开启归档模式
SQL>shutdownimmediate;
SQL>startupmount;
SQL>alterdatabase archivelog;
SQL>alterdatabase open;
SQL>altersystem switch logfile;
检查/oralog/archive_log/log目录是否产生了新文件
$cd/oralog/archive_log/log
f) 再次关闭数据库并正常启动数据库
SQL>shutdownimmediate;
SQL>startup;
g) 检查各个参数是否生效
SQL>archivelog list;
SQL>showparameter log_archive_format;
SQL>showparameter db_recover;
5. 一并增加BARD和BARX两个主要表空间的可用文件
充分利用/oradata的可用空间,但是留10%左右的空余空间,以给系统表、回滚段等空间等有足够的空间扩展。以下在pl/sql中进行。
a) 在原有磁盘oradata增加表空间文件
ALTER TABLESPACE BARD ADD DATAFILE'/oradata/oradata/orcl/bard09.dbf' SIZE 16384M;
ALTER TABLESPACE BARD ADD DATAFILE'/oradata/oradata/orcl/bard10.dbf' SIZE 16384M;
增加barx06表文件
ALTER TABLESPACE BARX ADD DATAFILE'/oradata/oradata/orcl/barx06.dbf' SIZE 8192M;
注意:/oradata目录不宜再建立表空间,磁盘即将满掉
b) 在新磁盘上增加多个表空间
ALTER TABLESPACE BARD ADD DATAFILE '/oradata2/oradata/orcl/bard11.dbf'SIZE 16384M;
ALTER TABLESPACE BARD ADD DATAFILE '/oradata2/oradata/orcl/bard12.dbf'SIZE 16384M;
ALTER TABLESPACE BARD ADD DATAFILE '/oradata2/oradata/orcl/bard13.dbf'SIZE 16384M;
ALTER TABLESPACE BARD ADD DATAFILE '/oradata2/oradata/orcl/bard14.dbf'SIZE 16384M;
ALTER TABLESPACE BARD ADD DATAFILE '/oradata2/oradata/orcl/bard15.dbf'SIZE 16384M;
ALTER TABLESPACE BARD ADD DATAFILE '/oradata2/oradata/orcl/bard16.dbf'SIZE 16384M;
ALTER TABLESPACE BARX ADD DATAFILE '/oradata2/oradata/orcl/barx07.dbf'SIZE 16384M;
ALTER TABLESPACE BARX ADD DATAFILE '/oradata2/oradata/orcl/barx08.dbf'SIZE 16384M;
ALTER TABLESPACE BARX ADD DATAFILE '/oradata2/oradata/orcl/barx09.dbf'SIZE 16384M;
c) 修改oradata上的表空间为不可自动增长,当前文件太大不利有后续维护
alter database datafile'/oradata/oradata/orcl/bard05.dbf' autoextend off;
alter database datafile'/oradata/oradata/orcl/bard06.dbf' autoextend off;
alter database datafile'/oradata/oradata/orcl/bard07.dbf' autoextend off;
alter database datafile'/oradata/oradata/orcl/barx03.dbf' autoextend off;
alter database datafile'/oradata/oradata/orcl/barx04.dbf' autoextend off;
d) 将新增的最后一个表空间文件设置为可自动增长,避免长期无人维护时满掉
alter database datafile '/oradata2/oradata/orcl/bard16.dbf' autoextend on;
alter database datafile '/oradata2/oradata/orcl/barx09.dbf' autoextend on;