搜档网
当前位置:搜档网 › oracle stream同步

oracle stream同步

oracle stream同步
oracle stream同步

Oracle Stream配置详细步骤

1 引言

Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现

1 引言

Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步。

解析归档日志这种技术现在应用的比较广泛,Quest公司的shareplex软件及DSG公司的realsync

都是这样的产品,一些公司利用这样的产品做应用级的容灾。但shareplex或是realsync都是十分昂贵的,因此你可以尝试用Stream这个Oracle提供的不用额外花钱的功能。Oracle Stream对生产库的影响是非常小的,从库可以是与主库不同的操作系统平台,你可以利用Oracle Stream复制几个从库,从库可用于查询、报表、容灾等不同的功能。本文不谈技术细节,只是以手把手的方式一步一步的带你把Stream的环境搭建起来,细节内容可以查联机文档。

2 概述

主数据库:

操作系统:Solaris 9

IP地址:192.168.10.35

数据库:Oracle 10.2.0.2

ORACLE_SID:prod

Global_name:prod

从数据库:

操作系统:AIX 5.2

IP地址:192.168.10.43

数据库:Oracle 10.2.0.3

ORACLE_SID:h10g

Global_name:h10g

3 环境准备

3.1 设定初始化参数

使用pfile的修改init.ora文件,使用spfile的通过alter system命令修改spile文件。主、从数据库分别执行如下的语句:

以下是引用片段:

Sqlplus ‘/ as sysdba’

alter system set aq_tm_processes=2 scope=both;

alter system set global_names=true scope=both;

alter system set job_queue_processes=10 scope=both;

alter system set parallel_max_servers=20 scope=both;

alter system set undo_retention=3600 scope=both;

alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;

alter system set streams_pool_size=25M scope=spfile;

alter system set utl_file_dir='*' scope=spfile;

alter system set open_links=4 scope=spfile;

执行完毕后重启数据库。

3.2 将数据库置为归档模式

设置log_archive_dest_1到相应的位置;设定log_archive_start为TRUE,即启用自动归档功能;设定log_archive_format指定归档日志的命令格式。

举例:

以下是引用片段:

sqlplus ‘/ as sysdba’

alter system set log_archive_dest_1=’location=/yang/arch’ scope=spfile;

alter system set log_archive_start=TRUE scope=spfile;

alter system set log_archive_format=’ arch%t_%s_%r.arc’ scope=spfile;

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;

数据库置为归档模式后,可以按如下方式检验一下:

以下是引用片段:

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /yang/arch

Oldest online log sequence 534

Next log sequence to archive 536

Current log sequence 536

3.3 创建stream 管理用户

3.3.1 创建主环境stream管理用户

以下是引用片段:

#以sysdba身份登录

connect / as sysdba

#创建主环境的Stream专用表空间

create tablespace tbs_stream datafile '/yang/oradata/prod/tbs_stream01.dbf'

size 100m autoextend on maxsize unlimited segment space management auto;

#将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间execute dbms_logmnr_d.set_tablespace('tbs_stream');

#创建Stream管理用户

create user strmadmin identified by strmadmin

default tablespace tbs_stream temporary tablespace temp;

#授权Stream管理用户

grant connect,resource,dba,aq_administrator_role to strmadmin;

begin

dbms_streams_auth.grant_admin_privilege(

grantee => 'strmadmin',

grant_privileges => true);

end;

/

3.3.2 创建从环境stream管理用户

以下是引用片段:

#以sysdba身份登录

connect / as sysdba

#创建Stream专用表空间,我的从库用了ASM,这一步也可以参见3.3.1

create tablespace tbs_stream datafile '+VGDATA/h10g/datafile/tbs_stream01.dbf'

size 100m autoextend on maxsize unlimited segment space management auto;

#同样,将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间execute dbms_logmnr_d.set_tablespace('tbs_stream');

#创建Stream管理用户

create user strmadmin identified by strmadmin

default tablespace tbs_stream temporary tablespace temp;

#授权Stream管理用户

grant connect,resource,dba,aq_administrator_role to strmadmin;

begin

dbms_streams_auth.grant_admin_privilege(

grantee => 'strmadmin',

grant_privileges => true);

end;

/

3.4 配置网络连接

3.4.1配置主环境tnsnames.ora

主数据库(tnsnames.ora)中添加从数据库的配置。

以下是引用片段:

H10G =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.43)(PORT = 1521))

)

(CONNECT_DATA =

(SID = h10g)

(SERVER = DEDICATED)

)

)

3.4.2配置从环境tnsnames.ora

以下是引用片段:

从数据库(tnsnames.ora)中添加主数据库的配置。

PROD =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.35)(PORT = 1521))

)

(CONNECT_DATA =

(SID = prod)

(SERVER = DEDICATED)

)

)

3.5 启用追加日志

可以基于Database级别或Table级别,启用追加日志(Supplemental Log)。在建立根据Schema粒

度进行复制的Oracle Stream环境中,如果确认Schema下所有Table都有合理的主键(Primary Key),则不再需要启用追加日志。

以下是引用片段:

#启用Database 追加日志

alter database add supplemental log data;

#启用Table追加日志

alter table add supplement log group log_group_name(table_column_name) always;

3.6 创建DBlink

根据Oracle 10gR2 Stream官方文档,针对主数据库建立的数据库链的名字必须和从数据库的global_name相同。

如果需要修改global_name,执行“alter database rename global_name to xxx”。

3.6.1创建主数据库数据库链

#以strmadmin身份,登录主数据库。

connect strmadmin/strmadmin

#建立数据库链

create database link h10g connect to strmadmin identified by strmadmin using 'h10g';

3.6.2创建从数据库数据库链

#以strmadmin身份,登录从数据库。

connect strmadmin/strmadmin

#建立数据库链

create database link prod connect to strmadmin identified by strmadmin using 'prod';

3.7 创建流队列

3.7.1创建Master流队列

以下是引用片段:

#以strmadmin身份,登录主数据库。

connect strmadmin/strmadmin

begin

dbms_streams_adm.set_up_queue(

queue_table => 'prod_queue_table',

queue_name => 'prod_queue');

end;

/

3.7.2创建Backup流队列

以下是引用片段:

#以strmadmin身份,登录从数据库。

connect strmadmin/strmadmin

begin

dbms_streams_adm.set_up_queue(

queue_table => 'h10g_queue_table',

queue_name => 'h10g_queue');

end;

/

3.8 创建捕获进程

以下是引用片段:

#以strmadmin身份,登录主数据库。提醒一下,本文档以hr用户做示例。

connect strmadmin/strmadmin

begin

dbms_streams_adm.add_schema_rules(

schema_name => 'hr',

streams_type => 'capture',

streams_name => 'capture_prod',

queue_name => 'strmadmin.prod_queue',

include_dml => true,

include_ddl => true,

include_tagged_lcr => false,

source_database => null,

inclusion_rule => true);

