ORACLE 19C表空间文件管理

20天前 26.4k 0

一、表空间概念

表空间是一个逻辑概念,数据库对象(表,视图,索引等)必须存储在某个表空间中,表空间对应着若干数据文件。

一个数据库可以有多个表空间,一个表空间只能属于一个数据库

一个表空间包含多个数据文件,一个数据文件只能属于一个表空间

多个用户可以共用一个表空间

表空间类型:

1、永久表空间:

2、临时表空间

3、undo表空间

oracle默认已存在多个表空间:

SQL> select * from v$tablespace; 查看有哪些表空间

SYSTEM

系统表空间,存放ORACLE数据库的数据字典,损坏会导致数据无法打开

SYSAUX

SYSTEM的辅助表空间,存储除数据字典以外的数据对象

UNDOTBS1

存储撤销数据的表空间,保存数据在修改之前的值,用于事务回滚,实例恢复

TEMP

临时表空间,存放SQL的排序、分组等操作信息

USERS

存储用户数据

查看表空间所对应的数据文件:

SQL> select tablespace_name,file_name from dba_data_files;

二、表空间管理

2.1 创建表空间

语法:

CREATE [temporary | undo ] TABLESPACE 表空间名

DATAFILE '数据文件路径' SIZE 大小

[AUTOEXTEND ON] [NEXT 大小]

[MAXSIZE 大小];

[temporary | undo ] : 表空间类型,temporary为临时表空间,undo为undo表空间,不指定默认为永久表空间

SIZE: 表空间的初始大小 (表空间存满后无法写入)

AUTOEXTEND: 表空间大小是否自动扩展,ON开启扩展,OFF关闭扩展,默认为OFF

NEXT: 每次扩展的大小

SQL> CREATE TABLESPACE test_tbs01 DATAFILE '/data/db_data/ORCL19/datafile/test_tbs01.dbf' SIZE 100M AUTOEXTEND ON

2.2 使用表空间

创建用户时为用户分配表空间:

SQL> CREATE USER testuser01 identified by 123456 DEFAULT TABLESPACE test_tbs01;

CDB中,用户的默认表空间是USERS

PDB 中,用户的默认表空间是SYSTEM

修改用户默认表空间

alter user UserName default tablespace TablespaceNme

SQL> select username,default_tablespace from dba_users where username='USER1';

USERNAME DEFAULT_TABLESPACE

-------------------- ------------------------------

USER1 SYSTEM

SQL> alter user user1 default tablespace PDB02_TBS01;

User altered.

SQL> select username,default_tablespace from dba_users where username='USER1';

USERNAME DEFAULT_TABLESPACE

-------------------- ------------------------------

USER1 PDB02_TBS01

创建表时指定表空间:

SQL> create table Test_tab01

(id char(4) not null, name varchar2(30) not null) tablespace test_tbs02;

********

在CDB中,为公共用户分配表空间时,所分配的表空间必须在PDB和CDB中同时存在,否则会报错。因为在CDB中创建的用户是公共用户,该用户会传递到PDB中,给公共用户分配表空间时,会在所有PDB中都进行此操作,而PDB中并无相应表空间,所以会报错。

SQL> show con_name;

CON_NAME

------------------------------

CDB$ROOT

SQL> create user c##user1 identified by 123456;

User created.

SQL> create tablespace tbs_test1 datafile '/data/u01/app/oracle/oradata/ORCL/tbs_test1_1.dbf' size 10M autoextend on;

Tablespace created.

SQL> alter user c##user1 default tablespace tbs_test1;

alter user c##user1 default tablespace tbs_test1

*

ERROR at line 1:

ORA-65048: error encountered when processing the current DDL statement in pluggable database ORCLPDB

ORA-00959: tablespace 'TBS_TEST1' does not exist

2.3 修改表空间

修改表空间状态

SQL> alter tablespace test_tbs02; offline; //将表空间离线

SQL> alter tablespace test_tbs02; online; //将表空间设置为在线

SQL> alter tablespace test_tbs02 read only; //将表空间设置为只读

SQL> alter tablespace test_tbs02 read write; //将表空间设置为读写

向表空间中添加数据文件

alter tablesapce 表空间名 add datafile '数据文件名' size 大小

[reuse]

[autoextend [on/off] next 大小]

[maxsize [unlimited|大小]];

reuse: 如果操作系统已存在数据文件会覆盖 ,不加reuse则会报错提示,默认不加

maxsize [unlimited|大小]: 如果开启数据文件自动扩展,则最大可以扩展到多少,unlimited表示不限制。

SQL> alter tablespace test_tbs01 add datafile '/data/db_data/ORCL19/datafile/test_tbs01_1.dbf'

size 100M autoextend off;

修改数据文件(大小,自动扩展等)

alter database datafile '数据文件名'

[ [resize 大小| [autoextend [on/off] next 大小] [maxsize [unlimited|大小]] ];

resize: 修改数据文件大小,必须大于已使用的空间

SQL> alter database datafile '/data/db_data/ORCL19/datafile/test_tbs01.dbf' resize 200M ;

2.4 删除表空间

删除表空间、表空间内的数据对象和数据文件

drop tablespace 表空间名 including contents and datafiles;

SQL> drop tablespace test_tbs02 including contents and datafiles;

三、数据文件管理

数据文件迁移:

1)把表空间offline。

SQL> alter tablespace DATA offline;

2)在操作系统上迁移数据文件

# mv data01.dbf data03.dbf

3)执行alter tablespace或alter database修改数据库文件名。

alter tablespace DATA rename datafile '/oracle/base/oradata/snorcl11g/data01.dbf' to '/oracle/base/oradata/snorcl11g/data02.dbf';

4)把表空间online。

alter tablespace DATA online;

四、表空间及数据文件查询

1、查看当前用户的默认表空间

SQL> select username,default_tablespace from user_users;

2、查看数据文件相关信息

SQL> select file_name,file_id,tablespace_name,bytes,status,autoextensible,

maxbytes,user_bytes,online_status

from DBA_DATA_FILES order by tablespace_name,file_name;

相关文章

【TiDB 社区智慧合集】TiDB 在核心场景的实战应用
如何理解数据库增量备份
Navicat for MySQL 17 | 实现更明智的业务决策
tidb8.1的磁盘选择,关于网络ssd,和本地ssd的选择对性能影响很大,差距60倍。
ORA-00600 internal error code, arguments [25026]
ORA-01555 caused by SQL statement below (SQL ID

发布评论