1.彻底删除某个表空间下面的所有表
方法1:
SELECT 'DROP TABLE '||TABLE_NAME||';'||'purge' FROM user_tables WHERE TABLESPACE_NAME='TESTTBS';
得到的drop
select original_name,dropscn from recyclebin;--查看回收站里面的表
purge recyclebin;--清空回收站
flashback table tablename to before drop;--将表状态变成drop前
drop table tablename purge;--侧地删除某个表
select*from user_tables where tablespace_name='ETRTBS'--查看etrtbs表空间下的所有表
方法2:
drop tablespace tablespacename including contents and datafiles cascade constraints;--删除表空间 然后手动删除数据文件
create tablespace tablespacename datafile ' E:\oracle\product\10.2.0\oradata\ibn\ABSTBS.dbf' size 4096m autoextend on next 1024m;--创建表空间,指定数据文件
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;--查看表空间的数据文件大小
select tablespace_name,sum(bytes)/1024/1024 from dba_free_spacegroup by tablespace_name;--查看表空间空闲的数据文件大小
2.简单的ORACLE备份
远程逻辑备份数据库
exp userid='sys/oracle141242@ibn as sysdba' file=d:\fbackup.dmp log=dible full=y
--将数据库完全导出,在导入的时候可以通过设置formuser来恢复需要的数据(语句结尾不能加符号)
exp abs/abs@abshrp file=e:\backup\abs.dmp owner=abs
--将数据库中abs用户下的所有对象导出
Imp abs/abs@ibn file= e:\backup\backup.dmp fromuser=abs touser=abs
--将数据从datafile某个用户中导入到本地数据库中某个用户下
Imp etr/abs@ibn file= E:\backup\backup.dmp tables=(表名1,表名2,表名3...)
--将备份文件中某些指定的表导入到本地库对应的用户下面
3.创建用户
create user abs --创建用户名
identified by "abs"--密码
default tablespace ABSTBS --默认表空间
temporary tablespace TEMP --临时表空间
profile DEFAULT;
grant connect to abs;-- 授予创建的用户权限
grant dba to abs;--授予dba权限
grant resource to abs; --授予用户创建各种资源的权限,建表,存储过程等
grant unlimited tablespace to abs;--可以在其他表空间随意建表
oracle用户等价于模式,所以删除用户后,所有的对象,包括表、视图、存储过程等等等会全部被删除
4.某个用户查看别的用户下面表没有权限问题
执行存储过程时,本用户查看别的用户下面的表一般会提示表或视图不存在.
得用如下方法授予权限
grant select, insert, update, delete on ETR_BRANCH to ABS;--授权ABS用户有增删改查ETR_BRANCH表的权限
grant select on ETR_BRANCH to PUBLIC;--授权所有用户有查看ETR_BRANCH表的权限
GRANT delete ANY TABLE TO 存储过程所在用户 WITH ADMIN OPTION;
GRANT insert ANY TABLE TO 存储过程所在用户 WITH ADMIN OPTION;
GRANT select ANY TABLE TO 存储过程所在用户 WITH ADMIN OPTION;