end;

/

3.9 实例化复制数据库

在主数据库环境中,执行如下Shell语句。如果从库的hr用户不存在,建立一个hr的空用户。

exp userid=hr/hr@prod file='/tmp/hr.dmp' object_consistent=y rows=y

imp userid=system/manager@h10g file='/tmp/hr.dmp' ignore=y commit=y log='/tmp/hr.log' streams_instantiation=y fromuser=hr touser=hr

3.10 创建传播进程

以下是引用片段:

#以strmadmin身份,登录主数据库。

connect strmadmin/strmadmin

begin

dbms_streams_adm.add_schema_propagation_rules(

schema_name => 'hr',

streams_name => 'prod_to_h10g',

source_queue_name => 'strmadmin.prod_queue',

destination_queue_name =>'strmadmin.h10g_queue@h10g',

include_dml => true,

include_ddl => true,

include_tagged_lcr => false,

source_database => 'prod',

inclusion_rule => true);

end;

/

#修改propagation休眠时间为0,表示实时传播LCR。

begin

dbms_aqadm.alter_propagation_schedule( queue_name => 'prod_queue',

destination => 'h10g',

latency => 0);

end;

/

3.11 创建应用进程

以下是引用片段:

#以strmadmin身份,登录从数据库。

connect strmadmin/strmadmin

begin

dbms_streams_adm.add_schema_rules(

schema_name => 'hr',

streams_type => 'apply',

streams_name => 'apply_h10g',

queue_name => 'strmadmin.h10g_queue',

include_dml => true,

include_ddl => true,

include_tagged_lcr => false,

source_database => 'prod',

inclusion_rule => true);

end;

/

3.12 启动STREAM

以下是引用片段:

#以strmadmin身份,登录从数据库。

connect strmadmin/strmadmin

#启动Apply进程

begin

dbms_apply_adm.start_apply(

apply_name => 'apply_h10g');

end;

/

#以strmadmin身份,登录主数据库。

connect strmadmin/strmadmin

#启动Capture进程

begin

dbms_capture_adm.start_capture(

capture_name => 'capture_prod');

end;

/

3.13 停止STREAM

以下是引用片段:

#以strmadmin身份,登录主数据库。

connect strmadmin/strmadmin

#停止Capture进程

begin

dbms_capture_adm.stop_capture(

capture_name => 'capture_prod');

end;

/

#以strmadmin身份,登录从数据库。

connect strmadmin/strmadmin

#停止Apply进程

begin

dbms_apply_adm.stop_apply(

apply_name => 'apply_h10g');

end;

/

3.14 清除所有配置信息

要清楚Stream配置信息,需要先执行3.13,停止Stream进程。

以下是引用片段:

#以strmadmin身份,登录主数据库。

connect strmadmin/strmadmin

exec DBMS_STREAMS_ADM.remove_streams_configuration();

#以strmadmin身份,登录从数据库。

connect strmadmin/strmadmin

exec DBMS_STREAMS_ADM.remove_streams_configuration();

4 测试场景

本文档建立了针对hr用户的Stream 复制环境,如果没有特别声明,以下测试场景均以hr用户身份执行。

4.1 建一张表测试

主数据库

SQL> CREATE TABLE TTT(id NUMBER PRIMARY KEY,

2 name VARCHAR2(50)

3 )

4 /

Table created.

从数据库

SQL> desc TTT

Name Null? Type

---------- -------- -------------

ID NOT NULL NUMBER

NAME VARCHAR2(50)

4.2 表中插入一行数据

主数据库

SQL> insert into ttt values (1,'sdfsdfsdfsdf');

1 row created.

SQL> commit;

Commit complete.

SQL>

从数据库

SQL> select * from TTT;

ID NAME

---------- --------------------

1 sdfsdfsdfsdf

4.3 变更一下表的结构,添加一列

主数据库

SQL> ALTER TABLE TTT ADD(age NUMBER(2));

Table altered

从数据库

SQL> desc TTT

Name Null? Type

----------- -------- --------------

ID NOT NULL NUMBER

NAME VARCHAR2(50)

AGE NUMBER(2)

4.4 将表换一个表空间

主数据库

SQL> SELECT table_name,tablespace_name FROM user_tables 2 WHERE table_name='TTT';

TABLE_NAME TABLESPACE_NAME

------------------------------ ------------------------------

TTT USERS

SQL> ALTER TABLE TTT MOVE TABLESPACE tbs_stream; Table altered

SQL> SELECT table_name,tablespace_name FROM user_tables WHERE table_name='TTT';

TABLE_NAME TABLESPACE_NAME

------------------------------ ------------------------------

TTT TBS_STREAM

从数据库

SQL> SELECT table_name,tablespace_name FROM user_tables WHERE table_name='TTT';

TABLE_NAME TABLESPACE_NAME

------------------------------ ------------------------------

TTT TBS_STREAM

4.5 表上Name列建一索引

主数据库

SQL> CREATE INDEX ttt_name_idx ON TTT(name);

Index created

从数据库

SQL> SELECT table_name, index_name FROM user_indexes WHERE table_name = 'TTT'; TABLE_NAME INDEX_NAME

------------------------------ ------------------------------

TTT TTT_NAME_IDX

TTT SYS_C005721

4.6 Rebuild索引测试

主数据库

SQL> ALTER INDEX ttt_name_idx REBUILD;

Index altered

从数据库

SQL> SELECT table_name, index_name FROM user_indexes WHERE table_name = 'TTT'; TABLE_NAME INDEX_NAME

------------------------------ ------------------------------

TTT TTT_NAME_IDX

TTT SYS_C005721

4.7 索引换一个表空间测试

主数据库

SQL> ALTER INDEX ttt_name_idx REBUILD TABLESPACE tbs_stream;

Index altered

从数据库

SQL> SELECT table_name,index_name,tablespace_name FROM user_indexes

WHERE table_name = 'TTT';

TABLE_NAME INDEX_NAME TABLESPACE_NAME

------------------------------ ------------------------------ ------------------------------

TTT TTT_NAME_IDX TBS_STREAM

TTT SYS_C005721 USERS

4.8 删除索引测试

主数据库

SQL> DROP INDEX ttt_name_idx;

Index dropped

从数据库

SQL> SELECT table_name,index_name,tablespace_name FROM user_indexes WHERE table_name = ‘TTT’;

TABLE_NAME INDEX_NAME TABLESPACE_NAME

------------------------------ ------------------------------ ------------------------------

TTT SYS_C005721 USERS

4.9 删除表测试

主数据库

SQL> DROP TABLE ttt;

Table dropped

从数据库

SQL> DESC ttt;

Object ttt does not exist.

