最近开发的项目遇到用户反馈使用系统时,系统反应很慢。
由于系统最近没有更新过,以及之前一直使用正常,服务器内存cpu使用正常的情况下就怀疑是不是数据库有问题
通过登录简单的查询一下数据库中的信息,发现数据库查询速度比平时慢
通过下面sql查询了一下数据库表空间资源情况
SELECT A.TABLESPACE_NAME "表空间名",
TOTAL / 1024 / 1024 "表空间大小单位(M)",
TRUNC(TOTAL / 1024 / 1024 / 1024, 2) "表空间大小单位(G)",
FREE / 1024 / 1024 "表空间剩余大小单位(M)",
TRUNC(FREE / 1024 / 1024 / 1024, 2) "表空间剩余大小单位(G)",
(TOTAL - FREE) / 1024 / 1024 "表空间使用大小单位(M)",
TRUNC((TOTAL - FREE) / 1024 / 1024 / 1024, 2) "表空间使用大小单位(G)",
ROUND((TOTAL - FREE) / TOTAL, 4) * 100 "使用率 [[%]]"
FROM (SELECT TABLESPACE_NAME, SUM(BYTES) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME, SUM(BYTES) TOTAL
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
发现表空间的使用率快满了
5.那么接下来好处理了,就是增加表空间就能解决问题了
①.先查询表空间的对应的物理文件(楼主使用的表空间是DATA所以下面查询的表空间名也是DATA)
SELECT TABLESPACE_NAME, --表空间名
FILE_NAME, --表空间对应的物理文件
AUTOEXTENSIBLE --是否自动扩容
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'DATA';
②未对应的物理文件扩容,执行下面语句
ALTER TABLESPACE DATA ADD DATAFILE '物理文件路径(上图的FILE_NAME)' SIZE 30000M AUTOEXTEND on next 10000m;
③执行该语句,出现了ORA-01537:无法添加文件-该文件已是数据库的一部分
~~~~
④遇到上面问题可以给对应的表空间新增物理文件(只需要把上面的file_name后面部分的文件换成数据库中没有的文件名即可,上面的是data01.dbf,可以替换为data02.dbf)。下面的语句时给这个物理文件初始大小为30g,自动扩展为10g
ALTER TABLESPACE DATA ADD DATAFILE '新的File_name' SIZE 30000M AUTOEXTEND on next 10000m;
⑤完成上面操作后,数据库的服务查询慢已经恢复正常。