网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.使用Oracle9i JDeveloper构建应用.
.在存储过程中连接远程数据库并进.
.ORACLE问题,每天10问(九).
.Oracle数据库删除表中重复记录的.
.WIN平台下仅开一个端口让Oracle穿.
.ORACLE数据库不用索引来查找数据.
.案例:redo log日志组处于高激活.
.实例讲解Oracle里抽取随机数的多.
.MySQL数据库的结构和数据导入导出.
.Oracle9i中监视索引的使用.
.我的学习总结: Oracle软件结构.
.SQL Server与Oracle、DB2的性能比.
.Oracle数据库技术(10).
.关于oracle配置多个数据库的问题.
.用GET_DDL函数来拷贝DLL句法.
.防范黑客攻击Oracle系统的八大常.
.Oracle诊断案例-SGA与Swap之一.
.ORACLE 回滚段表空间数据文件丢失.
.基于规则的优化机制对表达式的处.
.初学者必读:Oracle监听口令及监.

ORA-00701 warmstarting对象的另类解决方法

发表日期:2008-2-9


    有朋友在ITPUB问到一个问题,如何resize一个SYSTEM表空间。     从常规来说,假如我们希望resize一个文件,这个文件能够resize的部分必然是没有数据,未被使用的,也就是说,我们需要找到一个文件最高的Extent号,这个Extent之外的空间是可以被resize的,以下一个查询可以帮我们找到一个文件最末端的对象:
col segment_name for a30
col owner for a10
SELECT *
  FROM (SELECT   owner, segment_name,segment_type,block_id, blocks
            FROM dba_extents
           WHERE tablespace_name = 'SYSTEM' and file_id='&fileid'
        ORDER BY block_id DESC)
WHERE ROWNUM < 11;
看一下我的一个数据库:
SQL> col segment_name for a30
SQL> col owner for a10
SQL> SELECT *
  2    FROM (SELECT   owner, segment_name,segment_type,block_id, blocks
  3              FROM dba_extents
  4             WHERE tablespace_name = 'SYSTEM' and file_id='&fileid'
  5          ORDER BY block_id DESC)
  6  WHERE ROWNUM < 11;
Enter value for fileid: 1
old   4:            WHERE tablespace_name = 'SYSTEM' and file_id='&fileid'
new   4:            WHERE tablespace_name = 'SYSTEM' and file_id='1'
OWNER      SEGMENT_NAME                   SEGMENT_TYPE         BLOCK_ID     BLOCKS
---------- ------------------------------ ------------------ ---------- ----------
SYS        EYGLE_IP                       TABLE                   25609        128
SYS        EYGLE_IP                       TABLE                   25481        128
SYS        EYGLE_IP                       TABLE                   25353        128
SYS        I_H_OBJ#_COL#                  INDEX                   25305          8
SYS        TEST                           TABLE                   25297          8
SYS        I_TEST                         INDEX                   25289          8
SYS        TEST                           TABLE                   25281          8
SYS        T                              TABLE                   25273          8
SYS        EYGLE_IP                       TABLE                   25265          8
SYS        EYGLE_IP                       TABLE                   25257          8

10 rows selected.
我们注重到高水位上有些索引是可以通过rebuild来改变其位置的,但是在正常模式下,Oracle不答应rebuild这些索引:
SQL> alter index I_H_OBJ#_COL# rebuild;
alter index I_H_OBJ#_COL# rebuild
*
ERROR at line 1:
ORA-00701: object necessary for warmstarting database cannot be altered
有两种方式可以使得这些对象答应被重建:
1.通过migrate模式
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup migrate;
ORACLE instance started. Total System Global Area 139531744 bytes
Fixed Size 452064 bytes
Variable Size 121634816 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> alter index I_H_OBJ#_COL# rebuild; Index altered. SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area 139531744 bytes
Fixed Size 452064 bytes
Variable Size 121634816 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
2.通过一个内部事件
SQL> alter system set event='38003 trace name context forever, level 10' scope=spfile; System altered. SQL> startup force;
ORACLE instance started. Total System Global Area 139531744 bytes
Fixed Size 452064 bytes
Variable Size 121634816 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> alter index i_h_obj#_col# rebuild; Index altered.
38003事件的作用是:CBO Disable column stats for the dictionary objects in recursive SQL
也就是说可以将部分对象从启动的bootstrap$需要里剥离出来,从而可以被在线rebuild. 这个事件能够影响的对象很有限,这类操作也是极其危险的,所以不在这里具体列出。 -The End- http://www.eygle.com/archives/2007/02/ora_00701_warmstarting.Html
上一篇:oracle中设置自增主键 人气:1662
下一篇:Oracle10g 控制文件的改变 人气:600
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