169it科技资讯


当前位置:  数据库>其它
本页文章导读:
    ▪数据迁移:DataGuard配置      本次快速搭建单实例物理DataGuard,为解决某些同事担心“那如果我在primary里面使用提交的事务操作时按照rowid去检索数据,到备库执行的和主库操作不一致” 数据库软件安装过程不再赘述。 ......
    ▪QX项目实战-19.跨库数据同步      这是发自联调现场的文章。两套系统现在采用不同的数据结构来存储数据,故而需要使用一种办法来进行数据库的同步。这里我们采用存储过程来实现跨库的同步作业。即B库的B_table表的增删......
    ▪Mysql EXPLAIN      使用EXPLAIN可以看到以下SQL的执行情况 EXPLAIN SELECT * FROM questionnaire WHERE user_id='wqef' Explain具体含义参见此链接:http://dev.mysql.com/doc/refman/5.1/en/using-explain.html 作者:kevin_Luan 发......

[1]数据迁移:DataGuard配置
    来源: 互联网  发布时间: 2013-11-07

本次快速搭建单实例物理DataGuard,为解决某些同事担心“那如果我在primary里面使用提交的事务操作时按照rowid去检索数据,到备库执行的和主库操作不一致”

数据库软件安装过程不再赘述。


1: 检查主库否为 force logging .

select inst_id , force_logging from gv$database;
alter database force logging;

2:备库创建数据库实例 

oradim -new -sid tjcshow -startmode a


3:配置主/备库tnsnames,listener

增加主库TNSNAMES节点:

TJCSHOW1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.111.130)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tjcshow)
    )
  )


TJCSHOW2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.111.131)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tjcshow)
    )
  )



将主库listener/SQLNET/TNSNAMES拷贝到备库待用

修改监听:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
    (GLOBAL_DBNAME = tjcshow)
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (SID_NAME = tjcshow)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = DKD-O13022802)(PORT = 1521))
    )
  )



4:主库生成pfile,拷贝到备库作为基础参数文件,修改主/备库pfile

---PRIMAY
*.log_archive_config=''
*.log_archive_dest_1='LOCATION=C:\oracle\product\10.2.0\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_2='service=tjcshow2 lgwr async  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
*.log_archive_max_processes=1
*.fal_client='tjcshow1'
*.fal_server='tjcshow2'
*.DB_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow' 
*.LOG_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow'
*.standby_file_management=auto

---STSNDBY

*.log_archive_config=''
*.log_archive_dest_1='LOCATION=C:\oracle\product\10.2.0\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_2='service=tjcshow1 lgwr async  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
*.log_archive_max_processes=1
*.fal_client='tjcshow2'
*.fal_server='tjcshow1'
*.DB_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow' 
*.LOG_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow'
*.standby_file_management=auto




5:节点联通性测试,节点1 tnsping tjcshow1 tnsping tjcshow2 节点2 tnsping tjcshow1 tnsping tjcshow2

startup nomount pfile=c:\standby.ora;

c:\oracle\product\10.2.0\db_1\BIN>TNSPING.EXE tjcshow1

TNS Ping Utility for 64-bit Windows: Version 10.2.0.4.0 - Production on 13-MAR-2
013 09:23:20

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.1
11.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = tjcsh
ow)))
OK (0 msec)

c:\oracle\product\10.2.0\db_1\BIN>TNSPING.EXE tjcshow2

TNS Ping Utility for 64-bit Windows: Version 10.2.0.4.0 - Production on 13-MAR-2
013 09:23:21

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.1
11.131)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = tjcsh
ow)))
OK (0 msec)


6:RMAN 备份主库

sql 'alter system archive log current' ;
backup as compressed backupset full format='c:\backupset-%d_%s.bak' database include current controlfile for standby plus archivelog ;


7:拷贝文件,还原备库
Set oracle_sid=tjcshow
Startup pfile=’c:\standby.ora’ nomount;
rman target  sys/oracle@tjcshow1  auxiliary sys/oracle@tjcshow2 
duplicate target database for standby dorecover nofilenamecheck;


8:添加Standby redo log 重做日志组配置

( 01) 主库添加Standby Redo Log
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo004') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo005') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo006') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo007') SIZE 50M;

( 02) 备库添加Standby Redo Log
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo004') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo005') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo006') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo007') SIZE 50M;


9:启动到管理模式

shutdown immediate
startup nomount
alter database mount standby database
alter database recover managed standby database disconnect from session;

10:测试

@primary

--查看DG配置是否正确,主/备库查询:

select status,destination, error from v$archive_dest; 
VALID	C:\oracle\product\10.2.0\archivelog	
VALID	tjcshow2	
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE	

--创建表空间,测试表进行测试

create tablespace rowidtbs datafile 'C:\oracle\product\10.2.0\oradata\tjcshow\rowidtbs01.dbf' size 100M;
create table rowidt (id int,name varchar(20)) tablespace rowidtbs;


--插入1000条数据

begin
for x  in 1..1000 loop
insert into rowidt values(x,'oracledg');
end loop;
end;
/
--强制数据库日志切换
alter system switch logfile;


