表空间的删除和创建
参考:https://www.cnblogs.com/xuexin/p/6410979.html
一》创建表空间和用户
1.创建临时表空间
create temporary tablespace my_temp(临时表空间名) tempfile '/home/oracle/app/data/my_temp.dbf(自己起个临时表空间名)' size 100m reuse autoextend on next 20m maxsize unlimited;
2.创建表空间
create tablespace newoa(表名) datafile '/home/oracle/app/data/newoa.dbf(表名空间)' size 500M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
3.创建用户
create user NEWOA(用户名) identified by hs123(密码) default tablespace newoa(表名) temporary tablespace MY_TEMP(临时表空间名);
grant all privileges to 用户名;
grant dba to hc_notify;
grant connect,resource to hc_notify;
grant select any table to hc_notify;
grant delete any table to hc_notify;
grant update any table to hc_notify;
grant insert any table to hc_notify;
二》删除表空间和用户
1.--查看临时表空间文件
select name from v$tempfile;
--查看用户和表空间的关系
select USERNAME,TEMPORARY_TABLESPACE from DBA_USERS;
--如果有用户的默认临时表空间是NOTIFYDB_TEMP的话,建议进行更改
alter user xxx temporary tablespace tempdefault;
---设置tempdefault为默认临时表空间
alter database default temporary tablespace tempdefault;
--删除表空间NOTIFYDB_TEMP及其包含数据对象以及数据文件
drop tablespace NOTIFYDB_TEMP including contents and datafiles;
2.删除用户表空间
-查看表空间文件
select name from v$datafile;
--停止表空间的在线使用
alter tablespace 表空间名称 offline;
--删除表空间NOTIFYDB_TEMP及其包含数据对象以及数据文件
drop tablespace NOTIFYDB_TEMP including contents and datafiles;
3.查看用户权限
--查看所有的用户
select * from all_users;
--查看当前用户信息
select * from user_users;
--查看当前用户的角色
select * from user_role_privs;
--查看当前用户的权限
select * from user_sys_privs;
--查看当前用户的表可操作权限
select * from user_tab_privs;
--查看某一个表的约束,注意表名要 大写
select * from user_constraints where table_name='TBL_XXX';
--查看某一个表的所有索引,注意表名要 大写
select index_name,index_type,status,blevel from user_indexes where table_name = 'TBL_XXX';
--查看索引的构成,注意表名要 大写
select table_name,index_name,column_name, column_position FROM user_ind_columns WHERE table_name='TBL_XXX';
--系统数据字典 DBA_TABLESPACES 中记录了关于表空间的详细信息
select * from sys.dba_tablespaces;
--查看用户序列
select * from user_sequences;
--查看数据库序列
select * from dba_sequences;
++++++++++++++++++++++++++++
oracle 删除表空间及数据文件方法
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
以system用户登录,查找需要删除的用户:
--查找用户
select * from dba_users;
--查找工作空间的路径
select * from dba_data_files;
--删除用户
drop user 用户名称 cascade;
--删除表空间
drop tablespace 表空间名称 including contents and datafiles cascade constraint;
例如:删除用户名成为ABC,表空间名称为ABC
--删除用户,及级联关系也删除掉
drop user ABC cascade;
--删除表空间,及对应的表空间文件也删除掉
drop tablespace ABC including contents and datafiles cascade constraint;
删除无任何数据对象的表空间:
首先使用PL/SQL界面化工具,或者使用oracle自带的SQL PLUS工具,连接需要删除的表空间的oracle数据库。
确认当前用户是否有删除表空间的权限,如果没有 drop tablespace,请先用更高级的用户(如sys)给予授权或者直接用更高级的用户。
用drop tablespace xxx ,删除需要删除的表空间。
删除有任何数据对象的表空间
使用drop tablespace xxx including contents and datafiles;来删除表空间。
注意事项:
如果drop tablespace语句中含有datafiles,那datafiles之前必须有contents关键字,不然会提示ora-01911错误
-----删除数据文件的处理方式:
oracle表,表空间,dbf数据文件三者的关系
一个表只能存在于一个表空间。
一个表空间有一个或多个dbf数据文件。
一个dbf数据文件只能属于一个表空间。
表空间是一个逻辑概念。用住的方面来讲,表空间就是小区,数据文件就是楼房,表就是房间。
————————————————
版权声明:本文为CSDN博主「隐0士」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lyd135364/java/article/details/50266493