【oracle dba】为用户c##luna所在的users表空间扩容

【需求】

在Oracle19上创建用户c##luna后,需要为其扩容以进行大表实验。

【步骤】

1.查用户所在表空间

SQL

select default_tablespace from dba_users where username=upper('c##luna')

执行:

SQL> select default_tablespace from dba_users where username=upper('c##luna');

DEFAULT_TABLESPACE
------------------------------------------------------------
USERS

 

2.看users表空间使用占比

sql:

复制代码
SELECT 
    UPPER(F.TABLESPACE_NAME) "表空间名",
    D.TOT_GROOTTE_MB "表空间大小(M)",
    D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
    TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
    F.TOTAL_BYTES "空闲空间(M)",
    F.MAX_BYTES "最大块(M)"
FROM 
(
    SELECT TABLESPACE_NAME,
    ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
    ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
    FROM SYS.DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME
) F,
(
    SELECT DD.TABLESPACE_NAME,
    ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
    FROM SYS.DBA_DATA_FILES DD
    GROUP BY DD.TABLESPACE_NAME
) D
WHERE 
    D.TABLESPACE_NAME = F.TABLESPACE_NAME and 
    D.TABLESPACE_NAME=upper('users');
复制代码

执行情况:

复制代码
SQL> SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
  2  D.TOT_GROOTTE_MB "表空间大小(M)",
  3  D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
  4  TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
  5  F.TOTAL_BYTES "空闲空间(M)",
  6  F.MAX_BYTES "最大块(M)"
  7  FROM (SELECT TABLESPACE_NAME,
  8  ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
  9  ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
 10  FROM SYS.DBA_FREE_SPACE
 11  GROUP BY TABLESPACE_NAME) F,
 12  (SELECT DD.TABLESPACE_NAME,
 13  ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
 14  FROM SYS.DBA_DATA_FILES DD
 15  GROUP BY DD.TABLESPACE_NAME) D
 16  WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
 17  and D.TABLESPACE_NAME=upper('users');

表空间名                                                     表空间大小(M)
------------------------------------------------------------ -------------
已使用空间(M) 使用比           空闲空间(M)  最大块(M)
------------- ---------------- ----------- ----------
USERS                                                                    5
         2.87   57.40%                2.13       2.13
复制代码

看,建库不久,使用比已经过半了。

 

3.查数据文件所在位置

SQL:

select file_name,tablespace_name,bytes/1024/1024,maxbytes/1024/1024 from dba_data_files where tablespace_name='USERS';

执行:

复制代码
SQL> select file_name,tablespace_name,bytes/1024/1024,maxbytes/1024/1024 from dba_data_files where tablespace_name='USERS';

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                                              BYTES/1024/1024
------------------------------------------------------------ ---------------
MAXBYTES/1024/1024
------------------
C:\ORACLE19C\ORADATA\ORCL\USERS01.DBF
USERS                                                                      5
        32767.9844
复制代码

现在我们知道数据文件所在位置在C:\ORACLE19C\ORADATA\ORCL\下了。

 

4.新建一个供users表空间所用的数据文件。

SQL:

ALTER TABLESPACE USERS ADD DATAFILE 'C:\ORACLE19C\oradata\orcl\usersNewDef.dbf' size 10G autoextend on ;

执行:

SQL> ALTER TABLESPACE USERS ADD DATAFILE 'C:\ORACLE19C\oradata\orcl\usersNewDef.dbf' size 10G autoextend on ;

表空间已更改。

 

5.最后看看使用比变改善了没有。

SQL:

复制代码
SELECT 
    UPPER(F.TABLESPACE_NAME) "表空间名",
    D.TOT_GROOTTE_MB "表空间大小(M)",
    D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
    TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
    F.TOTAL_BYTES "空闲空间(M)",
    F.MAX_BYTES "最大块(M)"
FROM 
(
    SELECT TABLESPACE_NAME,
    ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
    ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
    FROM SYS.DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME
) F,
(
    SELECT DD.TABLESPACE_NAME,
    ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
    FROM SYS.DBA_DATA_FILES DD
    GROUP BY DD.TABLESPACE_NAME
) D
WHERE 
    D.TABLESPACE_NAME = F.TABLESPACE_NAME and 
    D.TABLESPACE_NAME=upper('users');
复制代码

执行:

复制代码
SQL> SELECT
  2      UPPER(F.TABLESPACE_NAME) "表空间名",
  3      D.TOT_GROOTTE_MB "表空间大小(M)",
  4      D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
  5      TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
  6      F.TOTAL_BYTES "空闲空间(M)",
  7      F.MAX_BYTES "最大块(M)"
  8  FROM
  9  (
 10      SELECT TABLESPACE_NAME,
 11      ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
 12      ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
 13      FROM SYS.DBA_FREE_SPACE
 14      GROUP BY TABLESPACE_NAME
 15  ) F,
 16  (
 17      SELECT DD.TABLESPACE_NAME,
 18      ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
 19      FROM SYS.DBA_DATA_FILES DD
 20      GROUP BY DD.TABLESPACE_NAME
 21  ) D
 22  WHERE
 23      D.TABLESPACE_NAME = F.TABLESPACE_NAME and
 24      D.TABLESPACE_NAME=upper('users');

表空间名                                                     表空间大小(M)
------------------------------------------------------------ -------------
已使用空间(M) 使用比           空闲空间(M)  最大块(M)
------------- ---------------- ----------- ----------
USERS                                                                10245
         3.87    0.04%            10241.13       3968
复制代码

 

进过一番操作下来,使用比从57.4变成0.04%了,这证明操作符合预期。

END

posted @   逆火狂飙  阅读(349)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2013-08-28 Linux中如何开启8080端口供外界访问
2013-08-28 在Foreda上安装apache-tomcat-7.0.42.tar.gz
2013-08-28 在简化版Fedora8上安装jdk-7u25-linux-i586.rpm的过程
2013-08-28 【高中数学/等比数列】一个25岁的研究生毕业,年薪10万,每年涨薪3%,连续无病无灾工作30年到55岁,求他总共赚得多少钱?
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示