在新装完的oracle数据库中导入数据,由于数据量比较大,报以下错误;
1 2 ORA-39171: Job is experiencing a resumable wait. ORA-01653: unable to extend table AIR_FORECAST.T_WRF_DATA by 8192 in tablespace USERS
此故障是由于数据库的表空间满了,造成的数据无法正常导入,我们需要手动来扩容表空间
查询当前实例名 1 select instance_name from v$instance;
查询表空间名 1 select tablespace_name from sys.dba_tablespaces;
查询默认表空间 1 2 3 4 5 select a.property_name, a.property_value from database_properties a where a.property_name like '%DEFAULT%'; …… DEFAULT_PERMANENT_TABLESPACE USERS ……
查看表空间使用情况 在PL SQL Developer 中执行一下SQL语句 1 SELECT a.tablespace_name "表空间名",a.bytes / 1024 / 1024 "表空间大小(M)",(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)",b.bytes / 1024 / 1024 "空闲空间(M)",round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比"FROM (SELECT tablespace_name, sum(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) a,(SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC
查看USERS表空间文件及使用量 1 SELECT file_name,tablespace_name,bytes / 1024 / 1024 "bytes MB",maxbytes / 1024 / 1024 "maxbytes MB" FROM dba_data_files WHERE tablespace_name = 'USERS';
查看USERS表空间文件是否自动扩展 1 SELECT file_id, file_name, tablespace_name, autoextensible, increment_by FROM dba_data_files WHERE tablespace_name = 'USERS' ORDER BY file_id desc;
查看”autoextensible”对应的值是YES还是NO,若是NO,说明MSMS表空间的自动扩展功能没有开,改成YES就可以了。
查询所有的schema所占空间大小 1 select owner, sum(bytes)/1024/1024/1024 schema_size_gig from sys.dba_segments group by owner;
增加表空间文件 查看表空间文件 1 SELECT * FROM dba_data_files t WHERE t.tablespace_name='USERS';
查看得知我们的表空间文件在/u01/app/oracle/oradata/sx21/目录下,新建的文件也放在此目录下,方便后期管理
查看表空间文件自增长文件最大值 因为Oracle的物理文件最大只允许4194303个数据块(datablock).需要查看一下本地block块大小
1 2 3 4 5 6 数据块的大小 物理文件的最大值 M =============================================== 2048 8191 M 4096 16383 M 8192 32767 M 16384 65535 M
查看oracle数据库block大小 1 2 3 4 5 6 7 8 9 10 11 12 13 在sqlplus窗口中执行 SQL> show parameter db_block_size; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_block_size integer 8192 在pl/SQL窗口中执行 SQL> select value from v$parameter where name='db_block_size'; VALUE -------------------------------------------------------------------------------- 8192
添加表空间文件 1 SQL> alter tablespace USERS add datafile '/u01/app/oracle/oradata/sx21/users02.dbf' size 5M autoextend on maxsize 32767M;
ASM添加表空间文件 1 2 SQL> alter tablespace USERS add datafile '+DATA' size 5M autoextend on maxsize 32767M; SQL> select name from v$datafile;
注意:ASM增加数据文件或者创建表空间不需要指定数据文件名,只要指定 diskgroup即可,ASM会自动命名。
验证添加的表空间文件 1 2 3 4 5 6 7 8 9 10 11 SQL> select file_name,file_id,tablespace_name FROM dba_data_files WHERE tablespace_name='USERS'; FILE_NAME -------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME ---------- ------------------------------ /u01/app/oracle/oradata/sx21/users01.dbf 4 USERS /u01/app/oracle/oradata/sx21/users02.dbf 5 USERS
扩展阅读 http://www.dba-oracle.com/t_bigfile_tablespace_tips.htm
参考资料:http://blog.csdn.net/u013806814/article/details/48400861 http://blog.itpub.net/27042095/viewspace-1100993/ http://blog.sina.com.cn/s/blog_9d4799c701017pw1.html https://blog.csdn.net/qq_33547950/article/details/79257882