NC协议服务器端库登陆失败,NC数据库日常维护

《NC数据库日常维护》由会员分享,可在线阅读,更多相关《NC数据库日常维护(26页珍藏版)》请在人人文库网上搜索。

1、目录一日常操作.2(一 ) Oracle 数据库 .21数据库的启动 :.22用户口令的修改:.23数据库参数文件SPFILE 与 PFILE .2(二 ). DB2数据库的常用操作 .3二 . 备份与恢复.3(一 ) Oracle 的逻辑备份与恢复 .31逻辑备份 .32逻辑恢复 .4(二 ) DB2 的备份与恢复 .41备份 .42恢复 .5三 . 执行统计分析更新 .5(一 ) Oracle: .5( 二 ) DB2 .8(三 ) SQL Server .8四重建索引.8(一 ) oracle.9(二 ) db2 .9(三 ) sql server: .9附件一 . 纠正 oracle 。

2、临时表统计信息的方案 .10附件二 . Oracle客户端连接服务器的出错处理.15附件三 . Oracle优化说明 .16一日常操作(一) Oracle 数据库1数据库的启动 :( 1)启动数据库实例( Unix/Linux 系统需切换到 Oracle 用户下) : sqlplus “ / as sysdba ”startup (启动数据库实例)shutdown immediate (关闭数据库实例)(2)启动 / 关闭数据库监听进程.lsnrctlLSNRCTL start ( LSNRCTL stop (启动监听关闭监听 )2用户口令的修改 :SQL ALTER USER“用户名” ID。

3、ENTIFIED BY “新口令”如果数据库管理员的口令丢失 , 可执行如下步骤 :sqlplus“/ as sysdba”SQL ALTER USER“sys ” IDENTIFIED BY“新口令”SQL ALTER USER“system ” IDENTIFIED BY“新口令”3数据库参数文件SPFILE 与 PFILE( 假设Oracle安装在D:Oracle目录下 )(1) SPFILE文件 :存储在D:Oracleora92database目录下,为二进制的参数文件, 无法直接编辑.文件名为”SPFILE+例程名.ora”(2) PFILE文件 :存储在为 ” init+ pfi。

4、leinit.oraD:Oracleora92database目录下 ,为文本的参数文件, 可直接修改例 程 名 .ora ”,打 开 此 文 件 , 内 容 为 ” IFILE= ” ,也就是说真正的参数文件为init.ora,此文件为文本文件. 文件名实 例 名, 可直接编辑 .(3)数据库启动所使用的参数文件.数据库启动时,首先寻找” SPFILE+例程名 .ora ”文件置的参数启动例程; 若” SPFILE+例程名 .ora ”文件不存在文件 , 按照” init+例程名 .ora ”文件里指定的实际参数文件, 若文件存在, 转向寻找”init.ora, 就按照文件设init+例程名。

5、 .ora的参数启动例程.”(4) SPFILE 和 PFILE 的相互转换 .a) 用 SPFILE 文件创建 PFILE 文件 .Create spfile= spfile路径 from pfile= pfile路径 ;b)用 PFILE 文件创建SPFILE 文件 .Create pfile= pfile路径 from spfile= spfile路径 ;(二). DB2数据库的常用操作1启动数据库db2start2停止数据库db2stop3连接数据库db2 connect to o_yd user db2 using pwd4读数据库管理程序配置db2 get dbm cfg5写数据库。

6、管理程序配置db2 update dbm cfg using参数名参数值6读数据库的配置db2 connect to数据库名 user db2 using pwddb2 get db cfg for数据库名7写数据库的配置db2 connect to数据库名user db2 using pwddb2 update db cfg for数据库名using参数名参数值8关闭所有应用连接db2 force application all9执行一个sql 文件db2 tf sql文件名(文件中每一条命令用;结束)10. 列出所有的系统表list tables for system二 . 备份与恢复(一。

7、) Oracle 的逻辑备份与恢复1逻辑备份使用 EXP命令 , exp help=y得到所有关于exp 命令的参数例:将 nc30 用户的所有数据备份到nc30bak.dmp 文件中 .exp nc30/1ncdb owner=nc30 file=nc30bak.dmp log=exp.log其中 :nc30/1: nc的Oracle用户名与密码ncdb: Oracle nc30bak.dmp:的实例名为导出文件exp.log :导出过程的log文件 .2逻辑恢复使用 IMP 命令 , 用 imp help=y例:将 nc30bak.dmp 文件中的得到所有关于exp 命令的参数nc30 用。

