oracle 数据同步仿制毛病处理51CTO博客 - 牛牛娱乐

oracle 数据同步仿制毛病处理51CTO博客

2019年04月23日10时24分14秒 | 作者: 紫夏 | 标签: 处理,毛病,同步 | 浏览: 483

毛病处理:oracle10g 数据库仿制同步 呵呵。oracle我是个菜鸟,没花功夫研讨它,但我仍是兼任dba,现在oracle全部是由曾经的dba创立的,oracle的确好。根本没有出过问题,我也就根本不管它了,但是因为自己粗枝大叶,在一次修正服务器地址时分,数据库里的tns...这个配置文件忘了修正,成果导致同步失利,等我发现的时分,发现现已失效,成果我花了2天时刻,才得以处理。。。 先说说问题的发现 我有2台服务器,别离放置于不同机房,体系都为linux,数据库都为oracle10g,俩台数据库之间守时同步数据,有一次我更改了一台服务器地址,后来发现oracle同步呈现毛病,毛病为broken 的值为Y,FAILURES=16,通过google ,说是broken =Y,FAILURES=16便是表明此job 失效,便是不再履行。 毛病处理: 通过了无数次的google。。。。。我处理进程如下: 首先用oracle帐号登陆进数据库 sqlplus / as sysdba 然后查询dba_jobs状况 select job,next_date,next_sec,failures,broken from dba_jobs; 所以我运转 execute dbms.job.run(这儿是中止了的job-id号) 发现无法运转。 这时发现failures 为16  , broken 为 Y 通过google,job假如因为某种原因未能成功之行,oracle将重试16次后,还未能成功履行,将被符号broken为Y(阐明此作业将符号为破,而FLASE阐明此作业将符号为未破) 现在看来这个job为破了,那就先将它改为未破 execute dbms.job_broken(id号,false,next_date); 阐明一下: id号:是中止了job所标明的仅有号 false:表明将broken 设置为false,意思便是未破啦 next_date:表明下一次此job运转的时刻。 运转以上指令后,发现提示一下: 提示过错如下: ORA-23421: job number 109 is not a job in the job queue ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "SYS.DBMS_IJOB", line 529 ORA-06512: at "SYS.DBMS_JOB", line 258 ORA-06512: at line 2 通过查询,才理解,假如你是以sys登录数据库的话,假如运转其他用户的job,有必要运用SYS.DBMS_IJOB,假如是当时用户登录运转当时用户的job,就用SYS.DBMS_JOB,这我才理解。从头输入上述代码:: execute sys.dbms_ijob.broken(id号,false,next_date); 输入后完结,显现成功 然后提交 commit; 这时在查询job表的broken,发现那个为破的job,现在以改为未破 N。 接下来在运转execute dbms_ijob.run(id) 发现主动中止,在调查又发现broken 又变为Y。 持续google,学习一下高档仿制制造进程。 我这就简略说一下留意的当地: 留意数据库里的配置文件必定正确 sqlnet.ora  tnsnames.ora 我通过调查我将这俩个文件里的修正前的对方数据库地址该为修正后的对方数据库地址,特别留意tnsnames.ora配置文件。 自定义称号=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 另一台库地址)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME =另一台库SID)
    )
  ) 看了其他人的文章,大约知道了数据库相互衔接的大约状况,我只需调查一下曾经创立的内容  select * from all_db_links; 能够看到这个db links的内容,有owner,db_link,username,host,created,通过调查。我发现我这儿的host内容不同于以上tnsnames.ora文件中自定义称号,所以我将tnsnames.ora文件中自定义称号改为all_db_links表中host的称号。 重起数据库, execute sys.dbms_ijob.broken(id,false,next-date) 调查中,发现到了next_date,尽管broken没有变成Y,但是依然没有运转,这时发现this_date 呈现日期值,通过查询,this_date为空表明使命闲,this_date不为空表明使命忙,忙有2种状况:使命死锁next-date为当时时刻前的一个时刻值,或许是很大的值4001-01-01。 看网上说找到死锁的快照进程号 kell -9 ,但是我不知道哪个才是死锁的,所以我用了最笨的方法,重起数据库。哈哈哈。 但是通过几回发动发现依然无法发动,我就调查了数据库里的进程; sql>show parameter job 发现我现在能够有10个能够一起衔接 我在给改大些,看网上说,更改规模是036, alter system set job_queue_processes=15 通过调查文章,发现或许和分布式业务有联系,持续寻觅问题中; 能够自己上网查一下分布式业务。这个我也不熟悉 分布式业务,简略来说,是指一个业务在本地和长途履行,本地需求等候承认长途的业务完毕后,进行下一步本地的操作。如通过dblink update长途数据库的一行记载,假如在履行进程中网络反常,或许其他事情导致本地数据库无法得知长途数据库的履行状况,此刻就会发作in doublt的报错。此刻需求dba介入,且需求分多种状况进行处理。 然后我重起数据库,死锁进程也随侧重起了, 接下来康复分布式业务: ALTER SYSTEM DISABLE DISTRIBUTED RECOVERY ALTER SYSTEM ENABLE DISTRIBUTED RECOVERY 最终在敞开job守时 execute sys.dbms_ijob.broken(id,false,next_date); commit; 接下来在调查job 作业状况, 发现在next_date时刻届时使命运转成功。恩。。现在处理了一台的数据库同步毛病,剩余的另一台也就不必多少了。通过这2天,自己也觉得学到了许多,看来是没有压力就没有动力。。期望和我相同碰到了相同问题的人,我的处理方法能够供给协助。。毛病处理,能够抽根烟奖赏一下。。。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章