4.10 建一张带有LOB类型字段的表测试

主数据库

SQL> CREATE TABLE tttclob(id NUMBER PRIMARY KEY, memo CLOB);

Table created

从数据库

SQL> DESC tttclob;

Name Null? Type

----------- -------- --------------

ID NOT NULL NUMBER

MEMO CLOB

4.11 表中插入一行数据

主数据库

SQL> INSERT INTO tttclob VALUES(1,'clob_test');

1 row inserted

SQL> commit;

Commit complete

从数据库

SQL> SELECT * FROM tttclob;

ID MEMO

---------- --------------------------------------------------------------------------------

1 clob_test

4.12 创建Type测试

主数据库

SQL> CREATE or REPLACE TYPE ttttype;

2 /

Type created

从数据库

SQL> SELECT * FROM user_types WHERE type_name='TTTTYPE';

TYPE_NAME TYPE_OID TYPECODE ATTRIBUTES METHODS PREDEFINED INCOMPLETE FINAL INSTANTIABLE SUPERTYPE_OWNER SUPERTYPE_NAME LOCAL_ATTRIBUTES LOCAL_METHODS TYPEID

------------------------------ -------------------------------- ------------------------------ ---------- ---------- ---------- ---------- ----- ------------ ------------------------------ ------------------------------ ---------------- -------------

--------------------------------

TTTTYPE 1B36AAF10DA8301DE040A8C0289A77B4 OBJECT 0 0 NO YES YES YES

4.13 删除Type测试

主数据库

SQL> DROP TYPE ttttype;

Type dropped

从数据库

SQL> SELECT * FROM user_types WHERE type_name='TTTTYPE';

TYPE_NAME TYPE_OID TYPECODE ATTRIBUTES METHODS PREDEFINED INCOMPLETE FINAL INSTANTIABLE SUPERTYPE_OWNER SUPERTYPE_NAME LOCAL_ATTRIBUTES LOCAL_METHODS TYPEID

------------------------------ -------------------------------- -

5 问题诊断

5.1 如何知道捕捉(Capture)进程是否运行正常?

以strmadmin身份,登录主数据库,执行如下语句:

SQL> SELECT CAPTURE_NAME,

2 QUEUE_NAME,

3 RULE_SET_NAME,

4 NEGATIVE_RULE_SET_NAME,

5 STATUS

6 FROM DBA_CAPTURE;

结果显示如下:

CAPTURE_NAME QUEUE_NAME

------------------------------ ------------------------------

RULE_SET_NAME NEGATIVE_RULE_SET_NAME STATUS

------------------------------ ------------------------------ --------

CAPTURE_PROD PROD_QUEUE

RULESET$_14 ENABLED

ENABLED

如果STATUS状态是ENABLED,表示Capture进程运行正常;

如果STATUS状态是DISABLED,表示Capture进程处于停止状态,只需重新启动即可;

如果STATUS状态是ABORTED,表示Capture进程非正常停止,查询相应的ERROR_NUMBER、ERROR_MESSAGE列可以得到详细的信息;同时,Oracle会在跟踪文件中记录该信息。

5.2 如何知道Captured LCR是否有传播GAP?

以strmadmin身份,登录主数据库,执行如下语句:

SQL> SELECT CAPTURE_NAME, QUEUE_NAME, STATUS, CAPTURED_SCN, APPLIED_SCN

2 FROM DBA_CAPTURE;

结果显示如下:

CAPTURE_NAME QUEUE_NAME STATUS

------------------------------ ------------------------------ --------

CAPTURED_SCN APPLIED_SCN

------------ -----------

CAPTURE_PROD PROD_QUEUE ENABLED

17023672 17023672

如果APPLIED_SCN小于CAPTURED_SCN,则表示在主数据库一端,要么LCR没有被dequeue,要么Propagation进程尚未传播到从数据库一端。

5.3 如何知道Appy进程是否运行正常?

以strmadmin身份,登录从数据库,执行如下语句:

SQL> SELECT apply_name, apply_captured, status FROM dba_apply;

结果显示如下:

APPLY_NAME APPLY_ STATUS

---------------------- ------ ----------------

APPLY_H10G YES ENABLED

如果STATUS状态是ENABLED,表示Apply进程运行正常;

如果STATUS状态是DISABLED,表示Apply进程处于停止状态,只需重新启动即可;

如果STATUS状态是ABORTED,表示Apply进程非正常停止,查询相应的ERROR_NUMBER、ERROR_MESSAGE列可以得到详细的信息;同时,可以查询DBA_APPLY_ERROR视图,了解详细的Apply错误信息。

6 结篇

通过如上的测试可以看出stream的功能还是十分强大的,通过配置Oracle Stream可以更大的提升数据库的可用性和安全性,如此一个好用且不用花费高昂额外费用的功能还是很值得一用的。

oracle stream同步

Oracle Stream配置详细步骤 1 引言 Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现 1 引言 Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步。 解析归档日志这种技术现在应用的比较广泛,Quest公司的shareplex软件及DSG公司的realsync 都是这样的产品,一些公司利用这样的产品做应用级的容灾。但shareplex或是realsync都是十分昂贵的,因此你可以尝试用Stream这个Oracle提供的不用额外花钱的功能。Oracle Stream对生产库的影响是非常小的,从库可以是与主库不同的操作系统平台,你可以利用Oracle Stream复制几个从库,从库可用于查询、报表、容灾等不同的功能。本文不谈技术细节,只是以手把手的方式一步一步的带你把Stream的环境搭建起来,细节内容可以查联机文档。 2 概述 主数据库: 操作系统:Solaris 9 IP地址:192.168.10.35 数据库:Oracle 10.2.0.2 ORACLE_SID:prod Global_name:prod 从数据库: 操作系统:AIX 5.2 IP地址:192.168.10.43

ORACLE数据备份与数据恢复方案

O R A C L E数据备份与数据恢 复方案 Prepared on 24 November 2020

摘要 结合金华电信IT系统目前正在实施的备份与恢复策略,重点介绍电信业务计算机管理系统(简称97系统)和营销支撑系统的ORALCE数据库备份和恢复方案。 Oracle数据库有三种标准的备份方法,它们分别是导出/导入 (EXP/IMP)、热备份和冷备份。要实现简单导出数据(Export)和导入数据(Import),增量导出/导入的按设定日期自动备份,可考虑,将该部分功能开发成可执行程序,然后结合操作系统整合的任务计划,实现特定时间符合备份规划的备份应用程序的运行,实现数据库的本级备份,结合ftp简单开发,实现多服务器的数据更新同步,实现数据备份的异地自动备份。 关键字:数据库远程异地集中备份 目录

