用友股份-LE服务支持部技术方案--《NCV5技术顾问手册之Oracle篇》建立日期:2013-01-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00152/128文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-01-01V1.03目录ORACLE.........................................................................................................................4Oracle的基础知识................................................................................................4数据库的导入与导出(EXP&IMP)...................................................................12数据泵的方式进行数据的导入与导出(EXPDP&IMPDP)................................14Oracle11gdeferred_segment_creation参数................................................26NC用户权限的分配............................................................................................28NC数据库统计信息的收集................................................................................28ORACLE的参数配置说明....................................................................................33创建和配置oracle数据库的几点补充说明:...................................................41RAC10gWindows2000安装与使用手册........................................................43HP-UX11.31下Oracle10.2.0.1RAC4node安装手册........................................60硬件....................................................................................................................60oracleRAC的架构图...................................................................................................60SG/SGe、oracleclusterWare、slvm、cvm/CFS、raw、asm之间的相互关系图.......61RAC安装过程.............................................................................................................63遇到的问题1....................................................................................................104遇到的问题2....................................................................................................106遇到的问题3....................................................................................................107AIX-HA-ORA-WAS双机互备..............................................................................1134ORACLEOracle的基础知识1.如何查看数据库版本?select*fromv$version;2.如何查看数据库参数值和修改参数?在sqlpus下执行showparameter参数名的部分字母或者全部,例如:showparameteroptimizer,将会把参数名中包含optimizer的所有参数和对应的值列出.通过altersystemset参数名=参数值[scope=both|spfile|memory];来修改参数值,默认是both,及修改spfile也修改moemory,也可以单独指定.3.如何查看processes和sessions参数设置是否合适?SELECT*FROMv$resource_limitWHEREresource_nameIN('processes','sessions');查看使用的最大值是否达到了系统设定的最大值.4.日常检查需要关注的几个关键参数(针对nc)sga_max_sizesga_target(10g)db_cache_sizeshared_pool_sizejava_pool_sizelarge_pool_sizeoptimizer_dynamic_sampling=4optimizer_index_cost_adj=40workarea_size_policy=auto5pga_aggregate_targetcursor_sharing=exactopen_cursorsprocessessessionssession_cached_cursors5.查看目前系统中非系统的activesession的相关信息,并按照持续时间的长短排序SELECTV.LAST_CALL_ET,V.PROGRAM,V.USERNAME,'kill-9'||P.SPID,'altersystemkillsession'''||V.SID||','||V.SERIAL#||'''immediate;',V.CLIENT_INFO,S.SQL_TEXT,V.SQL_HASH_VALUE,V.SQL_ADDRESSFROMV$SESSIONV,V$PROCESSP,V$SQLSWHEREV.LAST_CALL_ET>0ANDV.STATUS='ACTIVE'ANDV.USERNAME!='SYS'6ANDP.ADDR=V.PADDRANDS.ADDRESS=V.SQL_ADDRESSORDERBYLAST_CALL_ETDESC;查看用户进程的等待事件和相关的sql语句SELECT/*+rule*/S.SID,S.SERIAL#,S.USERNAME,W.EVENT,W.SECONDS_IN_WAIT,W.WAIT_TIME,S.LAST_CALL_ET,S.STATUS,S.CLIENT_INFO,Q.SQL_TEXT,Q.HASH_VALUE,Q.ADDRESS,'altersystemkillsession'''||S.SID||','||S.SERIAL#||'''immediate;'FROMV$SESSION_WAITW,V$SESSIONS,V$SQLQWHEREW.SID=S.SIDANDQ.HASH_VALUE=S.SQL_HASH_VALUE7ANDW.EVENTNOTLIKE'%messagefromclient%'ANDS.SID>=6ORDERBYLAST_CALL_ETDESC;通过sql_hash_value4111834861查看完整的sql语句SELECTd.sql_textFROMv$sqltextdWHEREd.HASH_VALUE=4111834861orderbyd.address,d.piece;通过unix系统的pid1740862查看完整sqlSELECTD.SQL_TEXTFROMV$SESSIONA,V$PROCESSB,V$SQLTEXTDWHEREA.PADDR=B.ADDRANDA.SQL_ADDRESS=D.ADDRESSANDSPID=1740862ORDERBYD.ADDRESS,D.PIECE;查看系统是否存在阻塞锁select*fromv$lockwhereblock=1orderbyctimedesc;select*fromdba_waiters;查看指定sid222正在执行的sqlselectb.sid,a.hash_value,a.sql_textfromv$sqltexta,v$sessionbwhereb.sid=2228anda.hash_value=b.sql_hash_value--anda.hash_value=b.PREV_HASH_VALUEorderbyb.sid,a.hash_value,piece;事务中正在执行的sqlselects.sid,d.sql_textfromv$sqltextd,(selects.sid,s.sql_hash_valuefromv$sessions,v$transactiontwheret.SES_ADDR=s.SADDR)swheres.sql_hash_value=d.hash_value(+)ORDERBYs.SID,d.piece;删除index和临时表的统计信息declareV_TABLENAMEVARCHAR2(50);v_indexnamevarchar2(50);V_SQLVARCHAR2(300);V_SQL1VARCHAR2(300);OWNER_NAMEVARCHAR2(100);CURSORcur_indexISselectindex_namefromuser_indexesgroupbyindex_name;CURSORCUR_TABLE_TEMPISSELECTTABLE_NAMEFROMUSER_TABLESWHEREtemporary='Y';9BEGINOPENcur_index;LOOPFETCHcur_indexINTOv_indexname;EXITWHENcur_index%NOTFOUND;v_sql:='analyzeindex'||v_indexname||'deletestatistics';EXECUTEIMMEDIATEv_sql;ENDLOOP;CLOSEcur_index;OPENCUR_TABLE_TEMP;LOOPFETCHCUR_TABLE_TEMPINTOV_TABLENAME;EXITWHENCUR_TABLE_TEMP%NOTFOUND;V_SQL:='ANALYZETABLE'||V_TABLENAME||'DELETESTATISTICS';EXECUTEIMMEDIATEV_SQL;ENDLOOP;CLOSECUR_TABLE_TEMP;EXCEPTIONWHENOTHERSTHENIFCUR_TABLE_TEMP%ISOPENTHEN10CLOSECUR_TABLE_TEMP;ENDIF;IFcur_index%ISOPENTHENCLOSEcur_index;ENDIF;dbms_output.put_line(sqlerrm);END;/分析当前用户的表和index的统计信息execDBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=>USER,ESTIMATE_PERCENT=>5,METHOD_OPT=>'FORALLINDEXEDCOLUMNS',CASCADE=>TRUE);分析当前用户的表的统计信息,但是不分析index的统计信息execDBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=>USER,ESTIMATE_PERCENT=>5,METHOD_OPT=>'FORALLINDEXEDCOLUMNS',CASCADE=>false);清理固定资产垃圾数据的方法.createindexi_fa_deptscale_33onfa_deptscale(fk_history_usedept)tablespacennc_index03nologgingonline;11createglobaltemporarytablefa_tmp(pkchar(20));altersessionenableparalleldml;insertintofa_tmp(pk)(SELECTDISTINCTFK_HISTORY_USEDEPTFROMFA_DEPTSCALEMINUSSELECTFK_USEDEPTFROMFA_CARDHISTORYMINUSSELECTNEWCONTENTFROMFA_ALTERSHEETWHEREALTERTYPE=4MINUSSELECTUSEDEPTFROMFA_BILL_BWHEREUSEDEPTISNOTNULL);delete/*+parallel(fa_deptscale,2)*/FROMfa_deptscalewherefk_history_usedeptin(selectpkfromfa_tmp);droptablefa_tmp;ANALYZETABLEFA_DEPTSCALEESTIMATESTATISTICSSAMPLE5PERCENTFORTABLEFORALLINDEXEDCOLUMNS;12数据库的导入与导出(EXP&IMP)1.1基本命令1.获取帮助$exphelp=y$imphelp=y2.三种工作方式(1)交互式方式$exp//然后按提示输入所需要的参数(2)命令行方式$expuser/pwd@dbnamefile=/oracle/test.dmpfull=y//命令行中输入所需的参数(3)参数文件方式$expparfile=username.par//在参数文件中输入所需的参数参数文件username.par内容userid=username/userpasswordbuffer=8192000compress=ngrants=yfile=/oracle/test.dmpfull=y3.三种模式(1)表方式,将指定表的数据导出/导入。13导出:导出一张或几张表:$expuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1,table2导入:导入一张或几张表$impuser/pwdfile=/dir/xxx.dmplog=xxx.logtables=table1,table2fromuser=dbusertouser=dbuser2(2)用户方式,将指定用户的所有对象及数据导出/导入。导出:$expuser/pwdfile=/dir/xxx.dmplog=xxx.logowner=(xx,yy)导入:$impuser/pwdfile=/dir/xxx.dmplog=xxx.logfromuser=dbusertouser=dbuser2(3)全库方式,将数据库中的所有对象导出/导入导出:$expuser/pwdfile=/dir/xxx.dmplog=xxx.logfull=ycommit=y导入:$impuser/pwdfile=/dir/xxx.dmplog=xxx.logfromuser=dbusertouser=dbuser21.2高级选项分割成多个文件以多个固定大小文件方式导出:这种做法通常用在表数据量较大,单个dump文件可能会超出文件系统的限制的情况$expuser/pwdfile=1.dmp,2.dmp,3.dmp,…filesize=1000mlog=xxx.logfull=y以多个固定大小文件方式导入$impuser/pwdfile=1.dmp,2.dmp,3.dmp,…filesize=1000mtables=xxxfromuser=dbusertouser=dbuser2commit=yignore=y141.3常见问题(1)数据库对象已经存在一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等;数据库对象已经存在,按缺省的imp参数,则会导入失败如果用了参数ignore=y,会把exp文件内的数据内容导入如果表有唯一关键字的约束条件,不合条件将不被导入如果表没有唯一关键字的约束条件,将引起记录重复(2)权限不够如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限(3)imp和exp使用的字符集不同如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.导入完成后再改回来.数据泵的方式进行数据的导入与导出(EXPDP&IMPDP)oracle10g中引入了数据泵(DataPump)技术,分别为expdp和impdp实用程序,在oracle10g上仍可以使用旧版本的导出导入工具(exp和imp),但是效率比不上expdp和impdp。但是expdp和impdp只能在数据库服务端执行。可以使用命令expdphelp=y查看所有参数和参数的含义1expdp介绍151.1EXPDP命令行选项1.ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_name用于指定方案名,job_name用于指定导出作业名.注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:Expdpscott/tigerATTACH=scott.export_job2.CONTENT该选项用于指定要导出的内容.默认值为ALLCONTENT={ALL|DATA_ONLY|METADATA_ONLY}当设置CONTENT为ALL时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义Expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dumpCONTENT=METADATA_ONLY3.DIRECTORY指定转储文件和日志文件所在的目录DIRECTORY=directory_objectDirectory_object用于指定目录对象名称.需要注意,目录对象是使用CREATEDIRECTORY语句建立的对象,而不是OS目录Expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dump4.DUMPFILE用于指定转储文件的名称,默认名称为expdat.dmpDUMPFILE=[directory_object:]file_name[,….]Directory_object用于指定目录对象名,file_name用于指定转储文件名.需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象Expdpscott/tigerDIRECTORY=dump1DUMPFILE=dump2:a.dmp165.ESTIMATE指定估算被导出表所占用磁盘空间分方法.默认值是BLOCKSESTIMATE={BLOCKS|STATISTICS}设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间Expdpscott/tigerTABLES=empESTIMATE=STATISTICSDIRECTORY=dumpDUMPFILE=a.dump6.ESTIMATE_ONLY指定是否只估算导出作业所占用的磁盘空间,默认值为NEXTIMATE_ONLY={Y|N}设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作.Expdpscott/tigerESTIMATE_ONLY=yNOLOGFILE=y7.EXCLUDE(具体见2、Exclude导出用户中指定类型的指定对象)该选项用于指定执行操作时释放要排除对象类型或相关对象EXCLUDE=object_type[:name_clause][,….]Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用Expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dupEXCLUDE=VIEW8.FILESIZE指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)9.FLASHBACK_SCN指定导出特定SCN时刻的表数据FLASHBACK_SCN=scn_valueScn_value用于标识SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同时使用Expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dmpFLASHBACK_SCN=3585231710.FLASHBACK_TIME指定导出特定时间点的表数据FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”Expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dmpFLASHBACK_TIME=“TO_TIMESTAMP(’25-08-200414:35:00’,’DD-MM-YYYYHH24:MI:SS’)”11.FULL指定数据库模式导出,默认为NFULL={Y|N}为Y时,标识执行数据库导出.12.HELP指定是否显示EXPDP命令行选项的帮助信息,默认为N当设置为Y时,会显示导出选项的帮助信息.Expdphelp=y13.INCLUDE(具体见1、Include导出用户中指定类型的指定对象)指定导出时要包含的对象类型及相关对象INCLUDE=object_type[:name_clause][,…]14.JOB_NAME指定要导出作用的名称,默认为SYS_XXXJOB_NAME=jobname_stringSELECT*FROMDBA_DATAPUMP_JOBS;--查看存在的job15.LOGFILE指定导出日志文件文件的名称,默认名称为export.logLOGFILE=[directory_object:]file_nameDirectory_object用于指定目录对象名称,file_name用于指定导出日志文件名.如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值.Expdpscott/tigerDIRECTORY=dumpDUMPFILE=a.dmplogfile=a.log1816.NETWORK_LINK指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项.如:expdpgwm/gwmdirectory=dir_dpNETWORK_LINK=igisdbtables=p_street_areadumpfile=p_street_area.dmplogfile=p_street_area.logjob_name=my_jobigisdb是目的数据库与源数据的链接名,dir_dp是目的数据库上的目录而如果直接用使用连接字符串(@fgisdb),expdp属于服务端工具,expdp生成的文件默认是存放在服务端的17.NOLOGFILE该选项用于指定禁止生成导出日志文件,默认值为N.18.PARALLEL指定执行导出操作的并行进程个数,默认值为1注:并行度设置不应该超过CPU数的2倍,如果cpu为2个,可将PARALLEL设为2,在导入时速度比PARALLEL为1要快而对于导出的文件,如果PARALLEL设为2,导出文件只有一个,导出速度提高不多,因为导出都是到同一个文件,会争抢资源。所以可以设置导出文件为两个,如下所示:expdpgwm/gwmdirectory=d_testdumpfile=gwmfile1.dp,gwmfile2.dpparallel=219.PARFILE指定导出参数文件的名称PARFILE=[directory_path]file_name20.QUERY用于指定过滤导出数据的where条件QUERY=[schema.][table_name:]query_clauseSchema用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能与CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TR19ANSPORT_TABLESPACES等选项同时使用.Expdpscott/tigerdirectory=dumpdumpfile=a.dmpTables=empquery=’WHEREdeptno=20’21.SCHEMAS该方案用于指定执行方案模式导出,默认为当前用户方案.22.STATUS指定显示导出作用进程的详细状态,默认值为023.TABLES指定表模式导出TABLES=[schema_name.]table_name[:partition_name][,…]Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名.24.TABLESPACES指定要导出表空间列表25.TRANSPORT_FULL_CHECK该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息.当设置为N时,导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息.26.TRANSPORT_TABLESPACES指定执行表空间模式导出27.VERSION指定被导出对象的数据库版本,默认值为COMPATIBLE.VERSION={COMPATIBLE|LATEST|version_string}为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;为LATEST时,20会根据数据库的实际版本生成对象元数据.version_string用于指定数据库版本字符串.调用EXPDP1.1数据泵工具导出的步骤1、创建DIRECTORYcreatedirectorydir_dpas'D:\oracle\dir_dp';2、授权Grantread,writeondirectorydir_dptolttfm;--查看目录及权限SELECTprivilege,directory_name,DIRECTORY_PATHFROMuser_tab_privst,all_directoriesdWHEREt.table_name(+)=d.directory_nameORDERBY2,1;3、执行导出expdplttfm/lttfm@fgisdbschemas=lttfmdirectory=dir_dpdumpfile=expdp_test1.dmplogfile=expdp_test1.log;连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.1WiththePartitioning,OLAPandDataMiningoptions启动"LTTFM"."SYS_EXPORT_SCHEMA_01":lttfm/********@fgisdbschory=dir_dpdumpfile=expdp_test1.dmplogfile=expdp_test1.log;*/备注:1、directory=dir_dp必须放在前面,如果将其放置最后,会提示ORA-39002:操作无效ORA-39070:无法打开日志文件。ORA-39087:目录名DATA_PUMP_DIR;无效2、在导出过程中,DATADUMP创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATADUMP导出过程中所用的JOB名字,如果在执行这21个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现如下改成:expdplttfm/lttfm@fgisdbschemas=lttfmdirectory=dir_dpdumpfile=expdp_test1.dmplogfile=expdp_test1.log,job_name=my_job1;3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdplttfm/lttfmattach=lttfm.my_job1执行该命令时一直提示找不到job表4、创建的目录一定要在数据库所在的机器上。否则也是提示:ORA-39002:操作无效ORA-39070:无法打开日志文件。ORA-39087:目录名DATA_PUMP_DIR;无效1.2导出的相关命令使用:1)Ctrl+C组合键:在执行过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止2)Export>status--查看当前JOB的状态及相关信息3)Export>stop_job--暂停JOB(暂停job后会退出expor模式)4)重新进入export模式下:C:\DocumentsandSettings\Administrator>expdplttfm/lttfmattach=lttfm.my_job1--语句后面不带分号5)Export>start_job--打开暂停的JOB(并未开始重新执行)6)Export>continue_client--通过此命令重新启动"LTTFM"."MY_JOB":7)Export>kill_job--取消当前的JOB并释放相关客户会话(将job删除同时删除dmp文件)8)Export>exit_client--通过此命令退出export模式(通过4)可再进入export模式下)注:导出完成后job自动卸载221.3数据泵导出的各种模式:1、按表模式导出:expdplttfm/lttfm@fgisdbtables=lttfm.b$i_exch_info,lttfm.b$i_manhole_infodumpfile=expdp_test2.dmplogfile=expdp_test2.logdirectory=dir_dpjob_name=my_job2、按查询条件导出:expdplttfm/lttfm@fgisdbtables=lttfm.b$i_exch_infodumpfile=expdp_test3.dmplogfile=expdp_test3.logdirectory=dir_dpjob_name=my_jobquery='"whererownum<11"'3、按表空间导出:Expdplttfm/lttfm@fgisdbdumpfile=expdp_tablespace.dmptablespaces=GCOMM.DBFlogfile=expdp_tablespace.logdirectory=dir_dpjob_name=my_job4、导出方案Expdplttfm/lttfmDIRECTORY=dir_dpDUMPFILE=schema.dmpSCHEMAS=lttfm,gwm5、导出整个数据库:expdplttfm/lttfm@fgisdbdumpfile=full.dmpfull=ylogfile=full.logdirectory=dir_dpjob_name=my_job1.4使用exclude,include导出数据1、Include导出用户中指定类型的指定对象--仅导出lttfm用户下以B开头的所有表,包含与表相关的索引,备注等。不包含过程23等其它对象类型:expdplttfm/lttfm@fgisdbdumpfile=include_1.dmplogfile=include_1.logdirectory=dir_dpjob_name=my_jobinclude=TABLE:\"LIKE\'B%\'\"--导出lttfm用户下排除B$开头的所有表:expdplttfm/lttfm@fgisdbschemas=lttfmdumpfile=include_1.dmplogfile=include_1.logdirectory=dir_dpjob_name=my_jobinclude=TABLE:\"NOTLIKE\'B$%\'\"--仅导出lttfm用户下的所有存储过程:expdplttfm/lttfm@fgisdbschemas=lttfmdumpfile=include_1.dmplogfile=include_1.logdirectory=dir_dpjob_name=my_jobinclude=PROCEDURE;2、Exclude导出用户中指定类型的指定对象--导出lttfm用户下除TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出:expdplttfm/lttfm@fgisdbschemas=lttfmdumpfile=exclude_1.dmplogfile=exclude_1.logdirectory=dir_dpjob_name=my_jobexclude=TABLE;--导出lttfm用户下排除B$开头的所有表:expdplttfm/lttfm@fgisdbdumpfile=include_1.dmplogfile=include_1.logdirectory=dir_dpjob_name=my_jobexclude=TABLE:\"LIKE\'b$%\'\";--导出lttfm用户下的所有对象,但是对于表类型只导出以b$开头的表:expdplttfm/lttfm@fgisdbdumpfile=include_1.dmplogfile=include_1.logdirectory=dir_dpjob_name=my_jobexclude=TABLE:\"NOTLIKE\'b$%\'\";2IMPDP介绍242.1IMPDP命令行选项IMPDP命令行选项与EXPDP有很多相同的,不同的有:1、REMAP_DATAFILE该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.REMAP_DATAFIEL=source_datafie:target_datafile2、REMAP_SCHEMA该选项用于将源方案的所有对象装载到目标方案中.REMAP_SCHEMA=source_schema:target_schema3、REMAP_TABLESPACE将源表空间的所有对象导入到目标表空间中REMAP_TABLESPACE=source_tablespace:target:tablespace4、REUSE_DATAFILES该选项指定建立表空间时是否覆盖已存在的数据文件.默认为NREUSE_DATAFIELS={Y|N}5、SKIP_UNUSABLE_INDEXES指定导入是是否跳过不可使用的索引,默认为N6、SQLFILE指定将导入要指定的索引DDL操作写入到SQL脚本中SQLFILE=[directory_object:]file_nameImpdpscott/tigerDIRECTORY=dumpDUMPFILE=tab.dmpSQLFILE=a.sql7、STREAMS_CONFIGURATION指定是否导入流元数据(StreamMatadata),默认值为Y.8、TABLE_EXISTS_ACTION25该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIPTABBLE_EXISTS_ACTION={SKIP|APPEND|TRUNCATE|FRPLACE}当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项9、TRANSFORM该选项用于指定是否修改建立对象的DDL语句TRANSFORM=transform_name:value[:object_type]Transform_name用于指定转换名,其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息),STORAGE用于标识段存储属性,VALUE用于指定是否包含段属性或段存储属性,object_type用于指定对象类型.Impdpscott/tigerdirectory=dumpdumpfile=tab.dmpTransform=segment_attributes:n:table10、TRANSPORT_DATAFILES该选项用于指定搬移空间时要被导入到目标数据库的数据文件TRANSPORT_DATAFILE=datafile_nameDatafile_name用于指定被复制到目标数据库的数据文件Impdpsystem/managerDIRECTORY=dumpDUMPFILE=tts.dmpTRANSPORT_DATAFILES=’/user01/data/tbs1.f’调用IMPDP2.2IMPDP导入模式:1、按表导入p_street_area.dmp文件中的表,此文件是以gwm用户按schemas=gwm导出的:impdpgwm/gwm@fgisdbdumpfile=p_street_area.dmplogfile=imp_p_street_area.logdirectory=dir_dptables=p_street_areajob_name=my_job2、按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直26接导入)impdpgwm/gwm@fgisdbschemas=gwmdumpfile=expdp_test.dmplogfile=expdp_test.logdirectory=dir_dpjob_name=my_job3、不通过expdp的步骤生成dmp文件而直接导入的方法:--从源数据库中向目标数据库导入表p_street_areaimpdpgwm/gwmdirectory=dir_dpNETWORK_LINK=igisdbtables=p_street_arealogfile=p_street_area.logjob_name=my_jobigisdb是目的数据库与源数据的链接名,dir_dp是目的数据库上的目录4、更换表空间采用remap_tablespace参数--导出gwm用户下的所有数据expdpsystem/orcldirectory=data_pump_dirdumpfile=gwm.dmpSCHEMAS=gwm注:如果是用sys用户导出的用户数据,包括用户创建、授权部分,用自身用户导出则不含这些内容--以下是将gwm用户下的数据全部导入到表空间gcomm(原来为gmapdata表空间下)下impdpsystem/orcldirectory=data_pump_dirdumpfile=gwm.dmpremap_tablespace=gmapdata:gcommOracle11gdeferred_segment_creation参数Oracle11G在用EXP导出时,空表不能导出。11G中有个新特性,当表无数据时,不分配segment,以节省空间设置deferred_segment_creation参数27该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。SQL>showparameterdeferred_segment_creationNAMETYPEVALUE-----------------------------------------------deferred_segment_creationbooleanTRUESQL>altersystemsetdeferred_segment_creation=false;系统已更改。SQL>showparameterdeferred_segment_creationNAMETYPEVALUE-----------------------------------------------deferred_segment_creationbooleanFALSE28NC用户权限的分配通常建议用户在安装时赋予NC用户DBA权限,至少以下权限是必不可少的:GRANTCREATEPROCEDURETO"NC"GRANTCREATESEQUENCETO"NC"GRANTCREATESESSIONTO"NC"GRANTCREATETABLETO"NC"GRANTCREATETRIGGERTO"NC"GRANTCREATEVIEWTO"NC"GRANTCREATESYNONYMTO"NC"NC数据库统计信息的收集数据库在执行过程中需要根据数据库中记录的统计信息来确定使用最优的执行路径,所以我们需要及时对数据库进行分析并记录统计信息,这在大数据量下尤其重要。因此建议数据量大的用户在升级系统前后,都作数据库优化分析。日常对数据库管理时,也要作定期的优化分析,更新数据库统计信息。需要注意的是,作数据库优化操作都比较耗时,尤其是用户数据量大了的时候更为明显,建议在没有业务处理时做优化工作优化器统计信息包括:表的统计信息:行数Block数29行平均长度列的统计信息列中不同值的数量列中null的数量数据分布(柱状图/直方图)索引的统计信息叶子块的数量索引的高度聚簇因子(clusteringfactor)等等其它统计信息。NC数据统计信息的收集:对于Oracle用户,更新指定表统计信息方法需要在sqlplus中执行。下面是在"sqlplus"中执行优化操作命令,"NC56"是当前系统存储业务数据的用户。这个存储过程执行中,如果个别表分析出错后,会继续处理其他表,并将错误信息写入analyze_log表。需要特别注意,在NC502升级到NC5.6的前后,都要进行本操作,否则会导致执行计划混乱,整个NC系统效率变低。SQL>connectNC56/NC56@oracleSQL>grantcreateanytabletonc56;--这一步非常重要,需要显式地赋予用户建表权限CREATEORREPLACEPROCEDUREANALYZE_TBASOWNER_NAMEVARCHAR2(100);V_LOGINTEGER;V_SQL1VARCHAR2(800);30V_TABLENAMEVARCHAR2(50);CURSORCUR_LOGISSELECTCOUNT(*)FROMUSER_TABLESWHERETABLE_NAME='ANALYZE_LOG';--1BEGIN--DBMS_OUTPUT.ENABLE(buffer_size=>100000);--1.1BEGINOPENCUR_LOG;FETCHCUR_LOGINTOV_LOG;IFV_LOG=0THENEXECUTEIMMEDIATE'CREATETABLEANALYZE_LOG(USER_NAMEVARCHAR(20),OP_TIMECHAR(19)DEFAULTto_char(sysdate,''yyyy-mm-ddhh24:mi:ss''),ERROR_TEXTVARCHAR(200),TABLE_NAMEVARCHAR(40))';ENDIF;END;SELECTUSERINTOOWNER_NAMEFROMDUAL;V_SQL1:='INSERTINTOANALYZE_LOG(USER_NAME,ERROR_TEXT,TABLE_NAME)VALUES('''||OWNER_NAME||''',''ANALYZEBEGIN'',''ALL'')';EXECUTEIMMEDIATEV_SQL1;31sys.dbms_stats.gather_schema_stats(ownname=>UPPER(OWNER_NAME),estimate_percent=>100,method_opt=>'FORALLINDEXEDCOLUMNS',cascade=>TRUE);V_SQL1:='INSERTINTOANALYZE_LOG(USER_NAME,ERROR_TEXT,TABLE_NAME)VALUES('''||OWNER_NAME||''',''ANALYZEEND'',''ALL'')';EXECUTEIMMEDIATEV_SQL1;commit;--1.2deletetmptbstatiticsandlockstatisticsBEGINforxin(selecta.table_name,a.last_analyzed,b.stattype_lockedfromuser_tablesa,user_tab_statisticsbwherea.temporary='Y'anda.table_name=b.table_nameand(b.STATTYPE_LOCKEDisnullora.last_analyzedisnotnull))LOOPIFx.last_analyzedISNOTNULLTHEN--deletestatsdbms_stats.delete_table_stats(ownname=>user,tabname=>x.table_name,force=>TRUE);ENDIF;IFx.stattype_lockedISNULLTHEN--lockstats32dbms_stats.lock_table_stats(ownname=>user,tabname=>x.table_name);ENDIF;ENDLOOP;end;EXCEPTIONWHENOTHERSTHENIFCUR_LOG%ISOPENTHENCLOSECUR_LOG;ENDIF;commit;end;/SQL>execANALYZE_TB;下面提供的脚本示范如何创建定时任务,也是要在"sqlplus"中运行。当天的凌晨2点开始更新统计信息,以后每2天的凌晨2点更新统计信息。注意建立当前job时,使用NC的用户连接数据库执行就可以了。具体优化时间设置用户根据实际情况灵活调整。VARIABLEJOBNONUMBER;VARIABLEINSTNONUMBER;BEGINSELECTINSTANCE_NUMBERINTO:INSTNOFROMV$INSTANCE;33DBMS_JOB.SUBMIT(:JOBNO,'ANALYZE_TB;',TRUNC(SYSDATE)+1+2/24,'TRUNC(SYSDATE)+2+2/24',TRUE,:INSTNO);COMMIT;END;/对于升级用户,如果以前有相关定时任务设置,建议用户清除以前的定时任务。具体查看系统中的定时任务通过下面SQL执行即可。发现v3留下的统计数据库的job,应该及时删除掉。SQL>selectjob,last_date,this_date,next_date,what,brokenfromuser_jobs;13052009-3-43:10:142009-3-62:00:00"ANALYZE_TB;"N例如运行上面的sql查询出来的第一列即“305”,以下sql为:SQL>execsys.dbms_job.remove('305');如果使用ORACLE10G注意关闭ORACLE自动更新统计信息的任务SQL>ExecDBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');ORACLE的参数配置说明NC运行在不同的应用环境下需要配置不同的ORACLE参数,下面是建议的参数配置表,具体再根据具体应用情况再调整。34●硬件配置在2CPU,2G内存设置情况系统大约支持用户并发数:30左右----------------------------------------------------------------------------------------------------oracle9i版本(32bit)db_cache_size=629145600(600M)shared_pool_size=209715200(200M)large_pool_size=614400java_pool_size=20971520processes=80(根据具体情况调大此值,比如测试环境可以调制500)sessions=80(根据具体情况调大此值,比如测试环境可以调制500)log_buffer=5242880db_writer_processes=2open_cursors=2000workarea_size_policy=autopga_aggregate_target=250Mpre_page_sga=true(win2000下参数)lock_sga=true(unix下参数,不包含solaris)optimizer_index_cost_adj=40optimizer_dynamic_sampling=435oracle10g版本(32bit)db_cache_size=629145600(600M)shared_pool_size=209715200(200M)large_pool_size=614400java_pool_size=20971520processes=80(根据具体情况调大此值,比如测试环境可以调制500)sessions=80(根据具体情况调大此值,比如测试环境可以调制500)log_buffer=5242880db_writer_processes=2open_cursors=2000workarea_size_policy=autopga_aggregate_target=250Moptimizer_index_cost_adj=40pre_page_sga=true(win2000下参数)lock_sga=true(unix下参数,不包含solaris)optimizer_index_cost_adj=40parallel_max_servers=8optimizer_dynamic_sampling=4----------------------------------------------------------------------------------------------------36●硬件配置在4CPU,4G内存设置情况系统大约支持用户并发数:40-80左右----------------------------------------------------------------------------------------------------oracle9i版本(32bit)OS:win2000db_cache_size...