8、户的所有数据恢复到nc30new 用户下.imp nc30new/1ncdb fromuser=nc30 touser=nc30new file=nc30bak.dmp log=imp.log 其中:nc30/1 : 要导入的Oracle用户名与密码ncdb: Oracle的实例名nc30:导出时的Oracle 用户名nc30new: 要导入数据到此Oracle 用户下nc30bak.dmp:为导出文件imp.log :导入过程的log 文件 .(二) DB2 的备份与恢复1备份通过 DB2控制中心图形界面备份, 右键点击选中的数据库, 选择备份数据库, 根据提示操作即可;命令行操作db2 b。

9、ackup db dbname to backupdir注释:该命令有丰富参数,可以使用命令db2 ? backup db 查看。在命令行下输入msg, msg可以是错误提示信息如SQL1013N,也可以是某个命令如backup db 。注意事项db2 ?windows 服务器的备份文件放在一个较深的目录结构下,注意复制时要保留目录结构,例: C:MYDB.0DB2NODE0000CATN000020030401120001.001备份如果提示有活动应用程序连接,则在确认事务都已经提交后,断调连接后再备份db2 force application all对于用于不同操作系统下数据库恢复目的的数。

10、据库备份:假如,你的数据库在 AIX 平台上,你想在 WIN平台上来恢复数据环境 , 可用 dbmove 来做。 dbmove 只导出了表结构与表数据, 而其他如视图等对象并没有被创建, 所以还要用 db2look做一个库结构的备份。操作步骤如下所示:db2look d dbname u db2inst1 e o d:credb.sql i db2inst1w db2inst1db2move dbname export tc db2inst1 u db2inst1p db2inst12恢复通过控制中心图形界面恢复, 右键点击指定实例下面的数据库, 选择 “根据备份创建数据库”,根据提示操作;命。

11、令行操作db2 restore db dbname from backupdir对于通过 dbmove 来的数据我们如何做恢复呢?步骤如下:dbmove dbname import tc db2inst1 u db2inst1 p db2inst1db2 connect to dbname user db2inst1 using db2inst1db2 tvf d:credb.sql credb.log执行以上步骤后打开credb.log文件查看有哪些异常, 在日志文件中前半部份涉及到创建表的语句会报错,因为通过 dbmove后表已创建起来,我们把他当做正常错误来看待。关键是要看后面的涉及到表。

12、的约束条件及索引、视图、触发器的建立是否正常。三 . 执行统计分析更新作用 : 保证统计信息的最新与准确性最好每周做一下统计信息更新:(一) Oracle:对于 Oracle 用户,更新指定表统计信息方法需要在sqlplus中执行。下面是在sqlplus中执行优化操作命令,NC310 是当前系统存储业务数据的用户。SQLconnect NC310/NC310oracleSQLCREATE OR REPLACE PROCEDURE ANALYZE_TBASV_TABLENAME VARCHAR2(50); -table的名称V_SQL VARCHAR2(200);OWNER_NAME VARCH。

13、AR2(100);- 游标CURSOR CUR_TABLE IS-no temp tableSELECT TABLE_NAME FROM USER_TABLES WHERE temporary=N;CURSOR CUR_TABLE_TEMP ISSELECT TABLE_NAME FROM USER_TABLES WHERE temporary=Y;BEGINSELECT USER INTO OWNER_NAME FROM DUAL;OPEN CUR_TABLE;LOOPFETCH CUR_TABLE INTO V_TABLENAME;EXIT WHEN CUR_TABLE%NOTFOUND;。

