表空间扩展问题
现在不想写JAVA程序 使用了oracle的job方式
所以想写个存储过程 让job执行的时候去判断一下容量多大了 足够大了就创建个新的数据文件
create or replace procedure PRC_CREATE_TABLESPACES is
MAX_SPACE_ID NUMBER := 0;
resultstr number := 0;
STR_SQL VARCHAR2(2000);
space_name VARCHAR2(1000);
begin
select t.used_percent
into resultstr
from dba_tablespace_usage_metrics t
where t.tablespace_name = 'wlw116';
IF resultstr > 90 then
select max(d.FILE_ID)
into MAX_SPACE_ID
from dba_data_files d
where d.TABLESPACE_NAME = 'wlw116';
MAX_SPACE_ID := MAX_SPACE_ID + 1;
space_name := 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\wlw116_' ||
MAX_SPACE_ID || '.DBF'
STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
'SIZE 20480M AUTOEXTEND OFF; ';
dbms_output.put_line('sql======================' || STR_SQL);
--EXECUTE IMMEDIATE STR_SQL;
end if;
end PRC_CREATE_TABLESPACES;
报错:
PROCEDURE TESTUSER.PRC_CREATE_TABLESPACES 编译错误
错误:PLS-00103: 出现符号 "STR_SQL"在需要下列之一时:
* & = - + ; < / > at in
is mod remainder not rem <an exponent (**)> <> or != or ~= >=
<= <> and or like LIKE2_ LIKE4_ LIKEC_ between || member
SUBMULTISET_
符号 ";" 被替换为 "STR_SQL" 后继续。
行:21
文本:STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
------解决方案--------------------问题出在:
STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
'SIZE 20480M AUTOEXTEND OFF; ';
请把OFF后面的分号去掉:
SQL code
STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
'SIZE 20480M AUTOEXTEND OFF';
------解决方案--------------------
实测 :
space_name := 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\wlw116_' ||
MAX_SPACE_ID || '.DBF'
该语句后面少个分号。