| xyz's profile逍遥者寒号的小屋BlogLists | Help |
逍遥者寒号的小屋———— 在北风中逍遥,在凛冽中寒号。 QQ:385079552 April, 2007 表级流复制基本操作(下)添加一个新的复制表源数据库添加附加日志ALTER TABLE "REP"."C" ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, FOREIGN KEY, UNIQUE INDEX) COLUMNS; 实例化准备DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'rep.c', supplemental_logging => 'keys'); 添加捕捉规则dbms_streams_adm.add_table_rules( table_name => '"REP"."C"', streams_type => 'CAPTURE', streams_name => '"TEST$CAP"', queue_name => '"STREAMADMIN"."TEST$CAPQ"', include_dml => TRUE, include_ddl => TRUE, include_tagged_lcr => TRUE, source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', inclusion_rule => TRUE); 添加传送规则dbms_streams_adm.add_table_propagation_rules( table_name => '"REP"."C"', streams_name => '', source_queue_name => '"STREAMADMIN"."TEST$CAPQ"', destination_queue_name => '"STREAMADMIN"."TEST$APPQ"@RMAN.REGRESS.RDBMS.DEV.US.ORACLE.COM', include_dml => TRUE, include_ddl => TRUE, include_tagged_lcr => TRUE, source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', inclusion_rule => TRUE, and_condition => NULL, queue_to_queue => TRUE); 目标数据库导入对象并实例化使用imp数据时加入参数STREAMS_INSTANTIATION=Y(生效) 或者得到源数据库的当前scn select dbms_flashback.get_system_change_number from dual;
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'rep.c', source_database_name => ' TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM ', instantiation_scn => 1234567); --scn号 添加应用规则dbms_streams_adm.add_table_rules( table_name => '"REP"."C"', streams_type => 'APPLY', streams_name => '', queue_name => '"STREAMADMIN"."TEST$APPQ"', include_dml => TRUE, include_ddl => TRUE, include_tagged_lcr => TRUE, source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', inclusion_rule => TRUE);
其他
DECLARE
tables DBMS_UTILITY.UNCL_ARRAY;
BEGIN
tables(1) := 'rep.a'; --要复制的表名
tables(2) := 'rep.b'; --要复制的表名
DBMS_STREAMS_ADM.MAINTAIN_TABLES(
table_names => tables, --要复制的表对象集
source_directory_object => NULL,
destination_directory_object => NULL,
source_database => ' TEST ', --源数据库
destination_database => 'RMAN ', --目标数据库
perform_actions => false, --立即执行还是生成脚本
script_name => 'configure_rep.sql', --生成脚本的名称
script_directory_object => 'SCRIPT_DIRECTORY', --生成脚本的目录(由create directory .. as ..创建)
bi_directional => false, --是否使用多源复制
include_ddl => false, --是否包括DDL语句
instantiation => DBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORK);
END;
/
启用/禁用捕捉进程dbms_capture_adm.start_capture( capture_name => '"TEST$CAP"');
dbms_capture_adm.stop_capture( capture_name => '"TEST$CAP"');
启用/禁用传输dbms_aqadm.enable_propagation_schedule( queue_name => '"STREAMADMIN"."RMAN$CAPQ"', destination => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', destination_queue => '"STREAMADMIN"."RMAN$APPQ"');
dbms_aqadm.disable_propagation_schedule( queue_name => '"STREAMADMIN"."TEST$CAPQ"', destination => 'CHARGE.REGRESS.RDBMS.DEV.US.ORACLE.COM', destination_queue => destn_q); 启用/禁用应用进程dbms_apply_adm.start_apply( apply_name => apply_nm_dqt);
dbms_apply_adm.stop_apply( apply_name => apply_nm_dqt);
加入负规则集(不传送本机应用标签的LCR) dbms_streams_adm.add_table_propagation_rules( table_name => '"REP"."A"', streams_name => '', source_queue_name => '"STREAMADMIN"."TEST$CAPQ"', destination_queue_name => '"STREAMADMIN"."TEST$APPQ"@RMAN.REGRESS.RDBMS.DEV.US.ORACLE.COM', include_dml => TRUE, include_ddl => FALSE, include_tagged_lcr => TRUE, source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', inclusion_rule => FALSE, and_condition => ':lcr.get_tag() = HEXTORAW ("00") ', --00为本机应用进程的标签 queue_to_queue => true);
加入update冲突解决DECLARE cols DBMS_UTILITY.NAME_ARRAY; BEGIN cols(1) := 'c1'; --列名 cols(2) := 'c2'; --列名 DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER( object_name => 'hr.jobs', --表名 method_name => 'OVERWRITE', --overwrite,discard,maximum,minmum,null resolution_column => 'job_title', -- column_list => cols); --列集合 END; / 自定义冲突解决BEGIN DBMS_APPLY_ADM.SET_DML_HANDLER( object_name => 'hr.locations', --表名 object_type => 'TABLE', -- operation_name => 'UPDATE', --升级冲突 error_handler => false, user_procedure => 'strmadmin.history_dml', --自定义存储过程 Null取消 apply_database_link => NULL, apply_name => NULL); END; / 自定义存储过程 CREATE OR REPLACE PROCEDURE history_dml(in_any IN ANYDATA) IS lcr SYS.LCR$_ROW_RECORD; rc PLS_INTEGER; BEGIN -- Access the LCR rc := in_any.GETOBJECT(lcr); -- Insert information about the LCR into the history_row_lcrs table INSERT INTO strmadmin.history_row_lcrs VALUES (SYSDATE, lcr.GET_SOURCE_DATABASE_NAME(), lcr.GET_COMMAND_TYPE(), lcr.GET_OBJECT_OWNER(), lcr.GET_OBJECT_NAME(), lcr.GET_TAG(), lcr.GET_TRANSACTION_ID(), lcr.GET_SCN(), lcr.GET_COMMIT_SCN, lcr.GET_VALUES('old'), lcr.GET_VALUES('new', 'n')); -- Apply row LCR lcr.EXECUTE(true); END;/ 表级流复制基本操作(上)创建单源流复制数据库源数据库创建流复制管理员CREATE USER STREAMADMIN IDENTIFIED BY STREAMADMIN DEFAULT TABLESPACE USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT CONNENT TO STREAMADMIN ; GRANT DBA TO STREAMADMIN ;
创建数据库链接CREATE DATABASE LINK "DEST" --数据库链接名,必须在netca中配置过 CONNECT TO "STREAMADMIN" --目的数据库时复制管理员 IDENTIFIED BY "STREAMADMIN" --目的数据库时复制管理员密码 USING 'DEST' ; --目的数据库名,必须在netca中配置过
创建捕捉队列dbms_streams_adm.set_up_queue( queue_table => '"STREAMADMIN"."TEST$CAPQT"', storage_clause => NULL, queue_name => '"STREAMADMIN"."TEST$CAPQ"', queue_user => '');
对要复制的表实例化准备对所有要复制的表执行 DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'rep.a' supplemental_logging => 'keys'); --默认值为key,如果不指定,将采在所有相约束上启用附加日志 添加附加日志ALTER TABLE "REP"."C" ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, FOREIGN KEY, UNIQUE INDEX) COLUMNS; 创建传送进程及传输规则对所有的表执行 dbms_streams_adm.add_table_propagation_rules( --加入传送规则(自动创建传送进程) table_name => '"REP"."A"', --传送表rep.A streams_name => '', -- source_queue_name => '"STREAMADMIN"."TEST$CAPQ"', --捕捉队列(源) destination_queue_name=>"STREAMADMIN"."TEST$APPQ"@DEST', --应用队列(目的) include_dml => TRUE, --捕捉dml include_ddl => TRUE, --捕捉dml include_tagged_lcr => TRUE, --传输带标签的LCR???? source_database => 'SOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE, --加入正规则集 and_condition => NULL, -- queue_to_queue => TURE); --10.2 以后为TURE 新目标数据库创建流复制管理员CREATE USER STREAMADMIN IDENTIFIED BY STREAMADMIN DEFAULT TABLESPACE USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT CONNENT TO STREAMADMIN ; GRANT DBA TO STREAMADMIN ; 创建应用队列dbms_streams_adm.set_up_queue( queue_table => '"STREAMADMIN"."TEST$APPQT"', --队列表?? storage_clause => NULL, -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --队列名 queue_user => ''); --
创建应用进程及应用规则dbms_streams_adm.add_table_rules( --创建应用规则(自动创建应用进程) table_name => '"REP"."A"', --要应用的表 streams_type => 'APPLY', --类型 streams_name => '', -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --应用队列名 include_dml => TRUE, --包括dml include_ddl => TRUE --包括ddl include_tagged_lcr => TRUE, --标签不为空也行 source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE); --加入正规则集 从源数据库导入数据并实例化scn使用imp数据时加入参数STREAMS_INSTANTIATION=Y 或者得到源数据库的当前scn select dbms_flashback.get_system_change_number from dual;
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'rep.a', source_database_name => ' TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM ', instantiation_scn => 1234567); --scn号 设置标签 (多个应用时,结构复杂时需要)dbms_apply_adm.alter_apply( apply_name => apply_nm_dqt, --应用名称,在dba_apply_progress中查看 apply_tag => hextoraw(00)); --00为本机应用标签
添加一个新的目标节点源数据库加入数据库链接CREATE DATABASE LINK "DEST" --数据库链接名,必须在netca中配置过 CONNECT TO "STREAMADMIN" --目的数据库时复制管理员 IDENTIFIED BY "STREAMADMIN" --目的数据库时复制管理员密码 USING 'DEST' ; --目的数据库名,必须在netca中配置过 对要复制的表实例化准备对所有要复制的表执行 DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'rep.a' supplemental_logging => 'keys'); --默认值为key,如果不指定,将采在所有相约束上启用附加日志 创建传送进程及传输规则对所有的表执行 dbms_streams_adm.add_table_propagation_rules( --加入传送规则(自动创建传送进程) table_name => '"REP"."A"', --传送表rep.A streams_name => '', -- source_queue_name => '"STREAMADMIN"."TEST$CAPQ"', --捕捉队列(源) destination_queue_name=>"STREAMADMIN"."TEST$APPQ"@DEST', --应用队列(目的) include_dml => TRUE, --捕捉dml include_ddl => TRUE, --捕捉dml include_tagged_lcr => TRUE, --传输带标签的LCR???? source_database => 'SOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE, -- and_condition => NULL, -- queue_to_queue => TURE); --10.2 以后为TURE 新目标数据库创建流复制管理员CREATE USER STREAMADMIN IDENTIFIED BY STREAMADMIN DEFAULT TABLESPACE USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT CONNENT TO STREAMADMIN ; GRANT DBA TO STREAMADMIN ; 创建应用队列dbms_streams_adm.set_up_queue( queue_table => '"STREAMADMIN"."TEST$APPQT"', --队列表?? storage_clause => NULL, -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --队列名 queue_user => ''); --
创建应用进程及应用规则dbms_streams_adm.add_table_rules( --创建应用规则(自动创建应用进程) table_name => '"REP"."A"', --要应用的表 streams_type => 'APPLY', --类型 streams_name => '', -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --应用队列名 include_dml => TRUE, --包括dml include_ddl => TRUE --包括ddl include_tagged_lcr => TRUE, --标签不为空也行 source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE); --创建并应用正规则集?? 从源数据库导入数据并实例化scn使用imp数据时加入参数STREAMS_INSTANTIATION=Y 或者得到源数据库的当前scn select dbms_flashback.get_system_change_number from dual;
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'rep.a', source_database_name => ' TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM ', instantiation_scn => 1234567); --scn号 其他: 设置标签 –多个应用时,结构复杂时需要 dbms_apply_adm.alter_apply( apply_name => apply_nm_dqt, --?? apply_tag => hextoraw(00));
March, 2007 Oracle优化监控数据缓冲区命中率:
(通常>90%,否则请调整sga_target或db_cache_size) select 100 - ( pr - x) / (cg + dg - x)*100 "db_buffer hit radio(%)" from
(select value pr from v$sysstat where name ='physical reads'), (select sum(value) x from v$sysstat where name ='physical reads direct' or name ='physical reads direct (lob)'), (select value cg from v$sysstat where name ='consistent gets'), (select value dg from v$sysstat where name = 'db block gets') / 共享池的命中率: (通常>95%,甚至99%,否则请调整sga_target或share_pool_size) select sum(pinhits-reloads)/sum(pins)*100 "Share pool hit radio(%)" from v$librarycache
/ 数据字典命中率: select (1 - (sum(getmisses) / sum(gets))) * 100 "Data Dictionary Hit Ratio(%)" from v$rowcache; / 排序区:
(disk与memory的比不能过高,否则调整sort_area_size select name,value from v$sysstat where name like '%sort%'
/ log_buffer:
(通常redo entries/redo buffer allocation retries > 100否则调整log_buffer): select name,value from v$sysstat where name in('redo entries','redo buffer allocation retries') / September, 2006 Rac10G点滴添加节点:
1.使用$ORA_CRS_HOME/oui/bin/addNode.sh添加CRS
2.使用DBCA的实例管理添加数据库
修改vip及vip的机器名:
1.停掉所有节点数据库,ASM.
2.停掉所有节点应用(srvctl stop nodeapps -n <node_name >)
3.srvctl remove nodeapps -n <node_name > [-f]
4.删除侦听配置(netca) 5.修改/etc/hosts
6.使用vipca配置
7.创建侦听(netca)
仅修改vip:
1.停掉所有节点数据库,ASM.
2.停掉所有节点应用(srvctl stop nodeapps -n <node_name >) 2.停掉所有节点crs(/etc/init.d/init.crs stop)
3.修改所有节点操作系统ip,/etc/hosts文件
4.起动所有节点crs(/etc/init.d/init.crs start)
5.停掉所有节点应用(srvctl stop nodeapps -n <node_name >)
6.修改所有节点vip(srvctl modify nodeapps -A 192.168.55.21/255.255.255.0/eth0)
7.启动所有节点应用(srvctl start nodeapps -n ora1)
8.启动所有节点数据库,ASM
racgvip
修改内外网连接
crsctl crs_stat crs_start,crs_stop
控制查看crs状态
srvctl
打开跟踪:export SRVM_TRACE=true
查看配置:srvctl config <object> ... 解决节点应用不能启动脚本:
srvctl stop nodeapps -n `hostname`
for app in `crs_stat|grep NAME|awk -F= '{print $2}'`
do if [ `crs_stat $app -t|grep \`hostname\` |awk '{print $4}'`""="UNKNOWN" ] then crs_stop $app fi done crs_start -all crs_stat -t|grep `hostname` 创建配置HTTP版EM :
emca -config dbcontrol db -repos create 解决HTTP版EM中文乱码:
cd $ORACLE_HOME/jre/1.4.2/lib/ mv font.properties font.properties.bak cp font.properties.zh_CN.Redhat font.properties rm $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/*.gif emctl stop dbconsole emctl start dbconsole HTTP版EM使用英文: IE->工具->Internet选项->常规->语言 加入英文 February, 2006 Oracle点滴ora-00607错误:对象与撤销表空间(或回滚段)要恢复的内容不对照时产生.重建撤销表空间(回滚段)或对象即可。 配置Oracle Rac的TAF时,如果服务端侦听使用的是机器名,则需要在客户端hosts文件中加入两个机器名的配置 February, 2006 OCFS详解OCFS目前不支持2.6内核,即不能再AS4上使用
(OCFS2已经发布)
当由 Oracle 使用时,OCFS 的原始性能类似于执行原始输入/输出的性能。代码本身几乎相同。
1.安装rpm包 ocfs-support-1.0.10-1.i386.rpm ocfs-2.4.9-e-1.0.13-1.i686.rpm ocfs-tools-1.0.10-1.i386.rpm ocfs-2.4.9-e-smp-1.0.13-1.i686.rpm(smp核) 2.分区
3.将分区格式化ocfs格式 图形界面下执行ocfstool 或执行 mkfs.ocfs -F -b 128 -L /var/opt/oracle/oradata/orcl -m /var/opt/oracle/oradata/orcl \-u `id -u oracle` -g `id -g oracle` -p 0775 /dev/sda8 ocfs_uid_gen ocfs load_ocfs 4.创建加载点 5.加载 使用ocfstools 或mount -t ocfs /dev/sda9 /ocfs ocfs load_ocfs
OCFS 只支持以下文件类型:
Oracle 数据库文件
联机重做日志文件 归档重做日志文件 控制文件 服务器参数文件 (SPFILE) Oracle 集群注册表 (OCR) 文件 CRS 表决磁盘。 (仲裁盘) ocfs.conf的编写: 更换网卡时 ocfs.conf内容如下: node_name = ora1
ip_address = 192.168.65.21 ip_port = 7000 comm_voting = 1 然后运行 ocfs_uid_gen -c 生成guid fsck.ocfs 检查ocfs设备 load_ocfs 载入ocfs模块 mkfs.ocfs 格式化ocfs分区 ocfs_uid_gen生成gid(在ocfs.conf中)
resizeofs 重新调整ocfs分区大小 tuneocfs 修改ocfs节点 -l 查看 -N 删除(OCFS分区保存有节点IP??第一次mount后写入??) ocfstool ocfs图形工具 ocfsextfinder ? debugocfs ? cp、dd 和类似的程序 — 选择一个选项,o_direct=yes,这使得该工具在打开文件时也使用 o_direct,加上此参数时,将不允许频繁访问此文件
如dd o_direct=yes if=/ocfs/foo of=/backup/foo.bak bs=1M (bs在512K至1M间)
|
||||
|
|