Maison base de données tutoriel mysql oracle高级复制需要注意的几点问题

oracle高级复制需要注意的几点问题

Jun 07, 2016 pm 03:31 PM
oracle 复制 Avis 问题 besoin 高级

高级复制需要注意的几点问题,谈谈自己的看法! 高级复制是 oracle 数据库的高级功能,它的维护比普通数据库复杂,下面是在已有高级复制数据库维护过程中出现过一些问题和解决办法。 1、稳定的物理链路:连接 服务器 的网络由于故障断开, 服务器 彼此之间数

高级复制需要注意的几点问题,谈谈自己的看法!

  
  高级复制是
oracle数据库的高级功能,它的维护比普通数据库复杂,下面是在已有高级复制数据库维护过程中出现过一些问题和解决办法。
  
  1、稳定的物理链路:连接
服务器的网络由于故障断开,服务器彼此之间数据就不能访问,数据无法传输;网络不稳定,数据就会发生丢包,不完整。
  
  2、传输速度方面要求较高:否则还不如单级版本。
  
  3、参与的
服务器不能长期不开机:这样会积压大量的延迟任务,导致数据无法进行发布。
  
  4、参与复制的表,不能在它上面直接执行任何DDL语句:因为ORACLE自动在参与复制的表上建立了内部的支持复制的TRIGGER和PACKAGE,在它上面直接执行任何DDL语句都会破坏这些复制支持。应该先SUSPEND要修改表所在的复制组,在REPICATION MANAGER中或调用REPCAT API执行DDL语句,然后重新GENERATE该表的复制支持,最后将复制组状态恢复为NORMAL。注意修改表结构的DDL语句中表名前一定要带上属主,并且最后没有分号。如果不小心直接执行了DDL语句,应该将该表移出复制环境,删掉,重新建立或从其它节点复制过来。
  
  5、修改一张表加一个字段,并设置缺省值,如 ALTER TABLE OWNER.TABLE_NAME ADD(FIELD_NAME VARCHAR2(20) DEFAULT 'AAA');在9i之前不能一次执行,要分成两部分执行:
  1、ALTER TABLE OWNER.TABLE_NAME ADD FIELD_NAME 
  2、ALTER TABLE OWNER.TABLE_NAME MODIFY FIELD_NAME DEFAULT 'AAA'
  这是因为执行任何DDL语句,需要SUSPEND复制组,此时复制表只能查询,不能执行其它DML语句。如果直接加上一个字段同时赋予缺省值,此时的处理是加上一个字段,并立刻给该字段赋上给定的缺省值,这后面的DML语句是不能执行的,所以会报错。而分成两部分执行,第一部分先加一个字段,第二部分再修改该字段的定义,不会发生插入缺省值的DML操作,因此可以执行。
  
  6、执行任何ADMIN REQUEST(对复制环境的管理命令)前,都要保证此时没有堆积的DEFERRED TRANS。
  
  7、执行任何ADMIN REQUEST,必须一步一步执行。因为ADMIN REQUEST的工作原理,是用一个REPCATLOG表保存ADMIN REQUEST语句,执行完一条消失一条,后面的再继续执行。如果前面一条没执行完,后面的ADMIN REQUEST就无法执行,而REPCATLOG表如果不为空,复制组就无法恢复为NORMAL。因此每次发出ADMIN REQUEST后,都要检查REPCATLOG表,当所有节点上的REPCATLOG表都为空后,才能发出下一条命令。
  
  8、如果发现REPCATLOG表中有无法执行的命令,可以重新APPLY或PURGE掉再重新发出命令执行。如果只是某一个节点上有遗留命令,可以在该节点上多APPLY几次执行。
  
  9、如果发出命令后一直没有响应,而ADMIN REQUEST又无法PURGE掉,现象类似死锁。可以试着BROKEN掉该ADMIN REQUEST对应的JOB,重新刷新命令。如果命令能继续执行,恢复JOB的状态。如果还不行,从V$SESSION 和V$LOCK中查出死锁,用ALTER SYSTEM KILL SESSION 杀掉死锁的进程,如果还是杀不掉。就需要查出类型为'RQ'的分布式死锁,用SID再从V$PROCESS、V$BGPROCESS查出对应的后台进程,从操作系统级杀掉后台进程的方式来解锁,可能还需要重启数据库。最后再恢复JOB的状态和其他涉及的复制环境状态。
  
  10、可以通过REPLICATION MANAGER或相关系统表查询复制环境情况,以REPADMIN用户登陆:
  查看复制组和复制对象:
  select gname,status from dba_repgroup;
  --其中gname 即为复制组名,status 表示状态
  select gname,oname,status from dba_repobject where type =’TABLE’ and oname =
  ‘table_name’;
  --要查询某张表在哪个复制组中,将table_name 替换成表名,注意表名一定要大写。