一、前言 目前,数据已成为信息系统的基础核心和重要资源,同时也是各单位的宝贵财富,数据的丢失将导致直接经济损失和用户数据的丢失,严重影响对社会提供正常的服务。另一方面,随着信息技术的迅猛发展和广泛应用,业务数据还将会随业务的开展而快速增加。但由于系统故障,数据库有时可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如做了备份,恢复数据就显得很容易。由此可见,做好数据库的备份至关重要。因此,建立一个满足当前和将来的数据备份需求的备份系统是必不可少的。传统的数据备份方式主要采用主机内置或外置的磁带机对数据进行冷备份,这种方式在数据量不大、操作系统种类单一、服务器数量有限的情况下,不失为一种既经济又简明的备份手段。但随着计算机规模的扩大,数据量几何级的增长以及分布式网络环境的兴起,将越来越多的业务分布在不同的机器、不同的操作平台上,这种单机的人工冷备份方式越来越不适应当今分布式网络环境。 因此迫切需要建立一个集中的、自动在线的企业级备份系统。备份的内容应当包括基于业务的业务数据,又包括IT系统中重要的日志文件、参数文件、配置文件、控制文件等。本文以ORACLE数据库为例,结合金华电信的几个相关业务系统目前正在实施的备份方案,介绍ORACLE数据库的备份与恢复。 二、金华电信ORACLE数据库的备份与恢复方案 由于金华电信IT系统以前只采用逻辑备份方式进行数据库备份,速度较慢并且数据存储管理都很分散,甚至出现备份数据不完整的现象。为了提高备份数据的效率,提供可靠的数据备份,完善备份系统,保证备份数据的完整性,降低数据备份对网络和服务器的影响,对每个IT系统的备份数据进行集中管理,我们对备份工作进行了改进,将逻辑备份与物理备份相结合,在远程建立了一个异地集中、自动在线的备份系统即网络存储管理系统。(这里用到的物理备份指热备份)其具备的主要功能如下:(1)集中式管理 :网络存储备份管理系统对整个网络的数据进行管理。利用集中式管理工具的帮助,系统管理员可对全网的备份策略进行统一管理,备份服务器可以监控所有机器的备份作业,也可以修改备份策略,并可即时浏览所有目录。所有数据可以备份到同备份服

oracle数据库恢复方案

目录 数据库恢复方案 (1) 文档控制 (1) 一、相关概念 (3) 1,恢复的两个阶段 (3) 2,Oracle实例启动的三个阶段 (3) 3,RMAN信息的保存位置 (3) 二、完全恢复 (3) (一) 控制文件 (3) 1) 丢失部分控制文件: (3) 2) 丢失全部控制文件 (3) (二) 重做日志文件 (4) 1) 非当前使用的重做日志文件: (4)

2) 当前使用的重做日志文件(未归档): (4) (三) 数据文件 (4) 1) 无归档模式下的完全恢复 (4) 2) 归档模式下的完全恢复 (5) 三、不完全恢复 (6) (一) 基于SCN的不完全恢复 (6) 1) 准备工作 (6) 2) 使用RMAN进行恢复 (7) (二) 基于时间点的不完全恢复 (8) 1) 准备工作 (8) 2) 使用RMAN进行恢复 (8) 四、高级篇 (9)

(一) 使用RMAN进行异机同目录 (9) 1) 准备工作 (9) 2) 通过RMAN进行异机恢复 (10) (二)使用RMAN进行异机异目录 (11) 1) 准备工作 (11) 2) 通过RMAN进行异机恢复 (11) (三)使用RMAN进行在线数据块恢复 (14) 一、相关概念 1,恢复的两个阶段 数据库无论采取哪种方式进行恢复都分为Restore和Recover两个步骤。Restore(还原):把控制文件、重做日志文件和数据文件还原到正确位置。Recover(恢复):恢复还原后的数据文件,使数据库达到一致状态。

2,Oracle实例启动的三个阶段 Oracle实例启动经过三个阶段: l NOMOUNT(未装载):读入参数文件,验证参数文件中的目录是否存在。 l MOUNT(装载):读入参数文件指定位置的控制文件。 l OPEN(打开):验证控制文件中指定的重做日志文件和数据文件是否正确、数据文件是否一致,然后读入数据文件中的数据。 所以按照如下顺序使数据库正确打开。 1) SHUTDOWN(关闭)状态下,确保参数文件指定的文件夹存在,启动到NOMMUNT 状态。 2) NOMOUNT状态下,保证控制文件的位置和命名与参数文件中相同,控制文件中指定的重做日志文件和数据文件存在,然后启动到MOUNT状态。 3) MOUNT状态下,执行RMAN还原和恢复操作。

Oracle数据库同步技术

基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术。Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年 刚收购的一款叫做GoldenGate的数据同步软件。第三方厂商的数据同步技术有Quest公司的SharePlex 和DSG的RealSync。下面对这些技术逐一进行介绍。 一、DataGuard数据同步技术 DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。DataGuard 提供了三种日志传输(Redo Transport)方式,分别是ARCH传输、LGWR同步传输和LGWR异步传输。在上述三种日志传输方式的基础上,提供了三种数据保护模式,即最大性能(Maximum Performance Mode)、最大保护(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保护模式 和最大可用模式要求日志传输必须用LGWR同步传输方式,最大性能模式下可用任何一种日志传输方式。 最大性能模式:这种模式是默认的数据保护模式,在不影响源数据库性能的条件下提供尽可能高的 数据保护等级。在该种模式下,一旦日志数据写到源数据库的联机日志文件,事务即可提交,不必等待日 志写到目标数据库,如果网络带宽充足,该种模式可提供类似于最大可用模式的数据保护等级。 最大保护模式:在这种模式下,日志数据必须同时写到源数据库的联机日志文件和至少一个目标库 的备用日志文件(standby redo log),事务才能提交。这种模式可确保数据零丢失,但代价是源数据库的可用性,一旦日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库将会被关闭。这也是目前市场上唯一的一种可确保数据零丢失的数据同步解决方案。 最大可用模式:这种模式在不牺牲源数据库可用性的条件下提供了尽可能高的数据保护等级。与最 大保护模式一样,日志数据需同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交,与最大保护模式不同的是,如果日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库不会被关闭,而是运行在最大性能模式下,待故障解决并将延迟的日志成功应用在目标库上以后,源数据库将会自动回到最大可用模式下。 根据在目标库上日志应用(Log Apply)方式的不同,DataGuard可分为Physical Standby(Redo Apply)和Logical Standby(SQL Apply)两种。 Physical Standby数据库,在这种方式下,目标库通过介质恢复的方式保持与源数据库同步,这种方 式支持任何类型的数据对象和数据类型,一些对数据库物理结构的操作如数据文件的添加,删除等也可支持。如果需要,Physical Standby数据库可以只读方式打开,用于报表查询、数据校验等操作,待这些操 作完成后再将数据库置于日志应用模式下。 Logical Standby数据库,在这种方式下,目标库处于打开状态,通过LogMiner挖掘从源数据库传 输过来的日志,构造成SQL语句,然后在目标库上执行这些SQL,使之与源数据库保持同步。由于数据 库处于打开状态,因此可以在SQL Apply更新数据库的同时将原来在源数据库上执行的一些查询、报表等操作放到目标库上来执行,以减轻源数据库的压力,提高其性能。 DataGuard数据同步技术有以下优势: 1)Oracle数据库自身内置的功能,与每个Oracle新版本的新特性(如ASM)都完全兼容,且不 需要另外付费; 2)配置管理较简单,不需要熟悉其他第三方的软件产品; 3)Physical Standby数据库支持任何类型的数据对象和数据类型;