--将备库从恢复模式置于只读模式:

alter database recover managed standby database cancel;
alter database open ;

--查询备库数据

select rowid,id,name from test
AAAMpBAABAAAOvaAAA	1	oracle    
AAAMpBAABAAAOvaAAB	2	oracle    
AAAMpBAABAAAOvaAAC	3	oracle    
AAAMpBAABAAAOvaAAD	4	oracle    
AAAMpBAABAAAOvaAAE	5	oracle    
aaampbaabaaaovaaaf	6	oracle    
aaampbaabaaaovaaag	7	oracle    
............................

1000条测试数据全部同步到备库,且ROWID没有发生变化。


PS:摘录 Data Guard Concepts and Administration

Physical standby database  Provides a physically identical copy of the primary database, with on disk database structures that are identical to the primary database on a block-for-block basis. The database schema, including indexes, are the same. A physical standby database is kept synchronized with the primary database, through Redo Apply, which recovers the redo data received from the primary database and applies the redo to the physical standby database.

所以主库到备库的后的ROWID不会发生变化,所以同事的担心没有必要。

作者:oracle_baidu 发表于2013-3-13 9:57:42 原文链接
阅读:66 评论:0 查看评论

    
[2]QX项目实战-19.跨库数据同步
    来源: 互联网  发布时间: 2013-11-07

这是发自联调现场的文章。两套系统现在采用不同的数据结构来存储数据,故而需要使用一种办法来进行数据库的同步。这里我们采用存储过程来实现跨库的同步作业。即B库的B_table表的增删改操作,同步到A库的A_table表。因为两个表的列名即类型大小存在不一致,所以需要在存储过程中进行调试。
--使用sp_helptext查看某触发器具体内容

--exec sp_helptext ‘triggerName';

--查看系统所有的触发器
--select * from sysobjects where xtype='TR'

USE [db_QX]

--删除触发器
drop trigger deleteB2A,insertB2A,updateB2A;

--创建新增记录之后同步的触发器

create trigger  insertB2A
on B_table
after insert
as
declare @iiiii nvarchar(5)
declare @archivesno nvarchar(5)
declare @station nvarchar(30)
declare @latitude nvarchar(11)
declare @longitude nvarchar(13)
declare @altitude nvarchar(6)
declare @altitude_p nvarchar(6)
declare @height_windsensor nvarchar(4)
declare @height_windplatform nvarchar(4)
declare @builttime nvarchar(14)
select @iiiii=metadata_identifiers,@archivesno=station_file_number,
@station=station_referred_chinese,@latitude=latitude,
@longitude=longitude,@altitude=station_altitude,
@altitude_p=barometer_altitude,@height_windsensor=wind_speed_sensor_platform_height,
@height_windplatform=observation_platform_height,@builttime=tiem_up
from inserted
begin

--可以使用DB.dbo.Table的形式,访问其它数据库的信息
insert into A_Table(iiiii,archivesno,station,latitude,longitude,altitude,altitude_p,height_windsensor,height_windplatform,builttime,starttime,endtime) values(
@iiiii,@archivesno,@station,@latitude,@longitude,@altitude,@altitude_p,@height_windsensor,@height_windplatform,@builttime,@builttime,'99999999');
END

--删除记录之后同步的触发器

create trigger deleteB2A
on B_table
after delete
as declare @iiiii nvarchar(5)
select @iiiii=metadata_identifiers from deleted
begin
delete from A_Table where iiiii=@iiiii;
END

--修改记录之后同步的触发器

create trigger  updateB2A
on B_table
after update
as
declare @iiiii nvarchar(5)
declare @archivesno nvarchar(5)
declare @station nvarchar(30)
declare @latitude nvarchar(11)
declare @longitude nvarchar(13)
declare @altitude nvarchar(6)
declare @altitude_p nvarchar(6)
declare @height_windsensor nvarchar(4)
declare @height_windplatform nvarchar(4)
declare @builttime nvarchar(14)
select @iiiii=metadata_identifiers,@archivesno=station_file_number,
@station=station_referred_chinese,@latitude=latitude,
@longitude=longitude,@altitude=station_altitude,
@altitude_p=barometer_altitude,@height_windsensor=wind_speed_sensor_platform_height,
@height_windplatform=observation_platform_height,@builttime=tiem_up
from inserted
begin
update A_Table set
iiiii=@iiiii,archivesno=@archivesno,station=@station,latitude=@latitude,
longitude=@longitude,altitude=@altitude,altitude_p=@altitude_p,
height_windsensor=@height_windsensor,height_windplatform=@height_windplatform,
builttime=@builttime
where iiiii=@iiiii;
END

--这是测试语句
insert into B_table (
metadata_identifiers,station_referred_chinese,tiem_up,metadata_update_time,WMORegionName,WMORegionNumber,countryAreaName)
values('55555','滕州','19991213','1111-11-11','亚洲','Ⅱ','中国');

delete from B_table where metadata_identifiers='55555';

update B_table set station_referred_chinese ='滕州A' where metadata_identifiers= '55555'

--这是查看代码语句

select * from B_table;
select * from A_Table;

 

