流复制实验之:Streams_Single_to_single_schames

环境介绍:

这个例子是如何配置单实例到单实例的单向复制.

环境如下表:

 

Source (single instance)

Target (single instance)

IP

172.28.7.244

172.28.7.11

OS

Oracle 10.2.0.1 for AIX5.3

Oracle 10.2.0.1 for windows XP

DB_NAME

orcl

orcl

Host name

Inode2

Ch-f

global_name

orcl.test.lcz.com.cn

testdb.test.lcz.com.cn

service_names

orcl.test.lcz.com.cn

testdb.test.lcz.com.cn

 

配置步骤:

(1).配置tnsnames.ora

初始single\rac(orcl1,orcl2)两个数据库的tnsnames.ora内容相同。

 

orcl.test.lcz.com.cn =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.28.7.244)(PORT = 1522))

    (LOAD_BALANCE = yes)

    (CONNECT_DATA =

      (SERVER = DEDICATED)

       (sid = orcl)

    )

  )

 

testdb.test.lcz.com.cn =

  (DESCRIPTION =

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

    (LOAD_BALANCE = YES)

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (sid = orcl)

    )

  )

 

(2).修改global_name.

修改源库的globle_name如下

 

SQL> select * from global_name;

 

GLOBAL_NAME

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

INFRADB.TEST.LCZ.COM.CN

 

SQL> alter database rename global_name to orcl.test.lcz.com.cn;

 

Database altered

 

SQL> select * from global_name;

 

GLOBAL_NAME

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

ORCL.TEST.LCZ.COM.CN

 

修改目标库的globle_name如下:

SQL> select * from global_name;

 

GLOBAL_NAME

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

ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

 

SQL> alter database rename global_name to testdb.test.lcz.com.cn;

 

Database altered

 

SQL> select * from global_name;

 

GLOBAL_NAME

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

TESTDB.TEST.LCZ.COM.CN

 

(3).修改其它参数

修改源库部分参数:

alter system set global_names=true;

alter system set aq_tm_processes=2;

alter system set aq_tm_processes=10;

alter system set logmnr_max_persistent_sessions=1 scope=spfile;

alter system set open_links=4 scope=spfile sid='*';

alter system set db_domain='test.lcz.com.cn' scope=spfile;

alter system set service_names='orcl.test.lcz.com.cn';

 

 

修改目标库部分参数:

alter system set global_names=true sid='*';

alter system set aq_tm_processes=2 sid='*';

alter system set aq_tm_processes=10 sid='*';

alter system set logmnr_max_persistent_sessions=1 scope=spfile sid='*';

alter system set open_links=4 scope=spfile sid='*';

alter system set db_domain='test.lcz.com.cn' scope=spfile sid='*';

alter system set service_names='testdb.test.lcz.com.cn' sid='*';

 

注:有些参数需要重启数据库生效

 

(4).在源数据库创建到目标数据库的连接

 

SQL> Create User strmdba Identified By oracle;

 

User created

 

SQL> Grant Connect,resource,Dba To strmdba;

 

Grant succeeded

 

SQL> conn strmdba/oracle@orcl.test.lcz.com.cn

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as strmdba

 

SQL> create database link testdb.test.lcz.com.cn connect to strmdba identified by oracle using 'testdb.test.lcz.com.cn';

 

Database link created

注意:

dblink名字使用的global_name,不是service_name

 

(5).在源数据库建source队列

 

SQL> conn strmdba/oracle@orcl.test.lcz.com.cn

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0

Connected as strmdba

 

Begin

  dbms_streams_adm.set_up_queue(

   queue_table => 'source_queue_table',

   queue_name => 'source_queue');

End;

/

 

(6).在源数据库上创建capture进程

 

Begin

  dbms_streams_adm.add_schema_rules(

    schema_name => 'bjcnsdba',

    streams_type => 'capture',

    streams_name => 'source_capture_stream',

    queue_name => 'source_queue',

    include_dml => True,

    include_ddl => True,

    include_tagged_lcr => False,

    source_database => Null,

    inclusion_rule => True);

End;

/

 

(7).在源数据库上创建传播进程

 