Oracle Export/Import数据库备份与恢复的三种方法

Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1)、表方式(T方式),将指定表的数据导出。 (2)、用户方式(U方式),将指定用户的所有对象及数据导出。 (3)、全库方式(Full方式),瘵数据库中的所有对象导出。 数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。 2、增量导出/导入 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。 增量导出包括三种类型: (1)、“完全”增量导出(Complete) 即备份三个数据库,比如: exp system/manager inctype=complete file=040731.dmp (2)、“增量型”增量导出 备份上一次备份后改变的数据,比如: exp system/manager inctype=incremental file=040731.dmp

将SQLSERVER中的数据同步到ORACLE中

如何将SQLServer2005中的数据同步到Oracle中 有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。 1.在Oracle中建立对应的contract 和contract_project表,需要同步哪些字段我们就建那些字段到O racle表中。 这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行: SELECT* FROM msdb.dbo.MSdatatype_mappings SELECT* FROM msdb.dbo.sysdatatypemappings 来查看SQLServer和其他数据库系统的数据类型对应关系。第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。 ORACLE bigint NUMBER1931 ORACLE binary BLOB NULL01 ORACLE binary RAW-141 ORACLE bit NUMBER131 ORACLE char CHAR-141 ORACLE char CLOB NULL01 ORACLE char VARCHAR2-141 ORACLE datetime DATE NULL01 ORACLE decimal NUMBER-131 ORACLE double precision FLOAT NULL01 ORACLE float FLOAT NULL01 ORACLE image BLOB NULL01 ORACLE int NUMBER1031 ORACLE money NUMBER1931 ORACLE nchar NCHAR-141 ORACLE nchar NCLOB NULL01 ORACLE ntext NCLOB NULL01 ORACLE numeric NUMBER-131 ORACLE nvarchar NCLOB NULL01 ORACLE nvarchar NVARCHAR2 -141 ORACLE nvarchar(max) NCLOB NULL01 ORACLE real REAL NULL01 ORACLE smalldatetime DATE NULL01 ORACLE smallint NUMBER531 ORACLE smallmoney NUMBER1031

Oracle数据库恢复

Oracle 数据库恢复 一、停止ORACLE数据库 用oracle用户登录,用sqlplus的sysdba用户登录,执行shutdown immediate oracle@JSBC-SIHUA-DB01:~> sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on Mon Feb 6 14:02:45 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn /as sysdba Connected. SQL> shutdown immediate SQL>quit 停止监听 oracle@JSBC-SIHUA-DB01:~> lsnrctl stop oracle@JSBC-SIHUA-DB01:~> ps -ef |grep ora root 4655 4524 0 Nov11 ? 00:00:48 hald-addon-storage: polling /dev/sr0 (every 16 sec) root 42514 42162 0 11:40 pts/0 00:00:00 su - oracle oracle 42515 42514 0 11:40 pts/0 00:00:00 -bash root 42853 42815 0 12:02 pts/2 00:00:00 su - oracle oracle 42854 42853 0 12:02 pts/2 00:00:00 -bash root 42924 42889 0 12:03 pts/1 00:00:00 su - oracle oracle 42925 42924 0 12:03 pts/1 00:00:00 -bash oracle 42975 42854 0 12:09 pts/2 00:00:00 ps -ef oracle 42976 42854 0 12:09 pts/2 00:00:00 grep ora 二、数据库备份 #root用户,创建sihua.bak目录 JSBC-SIHUA-DB01:/oradata # mkdir sihua.bak JSBC-SIHUA-DB01:/oradata # chown oracle:dba /oradata/sihua.bak JSBC-SIHUA-DB01:/oradata # ll total 24 drwx------ 2 root root 16384 Sep 16 11:53 lost+found drwxr-x--- 4 oracle dba 4096 Nov 8 14:16 sihua drwxr-xr-x 2 oracle dba 4096 Nov 28 12:15 sihua.bak #oracle用户 JSBC-SIHUA-DB01:/oradata # su - oracle oracle@JSBC-SIHUA-DB01:~> cd /oradata oracle@JSBC-SIHUA-DB01:/oradata> cp -r sihua sihua.bak oracle@JSBC-SIHUA-DB01:/oradata> cd sihua.bak/ oracle@JSBC-SIHUA-DB01:/oradata/sihua.bak> cd sihua/

oracle跨实例数据同步

Oracle 快照及dblink使用(两台服务器数据同步)跨ORACLE实例数据同步(物化视图应用) 名词说明:源——被同步的数据库 -- 目的——要同步到的数据库 /*一、创建dblink:*/ --1、在目的数据库上,创建dblin drop public database link dblink_anson; Create public database link dblink_anson Connect to lg identified by lg using 'SDLGDB'; --源数据库的用户名、密码、服务器名k /*二、创建快照:*/ --1、在源和目的数据库上同时执行一下语句,创建要被同步的表 drop table tb_anson; create table tb_anson(c1 varchar2(12)); alter table tb_anson add constraint pk_anson primary key (C1);

--2、在目的数据库上,测试dblink select * from tb_anson@dblink_anson; select * from tb_anson; --3、在目的数据库上,创建要同步表的快照日志 Create snapshot log on tb_anson; --4、创建快照,快照(被同步(源)数据库服务必须启动) Create snapshot sn_anson as select * from tb_anson@dblink_anson; --5、设置快照刷新时间 Alter snapshot anson refresh fast Start with sysdate+1/24*60 next sysdate+10/24*60; --oracle自动在1分钟后进行第一次快速刷新,以后每隔10分钟快速刷新一次 Alter snapshot anson refresh complete Start with sysdate+30/24*60*60 next sysdate+1;

Oracle数据仓库-电信行业应用案例

