表空间扩展问题

Raulzhao 2011-12-15 11:15:33
现在不想写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 ||

...全文
105 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
我心飞翔 2011-12-15
  • 打赏
  • 举报
回复
实测 :
space_name := 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\wlw116_' ||
MAX_SPACE_ID || '.DBF'

该语句后面少个分号。
yixilan 2011-12-15
  • 打赏
  • 举报
回复
问题出在:
STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
'SIZE 20480M AUTOEXTEND OFF; ';
请把OFF后面的分号去掉:
STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
'SIZE 20480M AUTOEXTEND OFF';

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