14、V_SQL:= ANALYZE TABLE | V_TABLENAME | COMPUTE STATISTICS ; EXECUTE IMMEDIATE V_SQL;V_SQL:= ANALYZE TABLE | V_TABLENAME | COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;EXECUTE IMMEDIATE V_SQL;END LOOP;- 关闭游标CLOSE CUR_TABLE;OPEN CUR_TABLE_TEMP ;LOOPFETCH CUR_TABLE_TEMP INTO V_TABLENAME;EXIT WHEN CUR_TABL。

15、E_TEMP %NOTFOUND;END LOOP;- 关闭游标CLOSE CUR_TABLE_TEMP ;EXCEPTIONWHEN OTHERS THENIF CUR_TABLE%ISOPEN THENCLOSE CUR_TABLE;END IF;IF CUR_TABLE_TEMP%ISOPEN THENCLOSE CUR_TABLE_TEMP ;END IF;END ANALYZE_TB;/SQLexec ANALYZE_TB;3.1 以前版本升级用户升级完后需要执行下面存储过程,清除信息,保证Oracle 数据库执行计划正确。具体执行参考下面过程Oracle数据库索引统计SQLconn。

16、ect NC310/NC310oracleSQLCREATE OR REPLACE PROCEDURE DEL_INDEX_STATSASv_indexname varchar2(50);-indexv_ownername varchar2(100);-v_sql varchar2(1000);-游标CURSOR cur_index IS的名称当前用户名称select index_name from user_indexes group by index_name;BEGINselect user into v_ownername from dual;OPEN cur_index ;LOOPF。

17、ETCH cur_index INTO v_indexname;EXIT WHEN cur_index %NOTFOUND;v_sql:=analyze index |v_indexname| delete statistics ;EXECUTE IMMEDIATE v_sql;END LOOP;- 关闭游标CLOSE cur_index ;EXCEPTIONWHEN OTHERS THENIF cur_index%ISOPEN THENCLOSE cur_index ;END IF;END DEL_INDEX_STATS;/SQLexec DEL_INDEX_STATS;下面提供的脚本示范如。

18、何创建定时任务,也是要在sqlplus中运行。当天的凌晨2 点开始更新统计信息,以后每14 天的凌晨2 点更新统计信息。注意建立当前job 时,使用 NC的用户连接数据库执行就可以了。具体优化时间设置用户根据实际情况灵活调整。VARIABLE JOBNO NUMBER;VARIABLE INSTNO NUMBER;BEGINSELECT INSTANCE_NUMBER INTO :INSTNO FROM V$INSTANCE;DBMS_JOB.SUBMIT(:JOBNO,ANALYZE_TB;,TRUNC(SYSDATE)+1+2/24,TRUNC(SYSDATE)+15+2/24,TRUE,。

19、:INSTNO);COMMIT;END;/对于升级用户, 如果以前有相关定时任务设置,建议用户清除以前的定时任务。具体查看系统中的定时任务通过下面 SQL执行即可。发现 v3 留下的统计数据库的 job ,应该及时删除掉。( 二) DB2以表的所有者的用户权限登陆数据库, 执行:reorgchk update statistics on table all上述语句会更新该数据库内该用户所拥有的所有表、索引的统计信息如果只想更新其中某个对象的统计信息,可执行RUNSTATS ON TABLE(表名) and indexes all(三) SQL Server使用 Query Analyzer登陆。

20、到 SQL Server ,执行:use 用户数据库名称sp_updatestats上述语句会把该数据库内的所有表、索引的统计信息更新。如果只想更新其中某个对象的统计信息,可执行:UPDATE STATISTICS表名四重建索引如果系统已经运行三月以上, 并且数据变化很大, 可以考虑重建索引.(一) oracle执行:set pagesize 20000spool c:index.sql;selectalter index|index_name|rebuild online;from user_indexes;spool off;编辑c:index.sql文件,删除除alter index.外。

21、的其他内容。运行:c:index.sql;(二) db2在用户数据库先执行:selectREORGTABLE|rtrim(TBCREATOR)|. |TBNAME| INDEX|rtrim(CREATOR)| . |NAME from sysibm.sysindexes然后把运行结果执行(三) sql server:在用户数据库先执行:select dbcc dbreindex( +name+) from sysobjects where xtype= u 然后把运行结果执行附件一 . 纠正 oracle 临时表统计信息的方案针对 NC产品版本 :1. NC 产品 230 打过临时表 patc。