转眼,从事电信行业BI/DW已经有三年时间了,一直想写点东西,给大家共同分享,感谢ERP 100给我了一个展示的平台! 连载时间:一周一篇 连载提纲: 第一篇数据仓库建设目标、系统规模及项目面临的技术挑战 第二篇选择数据仓库平台的考虑 第三篇选择Oracle产品的原因 第四篇系统现状分析、DW数据仓库建设原则及整体规划的实现 第五篇整体规划的实现、新增应用优先级的确定及螺旋式建设方法 第六篇数据仓库的效益、成本和风险控制 第七篇数据模型设计方法 第八篇构建闭环的信息流、数据模型-分层设计、DW中的数据功能划分 第九篇数据抽取策略、数据抽取过程管理、对脏数据的管理、数据去重及元数据管理及 第十篇典型的应用流程、主题分析及应用推广方法 (第一篇)数据仓库建设目标、系统规模及项目面临的技术挑战 1 数据仓库项目建设目标: 建立统一的数据信息平台,实现客户资料和生产数据的集中存储。利用先进的数据仓库技术和决策分析技术为市场营销和客户服务工作提供有效的支撑: 2 目前系统规模: 包含12个月的话单;数据库容量为65TB,其中原始数据为25TB;最大的表包含1800亿话单

3 项目面临的技术挑战: 数据存储-系统要求存储12-18个月的详单数据; 数据装载-按小时装载详单数据,要求每天在8小时内装载5亿条详单;高峰时一个小时装载6500万条详单;在8小时内同时完成1亿7000万个汇总操作 数据访问-支持680个并发用户,支持8000个系统用户;5%的预定义查询操作在5秒钟内完成;每秒钟23个查询操作 Sina微薄互动地址:https://www.sodocs.net/doc/093968341.html,/2186879022/zDx5x29Cw 感谢大家的参与和鼓励,pathwide的建议很好,下面列举出该连载的计划提纲,如下: 连载周期:一周一篇 连载提纲: 第一篇数据仓库建设目标、系统规模及项目面临的技术挑战 第二篇选择数据仓库平台的考虑 第三篇选择Oracle产品的原因 第四篇系统现状分析、DW数据仓库建设原则及整体规划的实现 第五篇整体规划的实现、新增应用优先级的确定及螺旋式建设方法 第六篇数据仓库的效益、成本和风险控制 第七篇数据模型设计方法 第八篇构建闭环的信息流、数据模型-分层设计、DW中的数据功能划分 第九篇数据抽取策略、数据抽取过程管理、对脏数据的管理、数据去重及元数据管理及 第十篇典型的应用流程、主题分析及应用推广方法 希望大家积极参与,共同分享BI/DW的项目经验,同时,有不到位的地方,还请大家多多指正,谢谢! 选择数据仓库平台时的考虑 4 选择数据仓库平台时的考虑 4.1 强大的ETL支持能力-支持按小时的数据装载 4.2 高效的数据访问-硬件的支持:多CPU 大内存并发处理 分区技术 索引技术 数据库内置分析能力 4.3 高可用性7 * 24小时不间断运行 4.4 数据访问每秒钟23到100个并发查询操作; 95%的查询在1秒内完成 4.5 数据表分区-混合分区 按地区建立列表分区; 按时间建立范围分区; 4.6 可传输的表空间 操作系统文件的直接复制;不需要数据的导入、导出

实验8 Oracle数据库备份与恢复

实验8 Oracle数据库备份与恢复 1 实验目的 (1)掌握Oracle数据库各种物理备份方法。 (2)掌握Oracle数据库各种物理恢复方法。 (3)掌握利用RMAN工具进行数据库的备份与恢复。 (4)掌握数据的导入与导出操作。 2 实验要求 (1)对BOOKSALES数据库进行一次冷备份。 (2)对BOOKSALES数据库进行一次热备份。 (3)利用RMAN工具对BOOKSALES数据库的数据文件、表空间、控制文件、初始化参数文件、 归档日志文件进行备份。 (4)利用热备份恢复数据库。 (5)利用RMAN备份恢复数据库。 (6)利用备份进行数据库的不完全恢复。 3 实验步骤 (1)关闭BOOKSALES数据库,进行一次完全冷备份。 select file_name from dba_data_files; select member from v$logfile; select value from v$parameter where name='control_files';

(2)启动数据库后,在数据库中创建一个名为cold表,并插入数据,以改变数据库的状态。 CREATE TABLE COLD( ID NUMBER PRIMARY KEY, NAME VARCHAR2(25) );

(3)利用数据库冷备份恢复BOOKSALES数据库到备份时刻的状态并查看恢复后是否存在cold表。 (4)将BOOKSALES数据库设置为归档模式。 shutdown immediate 正常关闭数据 startup mount;将数据库启动到mount状态 3)、关闭flash闪回数据库模式,如果不关闭的话,在后面关闭归档日志的时候就会出现讨厌的ora-38774错误。 alter database flashback off alter database archivelog;发出设置归档模式的命令 alter database open;打开数据库 再次正常关闭数据库,并备份所有的数据文件和控制文件 archive log list;在将数据库设置为归档模式后,可以执行此命令进行确认 Database log mode 为Archive Mode说明当前的数据库为归档模式 Automatic archival为Enable说明启动了自动归档。

提升数据保护:Oracle数据仓库的实时数据采集

提升数据保护:Oracle数据仓库的实时数据采集在使用数据仓库软件时,最常见的约束之一是源系统数据批量提取处理时的可用时间窗口。通常,极其耗费资源的提取流程必须在非工作时间进行,而且仅限于访问关键的源系统。 低影响实时数据整合软件可以释放系统的批处理时间。当提取组件使用非侵入式方法时,如通过读取数据库事务日志,只会捕捉发生变化的数据,不会对源系统产生影响。因此,数据提取流程可以在任意时段全天候执行,即使用户在线也可以。 当以实时方式提取数据时,虽然必须改变数据采集流程中各个元素支持实时数据的方式,但是这些数据可以带来不一般的业务价值。而且,这些数据必须得到有效的保护,同时也很难针对这些不停变化的数据应用灾难恢复和备份技术。 但是,在数据仓库中应用实时数据整合的技术也可以进一步保护数据。毕竟,实时移动数据的技术也可以实时操作数据,从而形成一个数据保护技术入口。但是,变化数据的速度和效率可能会受制于数据保护流程的延迟。

这意味着,在转到整合数据仓库的主动数据采集模式时,首要考虑的问题之一是数据经过IT系统的流程和可能产生的延迟。换而言之,实时数据整合要求理解变化的数据,以及促进或妨碍这种变化的组件。 显然,企业希望保护他们的数据。然而,随着数据容量需求的增长,存储技术也成为业务持续性依赖的重要业务资产。而且,随着实时分析成为业务流程的一部分,它也归入到业务持续性的范畴之中。实现数据安全性和持续性的最基本方法是硬件或软件复制,它会自动保存第二个关键数据副本。此外,自行创建或基于开源软件创建的备份方法也不存在。 企业级数据管理应用主要涉及5个重要领域:灾难恢复、高可用性、备份、数据处理性能和更高级数据库移植。这促使IT不停地追寻先进技术,如实现数据整合及其相关基础架构元素。此外,这些战略投资能够提供符合预算的资源,在加快实时技术应用的同时,提高投资回报和修正实时数据整合项目的商业提案。