Begin

  dbms_streams_adm.add_schema_propagation_rules(

    schema_name => 'bjcnsdba',

    streams_name => 'propagation_bjcnsdba',

    source_queue_name => 'strmdba.source_queue',

    destination_queue_name => 'strmdba.target_queue@testdb.test.lcz.com.cn',

    include_dml => True,

    include_ddl => True,

    include_tagged_lcr => False,

    source_database => 'orcl.test.lcz.com.cn',

    inclusion_rule => True);

End;

/

 

(8).在目标库的orcl上创建接收队列。

SQL> Create User strmdba Identified By oracle;

 

User created

 

SQL> Grant Connect,resource,Dba To strmdba;

 

Grant succeeded

 

SQL> conn strmdba/oracle@testdb.test.lcz.com.cn

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as strmdba

 

Begin

  dbms_streams_adm.set_up_queue(

   queue_table => 'target_queue_table',

   queue_name => 'target_queue');

End;

/

 

Select q.Owner, q.Name, t.Queue_Table, t.Owner_Instance

         From Dba_Queues q, Dba_Queue_Tables t

 Where t.Object_Type = 'SYS.ANYDATA'

          And q.Queue_Table = t.Queue_Table

          And q.Owner = t.Owner

 Order By q.Owner;

 

OWNER      NAME                           QUEUE_TABLE             OWNER_INSTANCE

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

IX         STREAMS_QUEUE                  STREAMS_QUEUE_TABLE                  1

IX         AQ$_STREAMS_QUEUE_TABLE_E      STREAMS_QUEUE_TABLE                  1

STRMDBA    TARGET_QUEUE                 TARGET_QUEUE_TABLE                   1

STRMDBA  AQ$_TARGET_QUEUE_TABLE_E       TARGET_QUEUE_TABLE                   1

SYS        SCHEDULER$_JOBQ                SCHEDULER$_JOBQTAB                   1

SYS        AQ$_SCHEDULER$_JOBQTAB_E       SCHEDULER$_JOBQTAB                   1

 

(9).在目标库上建apply进程。

 

SQL> conn strmdba/oracle@testdb.test.lcz.com.cn

 

Begin

  dbms_streams_adm.add_schema_rules(

    schema_name => 'bjcnsdba',

    streams_type => 'apply',

    streams_name => 'target_apply_stream',

    queue_name => 'target_queue',

    include_dml => True,

    include_ddl => True,

    include_tagged_lcr => False,

    source_database => 'orcl.test.lcz.com.cn',

    inclusion_rule => True);

End;

/

 

(10).在目标库上启动apply进程

Begin

  dbms_apply_adm.start_apply(apply_name => 'target_apply_stream');

End;

/

 

(11).从源库上导出数据

 

exp strmdba/oracle@orcl_single owner=bjcnsdba object_consistent=y file=bjcnsdba.dmp grants=y rows=y indexes=y statistics=none

 

(12).在目标库导入数据

 

imp system/oracle fromuser=bjcnsdba touser=bjcnsdba file=d:\bjcnsdba.dmp constraints=y ignore=y grants=y streams_instantiation=y

 

(13).在源库上启动capture:

Begin

  dbms_capture_adm.start_capture(capture_name => 'source_capture_stream');

End;

/

 

(14).验证复制

 

在源上的bjcnsdba用户下执行DDLDML操作,在目标库上检查是否同步。

 

Create Table test3 (Id Int,Name varchar(20));

Insert Into test3

Select 1,'aa' From dual;

Commit;

 

文章参考:《大话oracle RAC》

 

遇到的问题:

 

1.在源数据库上创建capture进程时,报下面的错

 

Begin

  dbms_streams_adm.add_schema_rules(

    schema_name => 'bjcnsdba',

    streams_type => 'capture',

    streams_name => 'source_capture_stream',

    queue_name => 'source_queue',

    include_dml => True,

    include_ddl => True,

    include_tagged_lcr => False,

    source_database => Null,

    inclusion_rule => True);

End;

/

 

ORA-26665: STREAMS process SOURCE_CAPTURE_STREAM already exists

ORA-06512: at "SYS.DBMS_STREAMS_ADM_UTL_INVOK", line 289

ORA-06512: at "SYS.DBMS_STREAMS_ADM", line 439

ORA-06512: at "SYS.DBMS_STREAMS_ADM", line 397

ORA-06512: at line 2

 

原因:

capture process SOURCE_CAPTURE_STREAM

已经有匹配的queue_name,不能再用source_queuesource_capture_stream进程

 