22、h 的用户2. NC 产品 V30用户1. 问题描述nc 产品运行中,当遇到多表关联查询包含临时表的时候,往往会出现执行时间较长的效率问题。2. 问题原因这是因为 oracle的 cost 优化器, 在处理没有统计信息的临时表时,经常会选择不良的执行计划,导致一个查询耗时很长的现象。3. 解决方法根据 nc 产品的 sql 特征,认为,手工对临时表指定统计信息,是对于这个问题较好的解决方案。为了避免复杂手工命令步骤,提供以下存储过程来统一实现多个临时表的统计信息指定。请大家务必严格按步骤执行。4. 结果描述避免了 oracle在有关临时表查询是选择不良的执行计划, 提高了类似查询的执行效率.5。

23、. 执行步骤( 1)创建 procudure :在 sqlplus中以在 nc 的用户下执行以下创建procedure的脚本 :CREATE OR REPLACE PROCEDURE INRT_STATISTICSAS的名称V_USERNAME VARCHAR2(50);V_SQLVARCHAR2(500);V_SQL1VARCHAR2(500);-游标CURSOR CUR_TABLE ISSELECT TABLE_NAME FROM USER_TABLES WHERE TABLESPACE_NAME ISNULL;BEGINSELECT USER INTO V_USERNAME FROM D。

24、UAL;OPEN CUR_TABLE;LOOPFETCH CUR_TABLE INTO V_TABLENAME;EXIT WHEN CUR_TABLE%NOTFOUND;V_SQL:= analyze table | V_TABLENAME | delete statistics;V_SQL1:= BEGIN dbms_stats.set_table_stats(ownname=|V_USERNAME |,tabname=| V_TABLENAME|,numrows=2000,numblks=70);END;EXECUTE IMMEDIATEEXECUTE IMMEDIATEEND LOOP;。

25、V_SQL;V_SQL1;V_SQL:= BEGIN dbms_stats.set_table_stats(ownname=| V_USERNAME |,tabname=IA_ENDHANDLE,numrows=1000,numblks=15);END;EXECUTE IMMEDIATEV_SQL;V_SQL:= BEGIN dbms_stats.set_table_stats(ownname=| V_USERNAME|,tabname=FA_TEMP_DEP_N,numrows=10000,numblks=100);END;EXECUTE IMMEDIATEV_SQL;- 关闭游标CLOSE。

26、 CUR_TABLE;EXCEPTIONWHEN OTHERS THENIF CUR_TABLE%ISOPEN THENCLOSE CUR_TABLE;END IF;END INRT_STATISTICS;/如果得到以下提示,表示创建成功:Procedure created(或同意的中文提示) 。如 :(C) 版权所有 1985-2000 Microsoft Corp. C:Documents and SettingsduanlsqlplusSQL*Plus: Release 8.1.7.0.0 - Production on 星期一9 月 27 13:05:53 2004(c) Copyri。

27、ght 2000 Oracle Corporation.All rights reserved.请输入用户名 :NCUSER请输入口令 :连接到 :With the Partitioning optionSQL CREATE OR REPLACE PROCEDURE INRT_STATISTICS 2 AS3V_TABLENAME VARCHAR2(50);-table 的名称4 V_USERNAME V ARCHAR2(50);5 V_SQL VARCHAR2(500);6 V_SQL1 VARCHAR2(500);78- 游标910CURSOR CUR_TABLE IS11 SELECT 。

28、TABLE_NAME FROM USER_TABLES WHERE TABLESPACE_NAME IS NULL;1213 BEGIN14 SELECT USER INTO V_USERNAME FROM DUAL;1516 OPEN CUR_TABLE;17LOOP18FETCH CUR_TABLE INTO V_TABLENAME;1920EXIT WHEN CUR_TABLE%NOTFOUND;2122V_SQL:= analyze table | V_TABLENAME | delete statistics;23V_SQL1:= BEGIN dbms_stats.set_table。