浅谈Oracle 数据库之间数据同步方案

随着信息技术的飞速发展,企业信息化建设的不断深入,使得企业业务系统数量不断增加。这时,各业务系统之间数据交互,各子业务系统与核心业务系统之间数据交互,诸如此类场景的应用需求不断出现。因此,IT部门应对此类需求的压力越来越大。比较突出的问题,主要有实时性与性能的冲突,数据交互方案的安全性与健壮性等。下面浅谈下Oracle数据库之间数据同步方案,不涉及方案的好坏选择,可供参考。 Oracle 提供的数据同步方案: 1,比较原始的,触发器/Job + DBLINK的方式,可同步和定时刷新。 2,物化视图刷新的方式,有增量刷新和完全刷新两种模式,定时刷新。 3,高级复制,分为多主复制和物化视图复制两种模式。其中多主复制能进行双向同步复制和异步复制,物化视图用于单向复制,定时刷新,与2类似。 4,流复制,可实时和非实时同步。 5,GoldenGate复制,Oracle新买的复制产品,后面应该会取代流复制。它不仅能提供Oracle数据库之间的数据复制支持,还支持在不同种数据库之间的数据同步,也可设置实时和非实时同步。 6,DataGurd,此技术主要用于灾备方案,不过在最新11gR2版本中加入了备库实时应用日志,同时能open 提供read only访问的功能。因此,可以作为读写分离,或者作为report数据库,降低系统负载的一个好的方案。 其中上面1,2,3,是采用Oracle数据库内部的机制来实现,而4,5,6是采用挖掘数据库日志的方式实现的。因此,后面3中方式在性能上会更好些。 第三方提供的数据同步方案: 主要根据实现机制分为两大类: 1,采用挖掘数据库日志的方式实现 市场上用的比较多的,如Quest SharePlex, DSG RealSync 。此类软件与Oracle 新收购的GoldenGate 工具类似。 2,采用相关软件在存储级进行复制 IBM,EMC等存储厂商可以实现,使用第三方存储管理软件,如Veritas Replication也可实现。此类方式应用场景与上面6类似。

Oracle数据库文件及恢复方法

1参数文件 对于参数文件,启动根据如下顺序查找参数文件,先查找spfile.ora,然后查找init.ora,若两者均查找不到,则无法创建和启动instance。确认当前使用的是spfile/pfile可通过sql语句查询(show parameter spfile) 一般情况下pfile保存在$ORACLE_HOME/dbs下,其中内容制定SPFILE位置,SPFILE保存在裸设备上,主被机共享。参数文件中保存数据库启动的初始参数,如控制文件位置等。 1.1参数文件恢复: 如果损坏或丢失,从其他机器拷贝一个到$ORACLE_HOME/dbs %sqlplus / as sysdba SQL>startup pfile=’/dbs/’; 2控制文件 数据库启动到nomount状态后,可以查询v$parameter视图,获得控制文件信息,这部分信息来自启动的参数文件,oracle从参数文件spfile/pfile中获得控制文件的位置信息,找到控制文件,启动到MOUNT状态下,可以查询v$controlfile视图获得关于控制文件的信息,可以通过sql语句(select * from v$controlfile;),数据库读取控制文件controlfile 中的内容,并按照控制文件中指定的参数找到相应的数据文件,并启动数据库的归档或非归档状态。 控制文件中包含的内容 数据库的名字、ID、创建的时间戳

表空间的名字 联机日志文件、数据文件的位置、个数、名字 联机日志的Sequence号码 检查点的信息 撤销段的开始或结束 归档信息 备份信息 2.1控制文件恢复: 损坏或丢失部分控制文件: SQL>shutdown immediate; SQL>startup nomount; 修改数据库控制文件,将坏的那个排除在外: SQL>alter system set control_files='+DG_ORA/ora11g/','+DG_ORA/ora11g/' scop e=spfile"; SQL>alter database open; 损坏或丢失全部控制文件: (获取恢复脚本SQL>alter database backup controlfile to trace;) STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "ORA11G" NORESETLOGS FORCE LOGGING ARCHIVELOG MAXLOGFILES 200 MAXLOGMEMBERS 3 MAXDATAFILES 1024 MAXINSTANCES 8 MAXLOGHISTORY 2920 LOGFILE GROUP 1 '+DG_ORA/ora11g/ora_redo01_1' SIZE 1000M BLOCKSIZE 512, GROUP 2 '+DG_ORA/ora11g/ora_redo02_2' SIZE 1000M BLOCKSIZE 512, GROUP 3 '+DG_ORA/ora11g/ora_redo03_3' SIZE 1000M BLOCKSIZE 512, GROUP 4 '+DG_ORA/ora11g/ora_redo04_4' SIZE 1000M BLOCKSIZE 512, GROUP 5 '+DG_ORA/ora11g/ora_redo05_5' SIZE 1000M BLOCKSIZE 512,

Oracle数据库之间数据同步

Oracle数据库之间数据同步 项目中开发库与测试数据库分离,其中某些系统表数据与基础资料数据经常需要进行同步,为方便完成指定数据表的同步操作,可以采用dblink结合dbjob方法完成,简单方便。 操作环境:此Oracle数据库服务器ip为ip1,有dbcenter与dbbranch两个库,一般需要将dbcenter的表数据同步到dbbranch,dbcenter为源库,dbbranch为目标库,具体步骤如下: 1.在源库创建到目标库的dblink create public database link dbcenter connect to username identified by userpassword using ' (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ' ; 在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。 2.成功后验证dblink select sysdate from dual@dbcenter; 3.建立存储过程获取数据 create or replace procedure job_sync() is begin Select * from test@dbcenter; end job_sync; 4.为方便每次需要同步时自动完成同步工作,采用oraclejobs完成定时工作:

Oracle数据库恢复案例

Oracle数据库恢复案例 当我们在使用Oracle数据库时,突然断电,造成很多问题,致使旧数据丢失,影响了数据的正确性,破坏了数据库。此时,用户急切需求恢复数据。本文以此为例,讲述数据库数据恢复。 一、案例描述: 数据库因突然断电,数据库启库报system01.dbf需要更多的恢复来保持一致性,数据库无法打开;数据库没有备份,归档日志也不连续。客户提供了数据库的在线文件,急需恢复zxfg用户下的数据。 二、恢复流程: 1 数据库的故障检测 2 尝试挂起数据库并修复数据库 3解析数据文件 4验证数据 5导出数据与交付数据(导入) 三、恢复数据 1数据库的故障检测 利用DBV 命令检测数据文件的完整性 结果如下:

