2011年8月 的存档
参考: oracle10g之shrink Oracle10g数据文件的收缩与数据对象跨表空间的迁移 oracle数据库在做大量的delete操作后数据表文件数据被删除,但是表空间并没又得到释放,需要手动来释放表空间,整理碎片。 1.查看表的使用状况 select sum(bytes)/1024/1024 M,segment_name,segment_type from user_segments where group by segment_name,segment_type having sum(bytes)/1024/1024 >100; //大于100M的空间 2.开启行迁移功能 alter table table_name enable row movement; 3.整理表空间内的碎片 alter table wip_wo shrink space compact; 4.收缩表空间 alter table wip_wo shrink space; 5.查看收缩后的表空间 select sum(bytes)/1024/1024 M from user_segments where segment_name=’tabale_name’; 6.收缩index的空间 alter index index_name shrink space; 注:如果table很大,在收缩表空间时会产生大量的archivelog
转载自:oracle10g之shrink shrink 表的收缩语句让你手动收缩表、索引组织表、索引、分区、子分区、物化视图、物化视图日志。收缩语句只是对段的自动管理的对象有用。而段的自动管理的对象一定是在本地管理的表空间中。默认情况下,oracle会压缩段,调整hwm,立即释放可以复原的空间。 收缩段的空间需要启动对象的row movement属性。另外如果你的系统中有基于rowid的触发器,只执行该语句前应该禁用该触发器。COMPACT 如果指定compat,为了接下来的空间释放,oracel只是使用碎片整理程序整理段的空间,使表的行更加的紧凑。数据库并不会理解减低hwm,也不会立即释放空间。我们必须之后执行alter table xx shrink space语句去完成这个操作。该语句如果想使用多步完成shrink操作,而不想一步操作时间过长时非常有用。 对于索引和索引组织表而言,指定alter index|table .. shrink space compat语句就等同于指定alter index|table coalesce。shrink语句可以指定cascade,可以使使用coalesce的段更加紧凑,这样可以提高性能。但是如果我们不想释放没有使用的空间,我们可以使用coalesce语句。
一、8i EXP常用选项 1、FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如: exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y 2、BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如: exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT 3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。 需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:一、这样做的速度会慢很多,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。 如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文档号:30428.1),该文中有详细解释。
Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一个或一组指定用户所属的全部表、索引和其他对象 imp system/manager file=seapark log=seapark fromuser=seapark imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold) 4. 将一个用户所属的数据导入另一个用户 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1) 5. 导入一个表 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b) 6. 从多个文件导入 imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G [...]
exp/imp两个命令可以说是oracle中最常用的命令了。 ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。 数据库逻辑备份方法 ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。 表模式 备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。 若备份到本地文件,使用如下命令: exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp_icdmain_csd_yyyymmdd.dmp log=exp_icdmain_csd_yyyymmdd.log tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo 若直接备份到磁带设备,使用如下命令: exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=/dev/rmt0 log=exp_icdmain_csd_yyyymmdd.log tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo 注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。