SELECT capture_name, queue_owner, queue_name

FROM dba_capture;

 

 

CAPTURE_NAME                   QUEUE_OWNER                    QUEUE_NAME

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

SOURCE_CAPTURE_STREAM          STRMDBA                        SOURCE_QUEUE

 

SELECT owner, name FROM dba_queues

WHERE name = 'SOURCE_QUEUE';

 

OWNER                          NAME

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

STRMDBA                        SOURCE_QUEUE

 

解决:

1.在源数据库新建名称为其它的queue_name,(即不为source_queue),并改变streams_name(即不为source_capture_stream),避免冲突。

如下:

 

--在源数据库创建队列source_queue1

Begin

  dbms_streams_adm.set_up_queue(

   queue_table => 'source_queue_table1',

   queue_name => 'source_queue1');

End;

/

 

--在源数据库创建capture进程

Begin

  dbms_streams_adm.add_schema_rules(

    schema_name => 'bjcnsdba',

    streams_type => 'capture',

    streams_name => 'source_capture_stream1',

    queue_name => 'source_queue1',

    include_dml => True,

    include_ddl => True,

    include_tagged_lcr => False,

    source_database => Null,

    inclusion_rule => True);

End;

/

 

2.还有就是还可以把STRMDBA用户删除重建,这新这个用户下以前所有创建的进程就都没了。

 

参考:

ORA-26665 When Creating A Capture Process [ID 279666.1]

【语音分离】基于平均谐波结构建模的无监督单声道音乐声源分离(Matlab代码实现)内容概要:本文介绍了基于平均谐波结构建模的无监督单声道音乐声源分离方法,并提供了相应的Matlab代码实现。该方法通过对音乐信号中的谐波结构进行建模,利用音源间的频率特征差异,实现对混合音频中不同乐器或人声成分的有效分离。整个过程无需标注数据,属于无监督学习范畴,适用于单通道录音场景下的语音与音乐分离任务。文中强调了算法的可复现性,并附带完整的仿真资源链接,便于读者学习与验证。; 适合人群:具备一定信号处理基础和Matlab编程能力的高校学生、科研人员及从事音频处理、语音识别等相关领域的工程师;尤其适合希望深入理解声源分离原理并进行算法仿真实践的研究者。; 使用场景及目标:①用于音乐音频中人声与伴奏的分离,或不同乐器之间的分离;②支持无监督条件下的语音处理研究,推动盲源分离技术的发展;③作为学术论文复现、课程项目开发或科研原型验证的技术参考。; 阅读建议:建议读者结合提供的Matlab代码与网盘资料同步运行调试,重点关注谐波建模与频谱分解的实现细节,同时可扩展学习盲源分离中的其他方法如独立成分分析(ICA)或非负矩阵分解(NMF),以加深对音频信号分离机制的理解。
内容概要:本文系统介绍了新能源汽车领域智能底盘技术的发展背景、演进历程、核心技术架构及创新形态。文章指出智能底盘作为智能汽车的核心执行层,通过线控化(X-By-Wire)和域控化实现驱动、制动、转向、悬架的精准主动控制,支撑高阶智能驾驶落地。技术发展历经机械、机电混合到智能三个阶段,当前以线控转向、线控制动、域控制器等为核心,并辅以传感器、车规级芯片、功能安全等配套技术。文中还重点探讨了“智能滑板底盘”这一创新形态,强调其高度集成化、模块化优势及其在成本、灵活性、空间利用等方面的潜力。最后通过“2025智能底盘先锋计划”的实车测试案例,展示了智能底盘在真实场景中的安全与性能表现,推动技术从研发走向市场验证。; 适合人群:汽车电子工程师、智能汽车研发人员、新能源汽车领域技术人员及对智能底盘技术感兴趣的从业者;具备一定汽车工程或控制系统基础知识的专业人士。; 使用场景及目标:①深入了解智能底盘的技术演进路径与系统架构;②掌握线控技术、域控制器、滑板底盘等关键技术原理与应用场景;③为智能汽车底盘研发、系统集成与技术创新提供理论支持与实践参考。; 阅读建议:建议结合实际车型和技术标准进行延伸学习,关注政策导向与行业测试动态,注重理论与实车验证相结合,全面理解智能底盘从技术构想到商业化落地的全过程。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值