oracle创建数据库和表空间有啥联系?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle创建数据库和表空间有啥联系?相关的知识,希望对你有一定的参考价值。

参考技术A

    表空间是数据库中最大的逻辑存储结构,为数据库提供使用空间,其对应物理结构是数据文件,一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。表空间所包含的数据文件的大小,也就决定了表空间的大小,所以,表空间也是逻辑结构连接到物理结构的一个纽带;

    create tablespace test datafile 'D:\\test.ora' size 1000m;这里的test为表空间名称,路径自己来命名;

    oracle创建一个数据库需要以下三个步骤 ;

    创建两个数据库的文件;

    创建用户与上面创建的文件形成映射关系;

    给用户添加权限。

Oracle表和表空间查询

用户查询

查询和用户相关的数据
创建用户

CREATE USER user
    IDENTIFIED BY password
    [DEFAULT TABLESPACE tablespace]
    [TEMPORARY TABLESPACE tablespace]

查询所有用户数

select username from dba_users;

查询当前实例名称

select instance_name from v$instance;

表空间查询

查询用户表空间和临时表空间相关的数据

用户表空间

创建表空间

CREATE TABLESPACE tbs_01 
    DATAFILE ‘demo.dbf‘
    SIZE 40M
    AUTOEXTEND ON NEXT 5M MAXSIZE 100M
    ONLINE
    LOGGING
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M
    SEGMENT SPACE MANAGEMENT AUTO;

查询表空间总大小

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "BYTES(M)" FROM DBA_DATA_FILES

查询表空间剩余大小

SELECT
    tablespace_name,
    SUM(bytes) / (1024 * 1024) AS free_space
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; 

临时表空间

查询临时表空间大小

SELECT
    TABLESPACE_NAME,
    FILE_ID,
    FILE_NAME,
    BYTES/1024/1024 AS "SPACE(M)"
FROM
    DBA_TEMP_FILES
WHERE
    TABLESPACE_NAME = ‘TEMP‘;

创建临时表空间

create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/temp11.dbf‘ size 10M;

缩小临时表空间大小

alter database datapfile ‘D:ORACLEPRODUCT10.2.0ORADATATELEMTTEMP01.DBF‘ resize 100M;

扩展临时表空间:

  • 增大临时文件大小:
alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf‘ resize 100m;
  • 将临时数据文件设为自动扩展:
alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf‘ autoextend on next 5m maxsize unlimited;
  • 向临时表空间中添加数据文件:
alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf‘ size 100m;

表查询

查询当前登录用户下所有表名称

select table_name from user_tables;

查询某个表的大小,替换为你的TABLE_NAME

SELECT
    SEGMENT_NAME,
    round(SUM(BYTES/1024/1024),2)||‘M‘ memory_space
FROM
    dba_segments
WHERE
    segment_name=‘TABLE_NAME‘
group by SEGMENT_NAME

查询当前登录用户所有表的大小

SELECT
    SEGMENT_NAME,
    ROUND(SUM(BYTES/1024/1024),2)||‘M‘ memory_space
FROM
    dba_segments
WHERE
    segment_name IN (SELECT table_name FROM user_tables)
GROUP BY
    SEGMENT_NAME
ORDER BY memory_space desc;

查询当前用户下的分区表

select table_name from user_tables where partitioned=‘YES‘

查询某个表的分区数

SELECT table_name,partition_name from user_tab_partitions where table_name = ‘TABLE_NAME‘

查询某个分区的数据

SELECT * FROM MODULEEVALUATIONHISTORY_PART PARTITION(SYS_P43)

以上是关于oracle创建数据库和表空间有啥联系?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle创建表空间和表

如何彻底删除oracle创建的用户和表空间?

ORACLE数据库创建用户名和表空间

用cmd命令创建oracle 数据库用户和表空间

ORACLE11g 反复插数据删数据,删索引建索引,对数据文件和表空间有啥影响

oracle怎么创建表空间