29、_stats(ownname=| V_USERNAME|,tabname=| V_TABLENAME |,numrows=2000,numblks=70);END;2425EXECUTE IMMEDIATEV_SQL;26EXECUTE IMMEDIATEV_SQL1;2728END LOOP;2930 V_SQL:= BEGIN dbms_stats.set_table_stats(ownname=| V_USERNAME | ,tabname=IA_ENDHANDLE,numrows=1000,numblks=15);END;31EXECUTE IMMEDIATEV_SQL;3233 V_。

30、SQL:= BEGIN dbms_stats.set_table_stats(ownname=| V_USERNAME | ,tabname=FA_TEMP_DEP_N,numrows=10000,numblks=100);END;34EXECUTE IMMEDIATEV_SQL;3536 - 关闭游标37 CLOSE CUR_TABLE;3839 EXCEPTION40 WHEN OTHERS THEN41 IF CUR_TABLE%ISOPEN THEN42CLOSE CUR_TABLE;43END IF;44 END INRT_STATISTICS;45 /过程已创建。(2)执行该存储过。

31、程:a.如( 1)得到成功提示后,在nc 用户下执行:exec INRT_STATISTICS;指定临时表统计信息。SQL exec INRT_STA TISTICS;PL/SQL过程已成功完成。b.如( 1)返回有错误提示,执行:show error并把显示结果发回NC 本部设计部。SQL show errorPROCEDURE INRT_STATISTICS出现错误:LINE/COL ERROR- -30/73PLS-00103:出现符号,tabname=IA_ENDHANDLE,numrows=1000,numblks=15);END;在需要下列之一时:.(*%&=-+;atinmodn。

32、otrem= andorlikebetweenis nullis not|is dangling符号.被替换为,tabname=IA_ENDHANDLE,numrows=1000,numblks=15);END;后继续。6. 另外提供定制 job定时完成这个功能的脚本,将存储过程定时job:variable jobno number;variable instno number;beginselect instance_number into :instno from v$instance;dbms_job.submit(:jobno, BEGIN INRT_STATISTICS;END;, 。

33、trunc(trunc(sysdate)+23/24,HH), trunc(SYSDATE+1,HH), TRUE, :instno);commit;end;/SQL variable jobno number;SQL variable instno number;SQL begin2 select instance_number into :instno from v$instance;3 dbms_job.submit(:jobno, BEGIN INRT_STATISTICS;END;, trunc(trunc(sysdate)+23/24,HH), trunc(SYSDATE+1,HH。

34、), TRUE, :instno);4 commit;5 end;6 /PL/SQL过程已成功完成。这个可代替上述步骤5-(2)a时间定制为每天晚上11 点.要执行这个job, 必须先确定数据库参数:job_queue_processes在 sqlplus 中用这个命令来查看参数 : show parameter job_queue_processes如果该参数值为 0,在 sqlplus 中用以下命令先进行修改 alter system set job_queue_processes = 10;:SQL show parameter job_queue_processesNAMETYPE- 。

35、- -job_queue_processesinteger 4VALUESQL alter system set job_queue_processes = 10;系统已更改。7.相关说明以上提供的方案,对数据库系统资源消耗较小,可以在业务使用的时候执行.附件二 . Oracle 客户端连接服务器的出错处理一 . ORA-12560: TNS: 协议适配器错误造成 ORA-12560: TNS:协议适配器错误的问题的原因有三个:1. 监听服务没有起起来。 windows 平台个一如下操作:开始 - 程序 - 管理工具 - 服务,打开服务面板,启动 oraclehome92TNSlistener。

36、 服务。2.database instance没有起起来。windows 平台如下操作:开始- 程序 - 管理工具- 服务,打开服务面板,启动oracleserviceXXXX, XXXX就是你的database SID.3. 注册表问题。 regedit ,然后进入 HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0将该环境变量 ORACLE_SID设置为 XXXX, XXXX 是你的 database SID. 或者右击我的电脑,属性高级环境变量 - 系统变量新建,变量名 =oracle_sid, 变量值 =XXXX, XXXX 是你的database SID.或者。

