今天在51cto上看到一篇文章是将oracle运用java存储过程的,于是想去试

试看,因为之前没有试过,觉得特新鲜。结果在执行initjvm.sql的时候出

错了,停在那里很久,中途有事情出去了一下,回来的时候发现执行不成

功,报了ORA-1653: unable to extend table SYS.IDL_UB1$ by 1024 in

tablespace SYSTEM这个错误。去看了看alert文件发现如下提示




提示说我的System表空间的容量不够大,所以我查了一下我的system表空间

的利用情况,发现如下问题:

 

通过上图发现原来我的System表空间容量不足了,只剩下3.81M。

于是就从过以下语句对System表空间进行设置,设置为自动扩展。

 

select tablespace_name,file_name,bytes,autoextensible from dba_data_files;

再次执行一下

initjvm.sql(home/oracle/product/10.2.0/db_1/javavm/install/)。这

次我们又发现了一个新的问题,不过和之前的问题一样是临时表空间容量不足了。

ORA-01652: unable to extend temp segment by 128 in tablespace TEMPTS1

我试着去查看临时表空间的利用率。通过以下SQL语句完成:

SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS, 
USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",
NVL(FREE_SPACE,0) "FREE_SPACE(M)"
FROM 
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,
ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

发现了如下的情况:

 

汗!没想到临时表空间满了。此时通过google获得了很多的解决办法。我通
 
过新增临时数据文件来扩展临时表空间的大小。

alter tablespace TEMPTS1 add tempfile '/home/oracle/mustang/temp02.dbf' size 500M;
 
再次看到临时表空间的容量,发现已经正常了。
 
再次运行initjvm.sql...........成功了!!
 
另外在实验中还遇到一个问题,就是不知道为什么在提示说System表空间不
 
足之后,我试着去shutdown数据库,发现数据库关不了。提示是说ora-
 
01012:not logg on。
ORA-01089: immediate shutdown in progress - no operations are permitted
 
在切换用户时提示说 connect the idle instance。但是在用shutdown
 
abort关闭时却提示说areadly running。上网查过才知道原来这个是由于
 
session数太多了,超过了session限制数,于是采用了下面的方法进行kill
 
session。(这里有请各位大牛指点一下为什么session数会飙升的呢?
 

ps -ef|grep ora_dbw0_$ORACLE_SID

kill  -9 pid(pid为你session的进程号)

之后就可以正常使用了

 

 

 

     以上只是个人的解决方案,不知道对还是不对,希望大牛们多多喷水。祈求进步,哈哈!