创建表空间:
sql
create tablespace OGG_SOURCE datafile '/u01/app/oracle/oradata/orcl/oggsource1.dbf' size 20g autoextend on next 5m;
修改表空间增加数据文件(看情况使用)
sql
alter tablespace OGG_SOURCE add datafile '/u01/app/oracle/oradata/orcl/oggsource2.dbf' size 20g autoextend on next 5m;
删除表空间
sql
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
drop tablespace HMABPREPORT including contents and datafiles cascade constraint;
查看当前存在的表空间
sql
select * from v$tablespace;
查看表空间使用情况
sql
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; -- 单位是M
查看用户默认表空间
sql
select username,default_tablespace from dba_users;
查询数据库中表空间对应的数据文件路径
sql
select file_name,tablespace_name from dba_data_files;
修改用户表空间
sql
alter user user1 default tablespace test_tbsp;
查看表空间是否自动扩展
sql
select file_name,autoextensible,increment_by from dba_data_files where tablespace_name='TEST_TBSP';
查看临时表空间是否自动扩展
sql
select file_name,autoextensible,increment_by from dba_temp_files;
查看表空间块大小
sql
show parameter db_block;
表空间开启自动扩展
sql
alter database datafile '/home/oracle/oradata/test_tbsp.dbf' autoextend on;
表空间关闭自动扩展
sql
alter database datafile '/home/oracle/oradata/test_tbsp.dbf' autoextend off;
查看当前表空间
sql
select username,default_tablespace from user_users;
查看表空间下所有表
sql
select TABLE_NAME,TABLESPACE_NAME from all_tables where tablespace_name='A_DATA_BW_CZGL';
删除表
sql
drop table tablename;
切换undotbs
sql
-- 0. 查看正在使用的undo
SQL> show parameter undo_tablespace;
-- 1. 查询数据库中表空间对应的数据文件路径
SQL> select file_name,tablespace_name from dba_data_files;
-- 2. 创建新的UNDO表空间
SQL> CREATE UNDO TABLESPACE UNDOTBS3 DATAFILE '/u01/oradata/rac/undotbs3.dbf' SIZE 30G AUTOEXTEND ON;
-- 3. 切换到新的UNDO表空间
SQL> ALTER SYSTEM SET undo_tablespace = 'UNDOTBS3';
-- 4. 等待切换完成,可以通过查询V$UNDOSTAT来检查进度。
SQL> select dr.tablespace_name, dr.segment_name, vr.status from dba_rollback_segs dr, v$rollstat vr where dr.segment_id=vr.usn;
-- 5. 删除旧的UNDO表空间(在确认新表空间正常运行后执行)
SQL> DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
查询每个用户所占的表空间和每个表所占空间大小
sql
select owner,tablespace_name ,sum(bytes)/1024/1024 from dba_segments group by owner,tablespace_name;
扩展表空间:
sql
sqlplus / as sysdba --登录sys用户
connect sys/password as sysdba --切换到sys(dba)用户
connect user/password --切换到普通用户
--查看表空间的名字及文件所在位置
sql
select tablespace_name,file_id,file_name,round(bytes / (1024 * 1024), 0) total_space from sys.dba_data_files order by FILE_NAME;
--查询表空间信息
sql
select username,default_tablespace,t.* from dba_users t
--查询某个用户下的全部数据表的表名和大小
sql
select a.segment_name,a.segment_type,a.bytes,a.bytes / 1024 / 1024 byte_m,b.created
from dba_segments a
inner join all_objects b on b.object_type = 'TABLE' and a.owner = b.owner and a.segment_name = b.object_name
where a.owner = 'USER' and a.segment_type = 'TABLE' /* and a.bytes>50000000*/
order by a.bytes desc;
a.owner后面跟想查询的用户名,查询没数据,可以试下a.owner = upper('USER')
-- 查询数据库中所有的表空间以及表空间所占空间的大小:
sql
select tablespace_name, sum(bytes)/1024/1024/1024 from dba_data_files group by tablespace_name;
-- 查看表空间物理文件的名称及大小
sql
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
扩展表空间:
sql
select name from v$datafile;
1,增加数据文件
alter tablespace POTEVIO add datafile '/u01/app/oracle/oradata/orcl/POTEVIO8.dbf' size 31g autoextend on next 100m;
2,或者增大空间(默认的一个数据文件最大扩展到32G,达到32G后只能增加数据文件)
alter database datafile '/u01/app/oracle/oradata/orcl/POTEVIO.dbf' resize 100g;
RAC 只需要指定 asm磁盘的名称即可,单节点实例的oracle 才需要指定到具体的路径
alter tablespace system add datafile '+YYDB_DATA' size 30g autoextend on next 5m;
创建表空间时,创建大文件表空间(默认数据文件最大为32T,但只能拥有一个数据文件)
create bigfile tablespace POTEVIO datafile '/u01/app/oracle/oradata/orcl/POTEVIO.dbf' size 2g autoextend on next 100m;