查看分布式状态:
  select job,what,next_sec,this_sec,last_sec,failures,broken from dba_jobs;
  failures 小于16,broken 为N 表示分布式状态正常
  
  查看数据库连接
  select * from dba_db_links;
  
  恢复传播复制任务
  当连接复制环境中数据库的网络出现问题,可能会造成复制任务的停止。具体现象
  表现为本地数据库的更新操作没有发布到远地数据库中。当出现这种情况时,请参考
  前面提到的查看分布式状态的方法,检查复制任务是否正常。如果failures 大于等于16,
  broken 为Y 表示分布式状态不正常,需要恢复传播复制任务。
  exec dbms_job.run(jobno);
  -- jobno 为在dba_jobs 表中ailures 大于等于16,broken 为Y 的job。
  
  查看执行出错的事务
  当分布式数据库出现不正常时,请执行下列语句,并根据查询的error_msg 来解决
  问题。
  select distinct origin_tran_db,destination,error_msg from deferror;
  
  尝试执行出错的事务
  根据查询的error_msg 解决了网络无法连接等问题后,请执行下列语句,并拷贝生
  成的拼接exec 语句在客户端执行。
  select ' exec dbms_defer_sys.execute_error ( ' ' ' || DEFERRED_TRAN_ID || ' ' ' , ' ' ' ||
  DESTINATION || ' ' ' )' from deferror;
  
  删除执行出错的事务
  可能会遇到这样一种状况,尝试执行出错的事务,该事务依旧执行不成功。如果此
  时deferror 表中的error_msg 都是“NO DATA FOUND”的错误,那么可以考虑删除执
  行出错的事务。请特别注意,必须确认已经解决了出错原因,并在每个分布式节点都
  尝试执行出错的事务后,才可以删除再次执行出错的事务,否则会造成分布式数据库
  的数据不一致。
  select ' exec dbms_defer_sys.delete_error ( ' ' ' || DEFERRED_TRAN_ID || ' ' ' , ' ' ' ||
  DESTINATION || ' ' ' )' from deferror;

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Combien de temps les journaux de la base de données Oracle seront-ils conservés ? Combien de temps les journaux de la base de données Oracle seront-ils conservés ? May 10, 2024 am 03:27 AM

La durée de conservation des journaux de la base de données Oracle dépend du type de journal et de la configuration, notamment : Redo logs : déterminé par la taille maximale configurée avec le paramètre "LOG_ARCHIVE_DEST". Redo logs archivés : Déterminé par la taille maximale configurée par le paramètre "DB_RECOVERY_FILE_DEST_SIZE". Redo logs en ligne : non archivés, perdus au redémarrage de la base de données et la durée de conservation est cohérente avec la durée d'exécution de l'instance. Journal d'audit : Configuré par le paramètre "AUDIT_TRAIL", conservé 30 jours par défaut.

Fonction pour calculer le nombre de jours entre deux dates dans Oracle Fonction pour calculer le nombre de jours entre deux dates dans Oracle May 08, 2024 pm 07:45 PM

