linux ora 01653,关于Oracle的ora-01653无法通过1024扩展

系统提交任务失败,查到日志得到了关键字Oracle表空间OA的ora-01653无法通过1024扩展,这个问题是数据库表空间创建的时候都会设定表空间的大小,而实际上表空间的数据存储都是生成一个在特定目录下的一个dbf文件,可能有多个,我认为一般建立表空间的时候按照需要设定一个适当大小的表空间,最好将大小设置为可以自增的,这样当这个表空间的数据增长到一定的大小时,会自动创建一个增长量,我这次修改为8M,就是说下次,这个文件存储的数据将要满了的时候,会自动将文件的大小扩展8M,其实我是先把这个表空间加大到1G,才做的这个操作,其实查询到好多个解决这种问题的办法:

第一步、oracle查询表空间是否已满:

select dbf.tablespace_name,

dbf.totalspace "总量(M)",

dbf.totalblocks as 总块数,

dfs.freespace "剩余总量(M)",

dfs.freeblocks "剩余块数",

(dfs.freespace / dbf.totalspace) * 100 "空闲比例"

from (select t.tablespace_name,

sum(t.bytes) / 1024 / 1024 totalspace,

sum(t.blocks) totalblocks

from dba_data_files t

group by t.tablespace_name) dbf,

(select tt.tablespace_name,

sum(tt.bytes) / 1024 / 1024 freespace,

sum(tt.blocks) freeblocks

from dba_free_space tt

group by tt.tablespace_name) dfs

where trim(dbf.tablespace_name) = trim(dfs.tablespace_name);

或者

SELECT Total.name "Tablespace Name",

Free_space,

(total_space - Free_space) Used_space,

total_space

FROM (select tablespace_name, sum(bytes / 1024 / 1024) Free_Space

from sys.dba_free_space

group by tablespace_name) Free,

(select b.name, sum(bytes / 1024 / 1024) TOTAL_SPACE

from sys.v_$datafile a, sys.v_$tablespace B

where a.ts# = b.ts#

group by b.name) Total

WHERE Free.Tablespace_name = Total.name;

第二步、再查看表空间是否开启了自动扩展的功能

SELECT T.TABLESPACE_NAME,

D.FILE_NAME,

D.AUTOEXTENSIBLE,

D.BYTES,

D.MAXBYTES,

D.STATUS

FROM DBA_TABLESPACES T, DBA_DATA_FILES D

WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME

ORDER BY TABLESPACE_NAME, FILE_NAME;

我的表空间剩余已经小于0.5%了。

第三步、也就是解决问题的具体方法,前边只是查询一些具体项,具体解决方式我找到有以下四种:

1.

ALTER TABLESPACE ***_TRD ADD DATAFILE ‘D:OraclePRODUCT10.2.0ORADATADBFILETRD_2.DBF’ SIZE 1024M;

2.

ALTER TABLESPACE ***_TRD ADD DATAFILE ‘D:ORACLEPRODUCT10.2.0ORADATADBFILETRD_2.DBF’ SIZE 1024M AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;

3.

ALTER DATABASE DATAFILE ‘D:ORACLE10.2.0ORADATAHZXMOA2.DBF’ AUTOEXTEND ON NEXT 8M MAXSIZE 2048M;

4.

ALTER DATABASE DATAFILE ‘D:ORACLE10.2.0ORADATAHZXMOA2.DBF’ RESIZE 1024M;

而我解决的方式是4和3,我是先把表空间从原来的512M增加到1024M,后来想以后不用这么麻烦了,毕竟数据又快到达1024M的时候还会出现问题,给客户添加问题,也给我添加问题(ps:毕竟咱们上班都算是比较晚的,怎么也得七点多八点才起来,特殊情况除外,不过特殊情况很少,客户大早上没到七点就用电话给我整醒了,说系统出了问题,/233),所以我让这个问题在出现的时间延后一点,没准下次我想起来了,没等他快满了,我又给他加大了呢,所以我就讲这个最大值从1024,不是自增的 变为自增到2048M为止,这样就好了。其实我觉得创建数据库的时候直接设置成自增的不就得了,哪有这么多麻烦事儿啊。

顺便说一下数据库的使用,由于这个操作是需要Oracle的dba权限的,而我知道的用户名都没有DBA权限,以前的文档啊都没记录,前同事早跑没影儿了,,,后来在数据的操作系统上用:sqlplus / as sysdba直接就能用dba权限去操作,我还顺便将一个用户名赋予了dba权限,/233,这样下回即使忘记(想不起来)了这个命令,我还是会记得登陆数据的常用用户名和密码,/233,别的没了。

ps:其实已经有很多个博客啥的说明了解决这个问题的方法,我就是想记录一下,咱也要不断学习不是啊。

想了想,我还是附上操作记录吧,毕竟我的记性实在是不好:

Microsoft Windows [版本 6.1.7600]

版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:UsersAdministrator>TNSPING HZXM

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-9月 -

2017 08:46:14

Copyright (c) 1997, 2005, Oracle. All rights reserved.

已使用的参数文件:

D:oracle10.2.0db_1

etworkadminsqlnet.ora

已使用 TNSNAMES 适配器来解析别名

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)

(HOST = 192.168.254.11)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SER

VICE_NAME = hzxm)))

OK (0 毫秒)

C:UsersAdministrator>SQLPLUS /NOLOG

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 13 08:46:48 2017

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> SELECT Total.name "Tablespace Name",

2 Free_space,

3 (total_space - Free_space) Used_space,

4 total_space

5 FROM (select tablespace_name, sum(bytes / 1024 / 1024) Free_Space

6 from sys.dba_free_space

7 group by tablespace_name) Free,

8 (select b.name, sum(bytes / 1024 / 1024) TOTAL_SPACE

9 from sys.v_$datafile a, sys.v_$tablespace B

10 where a.ts# = b.ts#

11 group by b.name) Total

12 WHERE Free.Tablespace_name = Total.name;

SP2-0640: 未连接

SQL> quit();

用法: { EXIT | QUIT } [ SUCCESS | FAILURE | WARNING | n |

| : ] [ COMMIT | ROLLBACK ]

C:UsersAdministrator>SQLPLUS

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 13 09:25:15 2017

Copyright (c) 1982, 2005, Oracle. All rights reserved.

请输入用户名: oa

输入口令:

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> grant dba to oa;

grant dba to oa

*

第 1 行出现错误:

ORA-01031: 权限不足

SQL> quit();

用法: { EXIT | QUIT } [ SUCCESS | FAILURE | WARNING | n |

| : ] [ COMMIT | ROLLBACK ]

从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options 断开

C:UsersAdministrator>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 13 09:25:57 2017

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> grant dba to oa

2 ;

SP2-0640: 未连接

SQL> exit;

C:UsersAdministrator>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 9月 13 09:55:36 2017

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> grant dba to oa;

授权成功。

SQL> ALTER DATABASE DATAFILE 'D:ORACLE10.2.0ORADATAHZXMOA2.DBF' RESIZE 1024

M;

数据库已更改。

SQL>

ALTER DATABASE DATAFILE 'D:ORACLE10.2.0ORADATAHZXMOA2.DBF' AUTOEXTEND ON NEXT 8M MAXSIZE 2048M;

数据库已更改。

SQL>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值