37、进入sqlplus前,在 command line下输 set oracle_sid=XXXX, XXXX是你的 database SID.经过以上步骤,一般可以解决问题。二 . Ora-12638 错误 :错误含义 :凭证检索失败的错误原因 :如果用户登陆到域,或者是域服务器, 可能出现此错误解决办法 :修改 $Oracle_Homenetworkadminsqlnet.ora文件将 SQLNET.AUTHENTICATION_SERVICES= (NTS)改为 : SQLNET.AUTHENTICATION_SERVICES= (NONE)附件三 . Oracle 优化说明ora_perf。

38、orm.sql 脚本是用来监测oracle数据库性能的工具。 ( 该脚本附录在最后面)使用方法:将 ora_perform.sql文件放入某一磁盘,如 c:;启动 SQLPLUS,输入用户名 / 口令及连接名与你将要监测的数据库建立起连接;执行命令:c:ora_perform.sql(注意文件所在位置 )。需要输入参数: loops,interval的值。 Loops 指要做多少次监测操作;interval指定每次监测之间所间隔的时间, 单位为秒。 在监测过程中SQLPLUS呈现一种停止状态。 你不用去管它,监测结束后结果后会被输出到SQLPLUS界面及 c:ora_perform_resul。

39、t.txt文件中。建议在业务操作较为频繁的时候来做监测。loops 的值大一些,如 10 次左右或更大; interval的值建议为 900,也就是间隔时间为15 分钟。这样整个监测过程需要花费大约10*900( 秒 ) ,即 2.5 个小时左右。结果输出后,取结果重覆出现频率较高的几组值进行分析。结果说明:Buffer Cache Hit Ratio说明 :数据缓冲区的命中率。SQL语句执行时, Server 进程首先会去数据缓冲区中找返回给用户的数据值,当缓冲区中没有所要的数据时通过 DBWR进程将数据从数据文件中读取写入数据冲区再传给用户。 命中率是指未发生物理文件读取的数据请求在所有数。

40、据请求中所占比例。正常值 : =90%优化方法:增加初始化参数:db_block_buffers的值。增加的前提是目前有足够的剩余物理内存。设置多缓冲池。将缓冲池分为keep 区, recycle区 ,default区,三个区的大小总合为db_block_buffers的值,修改init.ora文件加入设置,例如下:.DB_BLOCK_BUFFERS = 20000DB_BLOCK_LRU_LATCHES = 6BUFFER_POOL_KEEP=(BUFFERS:14000,LRU_LATCHES:1)BUFFER_POOL_RECYCLE=(BUFFERS:2000,LRU_LATCHES:。

41、3).注: buffer_pool_buffers=2000*3+14000*1=20000keep 区用于保留会再一次使用的对象;recycle区用于存放很少被重复使用的对象。所以我们可以指定经常重复使用的表、索引等对象的缓存区域为keep 区,以减少I/O 操作。指定方法如下:alter table bd_accsubj storage(buffer_pool keep);Library Cache Hit Ratio;Library Cache Reload Ratio说明 : library cache用于存放SQL、 PLSQL及其分析树及他们的执行方案。Library cacheh。

42、it ratio指所发送的SQL语句在library cache中能找到它的执行方案的机率;librarycache reload指所发送的SQL语句在 library cache曾经有过同样的语句及它的执行方案,但被移出了library cache,这些语句所占的比率即为library cache reload ratio。正常值 : Library Cache Hit Ratio=90%Library Cache Reload Ratio=1%(最好为 0)优化方法 :增加初始化参数:shared_pool_size 的值。Dictionary Cache Getmisses Ratio说明 : dictionary cache用于存放数据库对象如表、视图等的结构定义。当SQL语句中用到数据库对象时, server进程要去 dictionarycache 中对比该对象的定义,当找不到时会从数据文件中读取入 dictionary cache, dictionary cache getmisses ratio反映的就是找不到的比率。正常值 : 15%优化方法 :增加初始化参数:shared_pool_size的值Rollback Segment Wait Ratio说明 :事务在请求回滚段时发生等待的比率。正常值 : 1%优化方法 :增加新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值