Oracle数据库statspack的创建等若干问题

sqlplus客户端中执行语句“sqlplus perfstat/perfstat @%binPath%/setSnap.txt

 

setSnap.txt里面的内容为

EXECUTE statspack.snap;

select snap_id from stats$snapshot;

quit

可是没有创建statspack,当执行这条语句时,抛出以下异常:

BEGIN statspack.snap; END;

      *

ERROR at line 1:

ORA-06550: line 1, column 7:

PLS-00201: identifier 'STATSPACK.SNAP' must be declared

ORA-06550: line 1, column 7:

PL/SQL: Statement ignored

 

很明显,'STATSPACK.SNAP'没有创建起来,于是,上网查找创建STATSPACK.SNAP的过程。网上资料一大堆。比如:

http://blog.csdn.net/lejuo/archive/2008/12/18/3552211.aspx

http://piaoling.javaeye.com/blog/294119

 

但是,在照搬网上说法,要求在sqlplus中执行@ spcreate.sql时候,过程中有可能出错,spcreate.sql脚本执行过程中,如果有任何错误,则会中断执行。于是又执行@spdrop.sqlspdrop.sql脚本执行过程中,如果有些错误,不会中断执行,继续执行下面的语句。

 

对于执行spcreate.sql脚本时,在创建用户perfstat或者创建表空间perfstat之后,如果会出错,有可能要删除用户perfstat,或者删除表空间perfstat

 

我的创建表空间的脚本是:

CREATE TABLESPACE perfstat

DATAFILE 'F:/oracle/product/10.2.0/oradata/g10/perfstat01.dbf' SIZE 100m

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100k;

创建完之后,成功了。可是执行spcreate.sql脚本时,出错了,报出:‘…initial…’等错误。

 

分析问题,可能是在创建表空间过程中,初始表空间没有指定大小抑或太小了。

 

于是,修正步骤如下:

1.删除原有的perfstat用户和perfstat空间。

sysdba身份用sqlplus连接oracle

sqlplus system/manager

 

执行语句:

drop user perfstat cascade;

drop tablespace perfstat;

同时删除原有的表空间文件:

F:/oracle/product/10.2.0/oradata/g10/PERFSTAT01.DBF

 

 

2.重新创建statspack.snap

按照的说法:http://piaoling.javaeye.com/blog/294119

只是,创建表空间的语句变成了:

 

create tablespace PERFSTAT

datafile'F:/oracle/product/10.2.0/oradata/g10/perfstat01.dbf' size 500M

autoextend on next 500M maxsize unlimited

minimum extent 5M

default storage( initial 5M

next 5M

minextents 1

maxextents unlimited

pctincrease 0);

 

这样的创建过程经过验证无误。

你可能感兴趣的:(oracle,数据库,脚本,user)