zoukankan      html  css  js  c++  java
  • oracle数据库表空间介绍及常用SQL

     

    ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的
    oracle中的表就是一张存储数据的表。表空间是逻辑上的划分。方便管理的。
    数据表空间 (Tablespace)        
    存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一般一个数据表空间包含一个以上的物理文件
    数据表        
    在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层。 我们在数据库中存放数据,最终是数据表的单元来存储与管理的。
    数据文件        
    以上几个概念都是逻辑上的, 而数据文件则是物理上的。就是说,数据文件是真正“看得着的东西”,它在磁盘上以一个真实的文件体现
    1.1、创建表空间:
    格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小
    create tablespace data_test datafile 'e:oracleoradata	estdata_1.dbf' size 2000M;
    create tablespace idx_test datafile 'e:oracleoradata	estidx_1.dbf' size 2000M;
    (*数据文件名 包含全路径, 表空间大小 2000M 表是 2000兆) 

        1.2、 创建临时表空间,临时表空间用于用户执行查询时要使用的缓存空间。

     文件路径保存在/opt/oracle/oradata/biee目录

    CREATE TEMPORARY TABLESPACE DW_TEST_TMP_TBS
    TEMPFILE '/opt/oracle/oradata/biee/DW_TEST_TMP_TBS01.dbf'
    SIZE 32M
    AUTOEXTEND ON
    NEXT 32M MAXSIZE 2048M
    EXTENT MANAGEMENT LOCAL;
    2、建好tablespace, 就可以建用户了
    格式: create user 用户名 identified by 密码 default tablespace 表空间表;
    create user study identified by study default tablespace data_test;
    (*我们创建一个用户名为 study,密码为 study, 缺少表空间为 data_test -这是在第二步建好的.)
    (*缺省表空间表示 用户study今后的数据如果没有专门指出,其数据就保存在 data_test中, 也就是保存在对应的物理文件 e:oracleoradata estdata_1.dbf中)
    3. 创建用户并指定表空间
    CREATE USER cici IDENTIFIED BY cici PROFILE DEFAULT DEFAULT TABLESPACE CICI ACCOUNT UNLOCK;
    create user jykl identified by jykl default tablespace jykl_data temporary tablespace jykl_temp;
    授权给新用户
    GRANT connect, resource TO cici;
    grant create session to cici;
    4. 授权给新用户
    grant connect,resource to study; 
    --表示把 connect,resource权限授予study用户
    grant dba to study;
    --表示把 dba权限授予给 study

      5.  可以查询表空间使用状况的SQL

    SELECT 
        a.tablespace_name 表空间名称, 
        total 总计, 
        total - free 已使用, 
        free 空闲, 
        round((total - free) / total * 100, 2) 使用占比
    FROM (
        SELECT tablespace_name
            , round(SUM(bytes) / 1024 / 1024) AS total
        FROM dba_data_files
        GROUP BY tablespace_name
    ) a
        LEFT JOIN (
            SELECT tablespace_name
                , round(SUM(bytes) / 1024 / 1024) AS free
            FROM dba_free_space
            GROUP BY tablespace_name
        ) b
        ON a.tablespace_name = b.tablespace_name
    ORDER BY (total - free) / total DESC;

    查询结果如下,这样就可以清晰的看到数据库的具体使用情况啦。

    不要等到Oracle磁盘空间满了,再去查表空间使用情况

    6. 查看表空间的名称及大小

    SELECT t.tablespace_name
        , round(SUM(bytes / (1024 * 1024)), 0) AS ts_size
    FROM dba_tablespaces t, dba_data_files d
    WHERE t.tablespace_name = d.tablespace_name
    GROUP BY t.tablespace_name;

    7. 查看表空间物理文件的名称及大小

    SELECT tablespace_name, 
    file_id, 
    file_name, 
    round(bytes / (1024 * 1024), 0) total_space 
    FROM dba_data_files 
    ORDER BY tablespace_name; 

    参考链接:https://www.cnblogs.com/wyf0518/p/11319868.html
    https://www.cnblogs.com/qmfsun/p/3817344.html
    https://www.cnblogs.com/30go/p/7910690.html
  • 相关阅读:
    SSL JudgeOnline 1194——最佳乘车
    SSL JudgeOnline 1457——翻币问题
    SSL JudgeOnlie 2324——细胞问题
    SSL JudgeOnline 1456——骑士旅行
    SSL JudgeOnline 1455——电子老鼠闯迷宫
    SSL JudgeOnline 2253——新型计算器
    SSL JudgeOnline 1198——求逆序对数
    SSL JudgeOnline 1099——USACO 1.4 母亲的牛奶
    SSL JudgeOnline 1668——小车载人问题
    SSL JudgeOnline 1089——USACO 1.2 方块转换
  • 原文地址:https://www.cnblogs.com/hopeiscoming/p/12609898.html
Copyright © 2011-2022 走看看