需要注意的是:在查看触发器的时候,需要注意触发器的级别,如服务器、数据库、数据表级别的数据库。执行上述代码时,create trigger 语句必须在执行语句的第一句。另外由于这三个触发器内部使用的变量有重名现象,所以他们不能同时执行,应该顺序依次新建。

作者:gongqingkui 发表于2013-3-13 9:13:54 原文链接
阅读:82 评论:0 查看评论

    
[3]Mysql EXPLAIN
    来源: 互联网  发布时间: 2013-11-07

使用EXPLAIN可以看到以下SQL的执行情况

EXPLAIN SELECT * FROM questionnaire WHERE user_id='wqef'


Explain具体含义参见此链接:http://dev.mysql.com/doc/refman/5.1/en/using-explain.html

作者:kevin_Luan 发表于2013-3-13 11:20:14 原文链接
阅读:57 评论:0 查看评论

    
最新技术文章:
▪gc buffer busy/gcs log flush sync与log file sync    ▪让你的PL/SQL更好用    ▪ADO.NET中的非脱机数据库查询
▪参数job_queue_processes与Oracle jobs    ▪11gR2游标共享新特性带来的一些问题以及_cursor    ▪_library_cache_advice和latch:shared pool、latch:shared poo
▪SQL: Date Utility    ▪DB2 分区表增加分区    ▪DB2第一步 — 创建表
▪oracle 数据库    ▪插入10万条记录测试    ▪rebuild index VS. rebuild index online
▪如何处理undo tablespace 表空间太大的问题    ▪ado执行存储过程中包含结果集获取输出参数为    ▪oracle函数的demo
▪Entity Framework 学习建议及自学资源    ▪存储过程的编写    ▪Linux/Unix shell 自动发送AWR report(二)
▪第二章 Oracle恢复内部原理(基础数据结构)    ▪Redis源码学习之【Tcp Socket封装】    ▪Java Jdbc减少与Oracle之间交互提升批量处理性能
▪南大通用GBase8a Vs Oracle11g 单机测试亲测    ▪oracle 中行列转换    ▪rhel下安装oracle10g+asm---测试环境搭建
▪Redis系列-主从复制配置    ▪MySQL索引与查询优化    ▪INDEX受到NULL值的影响
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...]
▪eclipse下建立esper的demo    ▪把oracle rac 转化为单机数据库    ▪Redis系列-存储篇sorted set主要操作函数小结
▪基本的SQL*Plus报表和命令    ▪druid简单教程    ▪11g调度--scheduler使用
▪EF基础一    ▪db2存储过程中循环语句while do的continue有没有    ▪oracle 创建DBLINK
▪DB2数据库备份还原    ▪Warning: prerequisite DBD::mysql 1 not found错误解决方    ▪innotop性能监视mysql,innodb工具
▪数据迁移:DataGuard配置    ▪QX项目实战-19.跨库数据同步    ▪Mysql EXPLAIN
▪Oracle 11g AWR 系列七:Active Session History (ASH) 报    ▪Oracle 11G新特性(共36个)    ▪父子节点问题
▪OEM简介及按钮乱码问题    ▪NoSql之MongoDB的常用类管理    ▪ORA-39700: database must be opened with UPGRADE option
▪node.js 访问redis数据库,pub/sub    ▪使用DBMS_REDEFINITION在线重定义分区表    ▪SQL Developer 使用问题与解决方法汇总
▪oralce 11g dataguard 概念    ▪ORA-30004 错误处理    ▪oracle分组函数rollup,cube
▪Sql Developer 使用问题与解决方法汇总    ▪Configure Oracle Dataguard Primary-ASM to Physical-ASM    ▪Oracle Data Guard 理论知识
▪Control File 恢复    ▪Oracle数据文件收缩    ▪Oracle 11g AWR 系列五:如何生成 AWR 报告?
▪Wireshark数据包分析实战(第2版)    ▪MySql用户权限控制    ▪db2和oracle查询序列区别
▪更新blob字段的存储过程    ▪MySQLReport分析报告三    ▪DB2中的序列
▪Oracle中DBMS_RANDOM.STRING 的用法    ▪SQL SERVER无法安装成功,sqlstp.log文件提示[未发    ▪Data Guard 部署物理备库的 10 大注意事项
▪万能数据库查询分析器使用技巧之(九)    ▪SQL 自定义Split函数    ▪视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的
▪Data Guard Standby_archive_dest 和 Log_archive_dest_n 的    ▪机房收费系统数据库设计(一)    ▪利用putty的SSH tunnel连接Oracle
▪DBCA建库偶遇ORA-27125    ▪使用PowerPivot建立简单的分析模型    ▪Linux/Unix shell 自动发送AWR report
▪写入到blob字段的存储过程    ▪关于JDBC中ResultSet接口的一点细节探究    ▪Data Guard 配置 Standby Redo Log
▪linux下redis的安装    ▪windows下redis的安装    ▪手动创建数据库步骤(简单翻译官方文档)
▪Ubuntu安装Mongodb    ▪SQL CLR应用    ▪redis的配置文件参数--详细说明
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号