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
  • 相关阅读:
    C# layui组件Dtree简单使用
    利用FormsAuthentication.RedirectFromLoginPage进行身份验证
    Mono for Android (4)-- 图片转为二进制,二进制转回图片
    Android Bitmap详细介绍
    Mono for Android (3)-- AbsoluteLayout、FrameLayout、LinearLayout、RelativeLayout、TableLayout
    Mono for Android (2)-- Android应用程序初认识
    iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法
    JAVA学习笔记(六)--简单抽奖系统
    第五周JAVA学习笔记(五)
    第四周JAVA学习笔记(四)
  • 原文地址:https://www.cnblogs.com/hopeiscoming/p/12609898.html
Copyright © 2011-2022 走看看