Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

316

积分

0

好友

0

主题
1#
发表于 2012-2-14 16:39:18 | 查看: 6236| 回复: 5
查询一个文件是否可以DROP,
dbms_space.isdatafiledroppable_name 返回 0,但是DBA_EXTENTS 在该文件号上无返回,请问是为什么呢?
2#
发表于 2012-2-14 18:24:47
SSH 同学

请具体一点, 你是如何操作的 如何得到结论的。

回复 只看该作者 道具 举报

3#
发表于 2012-2-15 01:11:14
$sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 15 00:55:02 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select max(t.file_id) from dba_extents t;

MAX(T.FILE_ID)
--------------
            77
当前存在区分配的最大文件号是77

SQL> select * from v$dbfile t where t.file# = 78;

         FILE# NAME
---------- --------------------
        78 /dev/rlvindex_8g_001

SQL> var v_filestate number;
SQL> exec dbms_space.isdatafiledroppable_name('/dev/rlvindex_8g_001',:v_filestate)

PL/SQL procedure successfully completed.

SQL> exec dbms_output.put_line(:v_filestate)
0
//  78 号文件既无区分配,却被识别为不可删除。
PL/SQL procedure successfully completed.

SQL> select * from v$dbfile t where t.file# = 79;

     FILE# NAME
---------- --------------------
        79 /dev/rlvindex_8g_002
SQL> exec dbms_space.isdatafiledroppable_name('/dev/rlvindex_8g_002',:v_filestate)

PL/SQL procedure successfully completed.

SQL> exec dbms_output.put_line(:v_filestate)
1
//  79 号文件是一个可删除的范例。
PL/SQL procedure successfully completed.

我想知道78 为什么 是不可删除的?

[ 本帖最后由 武汉-SSH 于 2012-2-15 01:17 编辑 ]

回复 只看该作者 道具 举报

4#
发表于 2012-2-15 15:02:58
一定用上了block了。
下面我做一个试验:
SQL> select max(file_id) from dba_extents;

MAX(FILE_ID)
------------
          15

SQL> select * from v$datafile t where t.file#=16;

no rows selected

16号文件是没有的。我们来增加一个:
SQL> alter tablespace users add datafile '/oradata/nmbydb2/users02.dbf' size 10m;

Tablespace altered.

SQL> select file#,name from v$datafile where file#=16;

     FILE#
----------
NAME
--------------------------------------------------------------------------------
        16
/oradata/nmbydb2/users02.dbf

SQL> var v_filestate number;
SQL> exec dbms_space.isdatafiledroppable_name('/oradata/nmbydb2/users02.dbf',:v_filestate)

PL/SQL procedure successfully completed.

SQL> exec dbms_output.put_line(:v_filestate)
1

PL/SQL procedure successfully completed.

回复 只看该作者 道具 举报

5#
发表于 2012-2-15 15:51:16
select ts#,min(file#) from v$datafile group by ts#;

78不是表空间的第一个文件吧?

回复 只看该作者 道具 举报

6#
发表于 2012-2-15 16:12:41
楼上正解!谢谢!

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 02:09 , Processed in 0.048813 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569