分析结果发现SYSAUX01.DBF文件数据块(Data)检测失败40页,索引页(Index)检测失败29页,说明SYSAUX01.DBF存在坏块。 结论:通过dbv对数据文件的完整性检验,SYSAUX01.DBF存在坏块,其他检测的文件完整。 2 用客户的数据库本地挂起数据库,尝试修复数据库。 2.1创建新的OS :windows server 2008 x86,安装oracle 11.2.0.1.0 for 32-bit 版本数据库,挂起数据库 起库报ORA-01110错误,System01.dbf需要更多一致性恢复。使用recover database 命令,利用在线日志做介质恢复。

数据库的控制文件已被修改,需要使用控制文件恢复数据库 恢复数据库需要2016_01_19的11号归档日志。由于归档日志丢失,使用cancel 参数进行不完全恢复。 再次执行alter database open 命令,数据库打开。

Oracle数据仓库中的OLAP及ODM技术分析

1Oracle数据仓库中的OLAP多维分析技术 在传统的数据仓库技术中,数据访问技术经常分为两部分,复杂度较低的、简单的查询应用可直接访问基于关系数据库的数据仓库服务器,而复杂度较高的联机分析处理应用(OLAP)程序则需要通过专门的多维数据库和工具实现。虽然专门的多维数据库提供一整套的分析功能,查询性能更好,但系统的维护十分困难。多维数据库需要从数据仓库复制数据,获取数据的时间延迟相当长,并需要独立的管理过程,专门的数据建模、ETL过程、安全措施和灾难恢复方案。特别是当数据仓库的容量迅速膨胀时,系统性能会急剧下降,使数据访问应用变得不可使用。 1.1OLAP的体系结构 Oracle数据库作为数据仓库的核心和引擎,它集成了OLAP,Oracle数据库的OLAP选项是一种可用的关系多维数据库。多维技术和关系技术共存在同一平台上,实现了数据可管理性和分析能力之间的平衡。通过对SQL的扩充以及在关系数据库中提供OLAP功能,支持复杂分析查询和提供卓越性能的同时,简化了数据迁移过程并降低了维护数据的费用。 1.2Oracle数据仓库中OLAP的相关特点 与传统的多维数据库相比,它集成了oracle数据库管理系统的优势。 (1)由于OLAP集成在Oracle数据库中,将所有的管理任务整合到单一的数据库中,从而简化了管理。 (2)Oracle数据库提供了基于角色的权限管理,没有授权的用户是无法访问Oracle数据库的。数据库中的所有数据,包括OLAP数据,都得到了单一安全策略的保护。所有的用户都被定义在单一的用户目录中,通过标准的Oracle安全功能,例如GRANT和PRIVILEGE来分配权限。 (3)Oracle数据库是能够对关系和多维数据同时提供SQL和OLAPAPI访问的数据库。应用程序开发者可选择使用OLAPAPI的计算和多维数据功能,或使用标准的SQL访问多维数据,任何OLAP计算都可通过SQL进行查询。 提供AnalyticWorkspaceManage(简称AVM)。 它是完全集中于分析工作区中维度模型定义和实施的管理工具。通过它可以方便地创建维表及其结构、事实表以及多维数据库与关系数据库之间的映射,并不需要编程就可实现各种运算。如最大、最小、平均、加权平均、比率和求和运算。并通过oracle提供的OLAPDML语言,这是一种过程编程语言,可用于表达各种类型的计算、设计自定义分析函数以及控制与多维数据类型相关的数据加载和计算过程。O-LAPDML集成了大量的分析函数,可用于产生任何类型的多维计算。如汇总、分配/n分摊、数据选择、财务、预测和回归、数学和统计、模型、定制维度成员等函数类型。通过SQL和PL/SQL以及OLAPWorksheet工具可以访问OLAPDML。2Oracle数据仓库中的ODM应用技术 数据挖掘可以帮助用户发现在数据中隐含的有用信息和规律。Oracle数据库中集成了数据挖掘功能,它避免了把大量数据卸载到外部专用分析服务器的复杂过程。所有的数据挖掘功能都嵌入到了Oracle数据库中,这样,数据准备、模型建立以及模型评估活动都在数据库内进行。ODM可通过Java和PL/SQL应用程序程序员接口(API)以及数据挖掘客户端访问ODM模型构建和模型计分函数,并提供了多种模型建立向导(Wizard),能够协助业务分析人员和开发人员快速地建立数据挖掘模型和对模型进行检验。Oracle数据挖掘可以为多种数据挖掘算法提供支持,这些算法包括属性重要性、分类和回归、集群、关联、特性提取、文本挖掘、序列匹配和比对—BLAST等算法。 3结语 随着数据仓库技术的广泛应用,许多数据库厂商纷纷提出数据仓库解决方案。作为全球最大的关系数据库厂商,Oracle公司也提出了自己的数据仓库解决方案。与传统的数据仓库解决方案相比,Oracle公司提出了完整的数据仓库架构与集成方案。 Oracle数据仓库中的OLAP及ODM技术分析 □李发军 (西北民族大学榆中校区计算机科学与信息工程学院甘肃?兰州730124) 摘要:本文对Oracle数据仓库中的OLAP多维分析技术,以及Oracle数据仓库中的ODM应用技术进行分析研究。 关键词:OracleOLAPODM 中图分类号:C914文献标识码:A文章编号:1007-3973(2007)10-088-1 信息化之窗 88 科协论坛?2007年第10期(下)

oracle数据同步方案

oracle 数据同步方案 (DBLink)

一、什么是dbLink 两台不同的数据库服务器,从一台数据库服务器(例如A数据库服务器)的一个用户读取另一台数据库服务器(例如B数据库服务器)下的某个用户的数据,这个时候可以使用dblink。其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。 二、DbLink的创建步骤 说明:A数据库服务器是指-需要同步的数据库服务器,B数据库服务器是指-被同步的数据库服务器,以下文档中简称A数据库与B数据库。 1、在目的数据库上(A数据库),创建dblink drop public database link dblink_orc92_182; Create public DATABASE LINK dblink_orc92_182 CONNECT TO bst114IDENTIFIED BY password USING ''orc92_192.168.254.111''; 注释: --dblink_orc92_182 是dblink_name即创建的dblink名称 --bst114 是username即A数据库的用户 --password 是password即A数据库用户名密码 --''orc92_192.168.254.111'' 是远程数据库名即B数据库的名称,为了方便期间命名最好是“数据库名称+ip” 2、在源数据库(B数据库)和目的数据库(A数据库)上创建要同步的表 说明:不管是A数据库还是B数据库上创建的表最好有主键约束,快照才可以快速刷新 drop table test_user; create table test_user( id number(10) primary key, name varchar2(12), age number(3) );

相关主题