表空间不足问题-表空间文件自增

本文介绍Oracle数据库中表空间的查看及管理方法,包括查看表空间、文件路径、用户默认表空间等命令,提供自动扩展表空间的存储过程及定时任务设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看表 空间命令

--查看表空间
SELECT * from dba_tablespaces;

--查看表空间文件路径

select tablespace_name,file_id,file_name from dba_data_files order by 1,2;

--查看用户和默认表空间的关系
SELECT username,default_tablespace from      dba_users;

简单处理 表空间增长问题

-- 扩大原表空间文件
-- 单文件32g 问题注意 --根据系统环境 ,4k 16g  8k 32g

ALTER DATABASE DATAFILE 'C:\ORANT\ORADATA\xxx\xxx.ORA' AUTOEXTEND ON MAXSIZE UNLIMITED;
-- 因为单文件大小限定,所以以增加文件的方式解决问题
alter tablespace tablespace_all.tablespace_name  add datafile  all_file_name  SIZE 1024M AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED

终极方案 自动扩展表空间

--使用率超过90%则进行新增表文件创建
create or replace procedure prc_job_auto_add_datafile is

all_file_name varchar2(500);
tablespace_all varchar2(500);
vs_sql varchar2(500);
filecount varchar2(100);
relativepath varchar2(500);

cursor c_tablespace is
SELECT tablespace_name,Total_MB,Used_MB,Round(Used_MB/Total_MB*100,2) AS User_Pct from
(
    select tablespace_name,Round(Sum(bytes)/1024/1024,2) AS Used_MB,Round(sum(maxbytes)/1024/1024,2) AS Total_MB from dba_data_files
    where tablespace_name <> 'SYSAUX' AND tablespace_name <> 'USERS' AND tablespace_name NOT LIKE 'UNDOTBS%'
    group by tablespace_name
);

Begin
  relativepath:= 'D:\app\Administrator\oradata\orcl\';--云中心:+DATA/zhsw/datafile/  153:D:\app\Administrator\oradata\orcl\
  for tablespace_all in c_tablespace  loop
        If tablespace_all.User_Pct >=90 Then
            all_file_name :=  relativepath|| tablespace_all.tablespace_name;
            select count(*)+1 into filecount from dba_data_files where tablespace_name=tablespace_all.tablespace_name;
            if filecount<=9 then 
              filecount:='0'||filecount; 
            end if;
            all_file_name := all_file_name||filecount||'.dbf';
            vs_sql := 'alter tablespace '||tablespace_all.tablespace_name||' add datafile '''||all_file_name||''' SIZE 1024M AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED';
            --dbms_output.put_line(vs_sql);
            Execute Immediate vs_sql;
       End If;
  end loop;

exception
  when others then
    dbms_output.put_line(sqlerrm);
End prc_job_auto_add_datafile;



--创建oracle job 频率为周
begin
  sys.dbms_scheduler.create_job(job_name            => 'auto_add_datafile',
                                job_type            => 'STORED_PROCEDURE',
                                job_action          => 'prc_job_auto_add_datafile',
                                start_date          => to_date('24-07-2018 09:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                                repeat_interval     => 'Freq=Weekly',
                                end_date            => to_date(null),
                                job_class           => 'DEFAULT_JOB_CLASS',
                                enabled             => true,
                                auto_drop           => true,
                                comments            => '');
end;
/


-- 观察是否生成  model_data07  表空间

中途问题

1. 需要dba 权限

2.查询能找到 dba_data_files 视图,但是执行存储过程时报未找到

需要以dba 身份重新赋予权限  

grant select on dba_data_files to shpzjzs;

3.注意代码默认命名的增长方式,防止文件已经存在

### 修改Oracle数据库中表空间的自属性 对于希望配置Oracle数据库中的表空间实现自动增长,可以通过执行`ALTER DATABASE DATAFILE`语句来开启数据文件自动扩展功能。具体命令如下所示: ```sql alter database datafile '/u01/oracle/app/oradata/DBPRIMARY/WEBONLINEPRE.dbf' autoextend on; ``` 上述命令用于启动指定路径下数据文件自动增长特性[^1]。 如果需要更精细地控制每次量大小以及最大容量,则可进一步指定参数`NEXT`和`MAXSIZE`: ```sql ALTER DATABASE DATAFILE 'D:\YSGY_TABLESPACE.DBF' AUTOEXTEND ON NEXT 200M MAXSIZE 1024M; ``` 此命令不仅启用了自动扩展选项,还设定了每当存储不足时追加的空间量为200MB,并且整个文件的最大尺寸被限定为1GB[^5]。 针对临时表空间而言,创建之初即可定义其具备自动增长的能力。例如下面这条指令展示了如何建立一个新的带有自动扩展特性的临时表空间: ```sql create temporary tablespace plncontrol_temp tempfile '/u01/oracle/app/oradata/DBPRIMARY/plncontrol_temp.dbf' size 200m reuse autoextend on next 40m maxsize unlimited; ``` 这里设置了初始分配给临时表空间的磁盘空间为200MB,在必要情况下将以40MB为单位逐步加直至无上限[^2]。 为了确认这些更改是否生效或者查询现有表空间的状态,可以利用以下SQL语句获取有关信息: ```sql SELECT FILE_NAME, TABLESPACE_NAME, AUTOEXTENSIBLE FROM dba_data_files WHERE TABLESPACE_NAME='目标表空间名称'; ``` 通过这个查询能够了解到特定表空间下的各个数据文件是否开启了自动扩展机制及其当前状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值