怎么删除oracle的数据文件一、使用offline数据文件的方法
非归档模式使用如何删除oracle对象:alter database datafile '...' offline drop;
归档模式使用:alter database datafile '...' offline;
说明:
1)以上命令只是将该数据文件OFFLINE如何删除oracle对象,而不是在数据库中删除数据文件 。该数据文件的信息在控制文件种仍存在 。查询v$datafile如何删除oracle对象,仍显示该文件 。
2)归档模式下offline和offline drop效果是一样的
3)offline后如何删除oracle对象 , 存在此datafile上的对象将不能访问
4)noarchivelog模式下,只要online redo日志没有被重写 , 可以对这个文件recover后进行online操作
实际使用案例:
直接删除数据文件后无法进入系统的解决方案
正常情况下,删除表空间的正确方法为:
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
如果没有通过以上命令删除而直接删除了数据文件,将导致数据库无法打开 。
如果直接删除了数据文件
普通用户登录时,则报错:
ORA-01033: ORACLE initialization or shutdown in progress
sys用户可以正常登录
但进行操作时(SELECT count(1) FROM user_tables) , 则会报错:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
如果执行命令alter database open以打开数据库时,又报如下错:
ORA-01157: 无法标识/锁定数据文件 12 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 12: 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TSTEST001.DBF'
说明数据库没找到这个数据文件
因为数据文件在没有被offline的情况下物理删除了,导致oracle的数据不一致,因此启动失败.
通过以下方法即可解决
解决方法:
sqlplus sys/orcl@orcl as sysdba;
SQL alter database datafile 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TSTEST001.DBF' offline drop;
SQL alter database open;
SQL drop tablespace CTBASEDATA;
二、Oracle 10G R2开始,可以采用:Alter tablespace tablespace_name drop datafile file_name;来删除一个空数据文件,并且相应的数据字典信息也会清除:
sys@ORCLselect file_id,file_name,tablespace_name from dba_data_files
【如何删除oracle对象 删除oracle用户下所有对象】2where tablespace_name='USERS';
FILE_IDFILE_NAMETABLESPACE_NAME
---------------------------------------------------------------------
4/u01/app/oracle/oradata/orcl/users01.dbfUSERS
sys@ORCLalter tablespace users add datafile
2'/u01/app/oracle/oradata/orcl/users02.dbf' size 5M autoextend off;
Tablespace altered.
sys@ORCLselect file_id,file_name,tablespace_name from dba_data_files
2where tablespace_name='USERS';
FILE_IDFILE_NAMETABLESPACE_NAME
----------------------------------------------------------------------
4/u01/app/oracle/oradata/orcl/users01.dbfUSERS
9/u01/app/oracle/oradata/orcl/users02.dbfUSERS
sys@ORCLdrop table test;
Table dropped.
sys@ORCLcreate table test tablespace users
2as
3select * from dba_objects;
Table created.
sys@ORCLselect SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents
2where file_id=9;
SEGMENT_NAMEFILE_IDBLOCKS
--------------------------------------------------
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST98
TEST9128
TEST9128
17 rows selected.
sys@ORCLalter table test move tablespace PERFSTAT; --把表移动到其它表空间
Table altered.
sys@ORCLselect SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents
2where file_id=9;
no rows selected
sys@ORCLalter tablespace users drop datafile
2'/u01/app/oracle/oradata/orcl/users02.dbf';
Tablespace altered.
sys@ORCLselect file_id,file_name,tablespace_name from dba_data_files
2where tablespace_name='USERS';
FILE_IDFILE_NAMETABLESPACE_NAME
------------------------------------------------------------------------
4/u01/app/oracle/oradata/orcl/users01.dbfUSERS
三、oracle 10g可以删除临时表空间的文件
alter database tempfile '/home/oracle/temp01.dbf' drop including datafiles;
oracle删除用户后用户的对象怎么解决Oracle删除用户下所有对象的方法未必人人都会,下面就为您介绍两种常用的Oracle删除用户下所有对象的方法,希望对您学习Oracle删除用户方面能有所帮助 。
方法1:
drop user XXXX cascade;
drop tablespace XXXX INCLUDING CONTENTS;
方法2:
写存储过程实现
DECLARE
TYPE name_list IS TABLE OF VARCHAR2(40);
TYPE type_list IS TABLE OF VARCHAR2(20);
Tab_name name_list:=name_list();
Tab_type type_list:=type_list();
sql_str VARCHAR2(500);
BEGIN
sql_str := 'select uo.object_name,uo.object_type from user_objects uo where uo.object_type not in(''INDEX'',''LOB'') order by uo.object_type desc';
EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;
FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOP
sql_str := 'DROP ' || Tab_type(i) || ' ' || Tab_name(i);
EXECUTE IMMEDIATE sql_str;
END LOOP;
END;
Oracle中删除用户下所有对象的多种方法最省心的方法是级联删除
drop user XXXX cascade; 最后这个级联特别有用
麻烦一点的办法,把删除语句做成存储过程
存储过程实现
DECLARE
TYPE name_list IS TABLE OF VARCHAR2(40);
TYPE type_list IS TABLE OF VARCHAR2(20);
Tab_name name_list:=name_list();
Tab_type type_list:=type_list();
sql_str VARCHAR2(500);
BEGIN
sql_str := 'select uo.object_name,uo.object_type from user_objects uo where uo.object_type not in(''INDEX'',''LOB'') order by uo.object_type desc';
EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;
FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOP
sql_str := 'DROP ' || Tab_type(i) || ' ' || Tab_name(i);
EXECUTE IMMEDIATE sql_str;
END LOOP;
END;
如何用shell脚本批量删除oracle数据库中的这个问题如何删除oracle对象你可能通过查询oracle如何删除oracle对象的系统表如何删除oracle对象,例如all_all_tables , 用这些对象如何删除oracle对象的列表生成一批数据库删除对象的语句,然后将这些语句存到文件,用sqlplus的文件参数执行这一批语句 。
Oracle中exp备份某个用户后 , imp到新的数据库中提示对象已存在,如何删除该用户下所有对象?删除用户是最方便如何删除oracle对象的如何删除oracle对象 , 删除用户后它所拥有的对象全部会被删除
建议如何删除oracle对象你将exp/imp命令行都贴出来给如何删除oracle对象你分析
oracle只有某用户权限,要删除该用户下的所有对象如何操作把要删除如何删除oracle对象的对象前面加上这个用的名字就行了如何删除oracle对象,比如要删除用户下的表table1,drop table 用户名.table1就ok了
关于如何删除oracle对象和删除oracle用户下所有对象的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 电脑主机安装安卓软件,台式电脑安装安卓
- 仙剑7游戏设置反向飞行,仙剑奇侠传7方向控制
- js获取inputfile的文件路径,js怎么获取input的值
- go语言离线文档 go语言在线运行
- jquery阻止冒泡,jquery阻止事件冒泡的方法
- 爬虫是ip被拒绝了,爬虫是ip被拒绝了嘛
- 虾皮电商如何开,虾皮网店怎么开
- vb.net多线程原理 vb timer 多线程
- mydisktest下载,mydisktest安卓中文版