• oracle创建表空间及查看表空间和使用情况


    创建表空间

    1. 创建表空间
    create tablespace “tablespace_name”
    datafile 'D:\oracle\product\10.2.0\oradata\orcl\SIRM2.dbf' size 1024M --存储地址 初始大小1G
    autoextend on next 10M maxsize unlimited   --每次扩展10M,无限制扩展
    EXTENT MANAGEMENT local  autoallocate
    segment space management auto;
    2.创建用户
     create user “user” identified by “password” 
    default tablespace “tablespace”
      temporary tablespace TEMP
      profile DEFAULT;
    3.授权
    grant dba to test;
    grant connect to test;
    grant resource to test;
     SYS用户在CMD下以DBA身份登陆: 
    conn / as sysdba 
    //创建临时表空间   
     create temporary tablespace user_temp   
     tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'  
     size 50m   
    autoextend on   
     next 50m maxsize 20480m   
     extent management local;   
     //创建数据表空间   
     create tablespace test_data   
    logging   
     datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'  
    size 50m   
     autoextend on   
     next 50m maxsize 20480m   
     extent management local;   
     //创建用户并指定表空间   
     create user username identified by password   
     default tablespace user_data   
    temporary tablespace user_temp;   
     //给用户授予权限   
     grant connect,resource to username;   
     
      //以后以该用户登录,创建的任何数据库对象都属于user_temp 和user_data表空间, 
    这就不用在每创建一个对象给其指定表空间了  
     
    撤销权限:   
    revoke   权限...   from  用户名; 
     删除用户命令 
     drop user user_name cascade; 
     建立表空间 
     CREATE TABLESPACE data01 
    DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M 
    UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k 
     删除表空间 
     DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 
    一、建立表空间 
     CREATE TABLESPACE data01 
    DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M 
    UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k 
     二、建立UNDO表空间 
     CREATE UNDO TABLESPACE UNDOTBS02 
     DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M 
     #注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间: 
     ALTER SYSTEM SET undo_tablespace=UNDOTBS02; 
     三、建立临时表空间 
     CREATE TEMPORARY TABLESPACE temp_data 
    TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M 
    四、改变表空间状态 
     1.使表空间脱机 
     ALTER TABLESPACE game OFFLINE; 
     如果是意外删除了数据文件,则必须带有RECOVER选项 
     ALTER TABLESPACE game OFFLINE FOR RECOVER; 
     2.使表空间联机 
     ALTER TABLESPACE game ONLINE; 
    3.使数据文件脱机 
     ALTER DATABASE DATAFILE 3 OFFLINE; 
     4.使数据文件联机 
     ALTER DATABASE DATAFILE 3 ONLINE; 
    5.使表空间只读 
     ALTER TABLESPACE game READ ONLY; 
    6.使表空间可读写 
     ALTER TABLESPACE game READ WRITE; 
     五、删除表空间 
     DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 
    六、扩展表空间 
     首先查看表空间的名字和所属文件 
     select tablespace_name, file_id, file_name, 
     round(bytes/(1024*1024),0) total_space 
     from dba_data_files 
    order by tablespace_name; 
     1.增加数据文件 
     ALTER TABLESPACE game 
     ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M; 
     2.手动增加数据文件尺寸 
     ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
     RESIZE 4000M; 
     3.设定数据文件自动扩展 
     ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf 
     AUTOEXTEND ON NEXT 100M 
     MAXSIZE 10000M; 
     设定后查看表空间信息 
     SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE, 
     (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
     FROM SYS.SMTS_AVAIL A,SYS.SMTSA​VAILA,SYS.SMTS_USED B,SYS.SM$TS_FREE C 
     WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE 

    查看表空间使用

    --1、查看表空间的名称及大小
    SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
    FROM dba_tablespaces t, dba_data_files d
    WHERE t.tablespace_name = d.tablespace_name
    GROUP BY t.tablespace_name;

    --2、查看表空间物理文件的名称及大小
    SELECT tablespace_name,
    file_id,
    file_name,
    round(bytes / (1024 * 1024), 0) total_space
    FROM dba_data_files
    ORDER BY tablespace_name;

    --3、查看回滚段名称及大小
    SELECT segment_name,
    tablespace_name,
    r.status,
    (initial_extent / 1024) initialextent,
    (next_extent / 1024) nextextent,
    max_extents,
    v.curext curextent
    FROM dba_rollback_segs r, v$rollstat v
    WHERE r.segment_id = v.usn(+)
    ORDER BY segment_name;

    --4、查看控制文件
    SELECT NAME FROM v$controlfile;

    --5、查看日志文件
    SELECT MEMBER FROM v$logfile;

    --6、查看表空间的使用情况
    SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name
    FROM dba_free_space
    GROUP BY tablespace_name;
    SELECT a.tablespace_name,
    a.bytes total,
    b.bytes used,
    c.bytes free,
    (b.bytes * 100) / a.bytes "% USED ",
    (c.bytes * 100) / a.bytes "% FREE "
    FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c
    WHERE a.tablespace_name = b.tablespace_name
    AND a.tablespace_name = c.tablespace_name;

    --7、查看数据库库对象
    SELECT owner, object_type, status, COUNT(*) count#
    FROM all_objects
    GROUP BY owner, object_type, status;

    --8、查看数据库的版本
    SELECT version
    FROM product_component_version
    WHERE substr(product, 1, 6) = 'Oracle';

    --9、查看数据库的创建日期和归档方式
    SELECT created, log_mode, log_mode FROM v$database;

    检查表空间使用率

    1.查询不包含临时表空间的使用率

    SELECT Upper(F.TABLESPACE_NAME) "TablespaceName",
    D.TOT_GROOTTE_MB "Total(M)",
    D.TOT_GROOTTE_MB - F.TOTAL_BYTES "Used(M)",
    To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
    || '%' "Used%",
    F.TOTAL_BYTES "Free(M)",
    F.MAX_BYTES "max_block(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
    ORDER BY 1

    2.查看临时表空间使用率

    select c.tablespace_name,
    to_char(c.bytes / 1024 / 1024, '99,999.999') total_bytes,
    to_char((c.bytes - d.bytes_used) / 1024 / 1024, '99,999.999') free_bytes,
    to_char(d.bytes_used / 1024 / 1024, '99,999.999') use_bytes,
    to_char(d.bytes_used * 100 / c.bytes, '99.99') || '%' use
    from (select tablespace_name, sum(bytes) bytes
    from dba_temp_files
    group by tablespace_name) c,
    (select tablespace_name, sum(bytes_cached) bytes_used
    from v$temp_extent_pool
    group by tablespace_name) d
    where c.tablespace_name = d.tablespace_name

    3.查看临时表空间 用户使用情况

    select username,tablespace,session_num sid,sqladdr,sqlhash,segtype,extents,blocks from v$sort_usage;

  • 相关阅读:
    【C++杂货铺】一颗具有搜索功能的二叉树
    信息系统基础选择题真题
    第二章 进程与线程 八、处理机调度(时机切换、过程调度方式)
    MySQL 中的 INSERT 是怎么加锁的?(荣耀典藏版)
    5个用于地理空间数据分析的Python包
    基于XML配置的AOP
    秋日有感之秋诉-于光
    C# 深入理解事件(event)机制
    C基础练习(学生管理系统)
    java: 读取snakeyaml-1.26.jar各种jar包时出错; error in opening zip file
  • 原文地址:https://blog.csdn.net/yulei2008_/article/details/125868504