zoukankan      html  css  js  c++  java
  • 关于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 |
    <variable> | : <bindvariable> ] [ 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 |
    <variable> | : <bindvariable> ] [ 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>

  • 相关阅读:
    [置顶] 输入子系统
    多线程知识点总结
    mybatis知识点总结
    redis知识点及常见面试题
    spring知识点(面试题)
    【linux】vim常用命令
    Linux常用命令大全
    Java 位运算(移位、位与、或、异或、非)
    图论之堆优化的Prim
    BZOJ3261 最大异或和 解题报告(可持久化Trie树)
  • 原文地址:https://www.cnblogs.com/milude0161/p/7513727.html
Copyright © 2011-2022 走看看