La fonction dans Oracle pour calculer le nombre de jours entre deux dates est DATEDIFF(). L'utilisation spécifique est la suivante : Spécifiez l'unité d'intervalle de temps : intervalle (tel que jour, mois, année) Spécifiez deux valeurs de date : date1 et date2DATEDIFF(interval, date1, date2) Renvoie la différence en jours

L'ordre des étapes de démarrage de la base de données Oracle est L'ordre des étapes de démarrage de la base de données Oracle est May 10, 2024 am 01:48 AM

La séquence de démarrage de la base de données Oracle est la suivante : 1. Vérifiez les conditions préalables ; 2. Démarrez l'écouteur ; 3. Démarrez l'instance de base de données ; 4. Attendez que la base de données s'ouvre ; 6. Vérifiez l'état de la base de données ; . Activez le service (si nécessaire) ; 8. Testez la connexion.

Comment utiliser l'intervalle dans Oracle Comment utiliser l'intervalle dans Oracle May 08, 2024 pm 07:54 PM

Le type de données INTERVAL dans Oracle est utilisé pour représenter les intervalles de temps. La syntaxe est INTERVAL <precision> <unit> Vous pouvez utiliser des opérations d'addition, de soustraction, de multiplication et de division pour utiliser INTERVAL, ce qui convient aux scénarios tels que le stockage de données temporelles et. calculer les différences de dates.

Comment voir le nombre d'occurrences d'un certain caractère dans Oracle Comment voir le nombre d'occurrences d'un certain caractère dans Oracle May 09, 2024 pm 09:33 PM

Pour trouver le nombre d'occurrences d'un caractère dans Oracle, effectuez les étapes suivantes : Obtenez la longueur totale d'une chaîne ; Obtenez la longueur de la sous-chaîne dans laquelle un caractère apparaît. Comptez le nombre d'occurrences d'un caractère en soustrayant la longueur de la sous-chaîne ; de la longueur totale.

Exigences de configuration matérielle du serveur de base de données Oracle Exigences de configuration matérielle du serveur de base de données Oracle May 10, 2024 am 04:00 AM

Exigences de configuration matérielle du serveur de base de données Oracle : Processeur : multicœur, avec une fréquence principale d'au moins 2,5 GHz Pour les grandes bases de données, 32 cœurs ou plus sont recommandés. Mémoire : au moins 8 Go pour les petites bases de données, 16 à 64 Go pour les tailles moyennes, jusqu'à 512 Go ou plus pour les grandes bases de données ou les charges de travail lourdes. Stockage : disques SSD ou NVMe, matrices RAID pour la redondance et les performances. Réseau : réseau haut débit (10GbE ou supérieur), carte réseau dédiée, réseau à faible latence. Autres : alimentation stable, composants redondants, système d'exploitation et logiciels compatibles, dissipation thermique et système de refroidissement.

De quelle quantité de mémoire Oracle a-t-il besoin ? De quelle quantité de mémoire Oracle a-t-il besoin ? May 10, 2024 am 04:12 AM

La quantité de mémoire requise par Oracle dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis : pour le stockage des tampons de données, des tampons d'index, l'exécution d'instructions SQL et la gestion du cache du dictionnaire de données. Le montant exact dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis. Les meilleures pratiques incluent la définition de la taille SGA appropriée, le dimensionnement des composants SGA, l'utilisation d'AMM et la surveillance de l'utilisation de la mémoire.

Comment remplacer une chaîne dans Oracle Comment remplacer une chaîne dans Oracle May 08, 2024 pm 07:24 PM

La méthode de remplacement de chaînes dans Oracle consiste à utiliser la fonction REPLACE La syntaxe de cette fonction est : REPLACE(string, search_string, replace_string). Étapes d'utilisation : 1. Identifiez la sous-chaîne à remplacer ; 2. Déterminez la nouvelle chaîne pour remplacer la sous-chaîne ; 3. Utilisez la fonction REPLACE pour remplacer. L'utilisation avancée inclut : les remplacements multiples, le respect de la casse, le remplacement des caractères spéciaux, etc.

See all articles