您的位置:首页 > 数据库 > Oracle

oracle import & export 操作相关脚本

2007-12-25 10:03 609 查看
[align=left]oracle import & export 操作相关脚本[/align][align=left] [/align][align=left]1.export 前的准备工作:[/align][align=left]注:在产品库执行下列语句[/align][align=left]1)获得当前执行的SQL语句:[/align][align=left]select osuser, username, sid, serial#, sql_text[/align][align=left] from v$session a, v$sqltext b[/align][align=left] where a.sql_address = b.address [/align][align=left] order by address, piece[/align][align=left] [/align]2)获得某些用户的数据库对象存放在哪些表空间里:[align=left]select tablespace_name, round(sum(bytes)/1024/1024) sum_mbytes[/align][align=left]from dba_data_files[/align][align=left]where tablespace_name in [/align][align=left](select distinct tablespace_name[/align][align=left]from dba_segments[/align][align=left]where owner in ('SSO', 'SSOWEB')[/align][align=left])[/align][align=left]group by tablespace_name[/align][align=left]order by tablespace_name[/align] 3)获得表空间未使用的空间:[align=left]select tablespace_name, round(sum(bytes)/(1024*1024)) as free_space[/align][align=left]from dba_free_space[/align][align=left]group by tablespace_name[/align]order by tablespace_name 4)获得表空间空间细节:[align=left]select[/align][align=left]a.tablespace_name,[/align][align=left]round(a.bytes/1024/1024) total,[/align][align=left]round(b.bytes/1024/1024) used,[/align][align=left]round(c.bytes/1024/1024) free,[/align][align=left]round((b.bytes*100)/a.bytes) "% used",[/align][align=left]round((c.bytes*100)/a.bytes) "% free"[/align][align=left]from sys.sm$ts_avail a,sys.sm$ts_used b,sys.sm$ts_free c[/align][align=left]where a.tablespace_name=b.tablespace_name and a.tablespace_name=c.tablespace_name[/align][align=left]order by tablespace_name[/align] 5)生成创建某些用户的对象所在表空间的语句[align=left]set feedback off[/align][align=left]set heading off[/align][align=left]select 'create tablespace ' || tablespace_name || ' datafile ' || '''' || file_name ||'''' || ' size ' || round(bytes/1024/1024) || 'm'[/align][align=left]from dba_data_files[/align][align=left]where tablespace_name in[/align][align=left](select distinct tablespace_name[/align][align=left]from dba_segments[/align][align=left]where owner in ('SSO', 'SSOWEB')[/align][align=left])[/align][align=left]set feedback on[/align][align=left]set heading on
6)在产品库执行 3.验证 IMPORT 操作的结果是否正确的步骤,并记录下每条命令的结果,以便跟导入后在测试库执行的相同命令的结果进行对比[/align] [align=left] [/align][align=left]2.导出导入操作:[/align][align=left]注:在产品库执行1)和2),在测试库执行3)[/align][align=left]1)建立pump目录并授权[/align][align=left]select * from dba_directories;[/align][align=left][/align][align=left]create directory pump_dir as '/opt/oracle/backup/pump';[/align][align=left][/align][align=left]grant read, write on directory pump_dir to <username>;[/align][align=left][/align][align=left]select * from user_role_privs;[/align][align=left]2)导出 [/align][align=left]expdp system/password[/align][align=left] dumpfile=pp_$(date +%y%m%d).dmp [/align][align=left] DIRECTORY=pump_dir [/align][align=left] parallel=2 [/align][align=left] SCHEMAS=bbs,sso[/align][align=left] job_name=job_sso_exp$(date +%y%m%d) [/align][align=left]3)导入 [/align][align=left]impdp system/password [/align][align=left] dumpfile=pp_$(date +%y%m%d).dmp [/align][align=left] DIRECTORY=pump_dir [/align][align=left] TABLE_EXISTS_ACTION=REPLACE [/align][align=left] parallel=2 [/align][align=left] SCHEMAS=bbs,sso[/align][align=left] job_name=job_sso_imp$(date +%y%m%d) [/align][align=left] [/align][align=left] [/align][align=left] [/align][align=left]3.验证 IMPORT 操作的结果是否正确:[/align][align=left]注:a.在测试库执行下列语句[/align][align=left] b.导入后,在测试库执行下列语句,并跟在 1.export 前的准备工作 [/align][align=left] 中在产品库执行的相同语句的结果进行对比。[/align][align=left]1)验证两个库的数据库对象数是否相同[/align][align=left]select owner, object_type, count(*)[/align][align=left]from dba_objects[/align][align=left]where owner in ('MAIN', 'SSO', 'SSOWEB', 'USD')[/align][align=left]group by owner, object_type[/align][align=left]order by owner, object_type[/align][align=left] [/align][align=left]2)验证数据表的行数是否相同 [/align][align=left]select owner, sum(num_rows) sum_rows[/align][align=left]from dba_tables[/align][align=left]where owner in ('SSO', 'SSOWEB', 'MAIN', 'USD')[/align][align=left]group by owner[/align][align=left]order by owner[/align][align=left] [/align][align=left]3)验证大表的行数是否相同[/align][align=left]select owner, num_rows[/align][align=left]from dba_tables[/align][align=left]where owner in ('SSO', 'SSOWEB', 'MAIN', 'USD')[/align][align=left]and num_rows > 1000000[/align][align=left]order by owner, num_rows desc[/align][align=left] [/align][align=left]4)验证索引的行数是否相同 [/align][align=left]select owner, sum(num_rows) sum_rows[/align][align=left]from dba_indexes[/align][align=left]where owner in ('SSO', 'SSOWEB', 'MAIN', 'USD')[/align][align=left]group by owner[/align][align=left]order by owner[/align][align=left] [/align][align=left]5)验证大索引的行数是否相同 [/align][align=left]select owner, num_rows[/align][align=left]from dba_inexes[/align][align=left]where owner in ('SSO', 'SSOWEB', 'MAIN', 'USD') and num_rows > 1000000[/align][align=left]order by owner, num_rows[/align][align=left] [/align][align=left] [/align][align=left]4.处理无效的数据库对象:[/align][align=left]注:a.在测试库执行下列语句 [/align]1)查找某些用户的无效对象[align=left]select object_type, object_name, status[/align][align=left]from dba_objects[/align][align=left]where owner in ('SSO', 'MAIN') and status = 'INVALID'[/align][align=left]order by owner[/align][align=left] [/align][align=left]2)查找某些用户无效的索引:[/align][align=left]select owner, index_name, table_name, status[/align][align=left]from dba_indexes[/align][align=left]where status <> 'VALID' and owner in ('MAIN', 'SSO', 'USD') [/align][align=left] [/align][align=left] [/align][align=left]3)查找某些用户无效的索引分区:[/align][align=left]select index_owner, index_name, partition_name, tablespace_name, status[/align][align=left]from dba_ind_partitions[/align][align=left]where index_name in ([/align][align=left]select index_name[/align][align=left]from dba_indexes[/align][align=left]where status = 'N/A'[/align][align=left]and owner in ('MAIN', 'SSO', 'SSOWEB'))[/align][align=left] [/align][align=left] [/align][align=left]4)生成重建某些用户无效索引的语句:[/align][align=left]select 'alter index ' || owner || '.' || index_name || ' rebuild;'[/align][align=left]from dba_indexes[/align][align=left]where status = 'INVALID' and owner in ('SCOTT')[/align][align=left] [/align][align=left]注:本操作因不关心存储过程,所以没有相应的重编译存储过程的语句。[/align][align=left] [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息