oracle的表空间扩容几乎是每一个oracle dba从业者都做过的事情,很多人估计也不会在扩容表空间的时候提前编写脚本啥的了,在这里我记录下我第一次扩容表空间时候的步骤,也给自己和大家提个醒,谨慎和安全是每一个dba都应该重视的,
当时的我的严谨也应该继续下去:
1.先查询表空间的使用情况,一共多少,剩多少,剩余百分比
set linesize 200 pagesize 99
col tablespace_name for a20
select TABLESPACE_NAME,ROUND((t.TABLESPACE_SIZE * p.value)/1024/1024/1024) TABLESPACE_SIZE_GB,ROUND((t.USED_SPACE * p.value)/1024/1024/1024) USED_SPACE_GB,USED_PERCENT
from DBA_TABLESPACE_USAGE_METRICS t
INNER JOIN v$parameter p ON p.name = 'db_block_size' order by 4 desc;
2.一定要查看实例名字 show parameter name
3.查看asm磁盘组的使用情况,是否够给扩容任务
select name,total_mb,free_mb,type from v$asm_diskgroup;
4.查看数据库是db_block_size这个参数,如果是8K数据库的话 一次最多只能加32g(31g)的数据文件,一定要看 有不少16k的
5.select file_name from dba_data_files
查看数据文件存放位置,如果是默认的 +/dbname/datafile/的话就用默认,不是的话要把datafile加到他们的规则里面去
6.给表空间增加数据文件
alter tablespace tablespace_name add datafile '+xxxxxx' size xxg;
注意别加小的碎的文件 直接加大的 有个参数db_files来限制最大的数据文件的个数,修改这个参数要重启库,所以一定要小心别加太多数据文件
7.这个语句要写到脚本里面 然后后台nohup执行
ABM
export ORACLE_SID=abmdb1 ----可以使用env|grep ORACLE_SID来查看环境变量,执行前一定要设置
vi abm.sh -----写nohup执行脚本
export ORACLE_SID=abmdb1
sqlplus -S "/as sysdba" <<! ------脚本内容
set termout off
set feedback on
spool /home/oracle/abspoolm.log
@/home/oracle/abm.sql
spool off
exit
vi abm.sql ------sql内容
set timing on;
alter tablespace TBS_ABM_BJ_INDX add datafile '+DATADG' size 63g;
alter tablespace TBS_ABM_BJ_INDX add datafile '+DATADG' size 63g;
alter tablespace TBS_SID_INDX add datafile '+DATADG' size 63g;
alter tablespace TBS_SID_INDX add datafile '+DATADG' size 63g;
alter tablespace TBS_SID_DATA add datafile '+DATADG' size 63g;
alter tablespace TBS_SID_DATA add datafile '+DATADG' size 63g;
alter tablespace TBS_SID_DATA add datafile '+DATADG' size 63g;
nohup sh abm.sh & ----------后台执行,这个命令执行之后要按回车,注意如果两个脚本在一个目录执行,那么就会有两个nohup.out,所以要重定向 nohup sh ACT.sh > act.out &
tail -100f nohup.out ----------查看运行的输出,可能说什么!不用管,在跑
8.脚本跑起来之后查看日志,看是否按照顺序在跑脚本里面的sql 查询语句:
select n.sid,n.serial#,n.program,n.terminal,n.logon_time,n.machine,n.sql_id,a.sql_text from v$session n,v$sqlarea a where n.sql_id=a.sql_id and a.sql_text like 'alter tablespace%';
添加自动扩展的数据文件:
alter tablespace lv add datafile '+data' size 5m autoextend on maxsize 10m;