‘Database’ 分类的存档
参考: 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 注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。
转载自网络 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, –客户资料表create table customers ( customer_id number(8) not null, — 客户标示city_name varchar2(10) not null, — 所在城市customer_type char(2) not null, — 客户类型…. ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在 城市等准确信息,于是你将该部分信息提取至一张临时表中: create table tmp_cust_city ( customer_id number(8) not null, citye_name varchar2(10) not null, customer_type char(2) not null) 1) 最简单的形式 –经确认customers表中所有customer_id小于1000均为’北京’–1000以内的均是公司走向全国之前的本城市的老客户:)update customers set [...]
转自:老骆驼空间站 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, –客户资料表 create table customers ( customer_id number(8) not null, — 客户标示 city_name varchar2(10) not null, — 所在城市 customer_type char(2) not null, — 客户类型 … ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在 城市等准确信息,于是你将该部分信息提取至一张临时表中: create table tmp_cust_city ( customer_id number(8) not null, citye_name varchar2(10) not [...]
转自:你是编程高手吗的空间 第一种 ORA-28000: the account is locked 第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba; 第二步:选择myjob,查看users; 第三步:选择system,右击点击“编辑”; 第四步:修改密码,把“帐户被锁住”的勾去掉; 第五步:点击“应用”再点击“关闭”; 第六步:重新登录就可以通过验证了; 第二种 ALTER USER username ACCOUNT UNLOCK; 第三种 在plsql developer中要是以scott/tiger登录时提示ora-28000 the account is locked。 解决办法: 新装完Oracle10g后,用scott/tiger测试,会出现以下错误提示: oracle10g the account is locked oracle10g the password has expired 原因:默认Oracle10g的scott不能登陆。 解决: conn sys/sys as sysdba; //以DBA的身份登录alter user scott account unlock;// 然后解锁conn scott/tiger //弹出一个修改密码的对话框,修改一下密码就可以了
exp 将数据库内的各对象以二进制方式下载成dmp文件,方便数据迁移。 ————————————————- buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统 consistent:下载期间所涉及的数据保持read only,缺省为n direct:使用直通方式 ,缺省为n feeback:显示处理记录条数,缺省为0,即不显示 file:输出文件,缺省为expdat.dmp filesize:输出文件大小,缺省为操作系统最大值 indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据 log:log文件,缺省为无,在标准输出显示 owner:指明下载的用户名 query:选择记录的一个子集 rows:是否下载表记录 tables:输出的表名列表 ———————————————————————- 导出整个实例 exp dbuser/oracle@oradb file=oradb.dmp log=oradb.log full=y consistent=y direct=y user应具有dba权限 导出某个用户所有对象 exp dbuser/oracle@oradb file=dbuser.dmp log=dbuser.log owner=dbuser buffer=4096000 feedback=10000 导出一张或几张表 exp dbuser/oracle@oradb file=dbuser.dmp log=dbuser.log tables=table1,table2 buffer=4096000 feedback=10000 导出某张表的部分数据 exp dbuser/oracle@oradb file=dbuser.dmp log=dbuser.log tables=table1 buffer=4096000 feedback=10000 query=\”where col1=\’…\’ and col2 [...]
1、查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id; 2、找出数据库的serial#,以备杀死: select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 3、杀死该session: alter system kill session ‘sid,serial#’

