国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

講解物化視圖ORA-23313錯誤的解決方法

2024-07-21 02:42:26
字體:
供稿:網(wǎng)友

問題:

物化視圖問題:

物化視圖復(fù)制的設(shè)置

主站點(diǎn):db001.d-link

物化視圖站點(diǎn):db002.d-link

主機(jī)名:dbmis

復(fù)制用戶:dev001

檢查初始化參數(shù)

SQL> connect sys/change_on_install@db001.d-link as sysdba ;

已連接。

SQL> show parameter global_names ;

NAME TYPE VALUE

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

global_names boolean TRUE

SQL> show parameter job;

NAME TYPE VALUE

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

job_queue_PRocesses integer 20

SQL> select * from global_name ;

GLOBAL_NAME

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

DB001.d-link

SQL>

SQL> connect sys/change_on_install@db002.d-link as sysdba ;

已連接。

SQL> show parameter global_names ;

NAME TYPE VALUE

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

global_names boolean TRUE

SQL> show parameter job;

NAME TYPE VALUE

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

job_queue_processes integer 10

SQL> select * from global_name ;

GLOBAL_NAME

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

DB002.d-link

SQL>

檢查全局?jǐn)?shù)據(jù)庫名稱

SQL> connect dev001/whoami@db002.d-link ;

已連接。

SQL> select * from dev001.test001@db001 ;

A B

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

1 wui

2 zyun

SQL>

SQL> connect sys/change_on_install@db002.d-link as sysdba ;

已連接。

SQL> select owner,db_link from all_db_links ;

OWNER DB_LINK

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

SYS DB001.d-link

PUBLIC DB001.d-link

SQL> connect sys/change_on_install@db001.d-link as sysdba ;

已連接。

SQL> select owner,db_link from all_db_links ;

OWNER DB_LINK

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

SYS DB002.d-link

PUBLIC DB002.d-link

SQL>

建立主體站點(diǎn)

SQL> connect system/whoami@db001.d-link ;

已連接。

SQL>

--建立復(fù)制管理用戶repadmin 并授權(quán)

CREATE USER repadmin IDENTIFIED BY repadmin;

BEGIN

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => 'repadmin');

END;

/

GRANT COMMENT ANY TABLE TO repadmin;

GRANT LOCK ANY TABLE TO repadmin;

GRANT SELECT ANY DICTIONARY TO repadmin;

--注冊傳播用戶并授權(quán)

BEGIN

DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => 'repadmin');

END;

/

--注冊接收用戶

BEGIN

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (

username => 'repadmin',

privilege_type => 'receiver',

list_of_gnames => NULL);

END;

/

--建立物化視圖站點(diǎn)復(fù)制管理員的代理用戶

BEGIN

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (

username => 'repadmin',

privilege_type => 'proxy_snapadmin',

list_of_gnames => NULL);

END;

/

GRANT CREATE session TO repadmin;

GRANT SELECT ANY TABLE TO repadmin;

--以復(fù)制管理員身份登陸到主站點(diǎn)

SQL> CONNECT repadmin/repadmin@db001.d-link ;

BEGIN

DBMS_DEFER_SYS.SCHEDULE_PURGE (

next_date => SYSDATE,

interval => 'SYSDATE + 1/24',

delay_seconds => 0);

END;

/

commit;

設(shè)置物化視圖站點(diǎn)

SQL> connect system/whoami@db002.d-link ;

--建立物化視圖管理員,并授權(quán)

CREATE USER mvadmin IDENTIFIED BY mvadmin;

BEGIN

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (

username => 'mvadmin');

END;

/

GRANT COMMENT ANY TABLE TO mvadmin;

GRANT LOCK ANY TABLE TO mvadmin;

GRANT SELECT ANY DICTIONARY TO mvadmin;

--建立傳播者,并授權(quán)

BEGIN

DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => 'mvadmin');

END;

/

--建立刷新者,并授權(quán),這里使用mvadmin 用戶刷新物化視圖

GRANT CREATE SESSION TO mvadmin;

GRANT ALTER ANY MATERIALIZED VIEW TO mvadmin;

--注冊接受者

BEGIN

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (

username => 'mvadmin',

privilege_type => 'receiver',

list_of_gnames => NULL);

END;

/

--建立PUBLIC 數(shù)據(jù)庫鏈

CREATE PUBLIC DATABASE LINK db001 USING 'db001.d-link';

SQL> CONNECT mvadmin/mvadmin@db002.d-link;

已連接。

SQL>CREATE DATABASE LINK db001 CONNECT TO repadmin IDENTIFIED BY repadmin;

--建立到主站點(diǎn)上復(fù)制管理員的數(shù)據(jù)庫鏈

--以傳播者身份登陸物化視圖站點(diǎn)

BEGIN

DBMS_DEFER_SYS.SCHEDULE_PURGE (

next_date => SYSDATE,

interval => 'SYSDATE + 1/24',

delay_seconds => 0,

rollback_segment => '');

END;

/

--設(shè)置將修改推入到主站點(diǎn)的job

BEGIN

DBMS_DEFER_SYS.SCHEDULE_PUSH (

destination => 'db001.d-link',

interval => 'SYSDATE + 1/24',

next_date => SYSDATE,

stop_on_error => FALSE,

delay_seconds => 0,

parallelism => 0);

END;

/

commit;

建立主體組

--以復(fù)制管理員身份登陸復(fù)制站點(diǎn)

CONNECT repadmin/repadmin@db001.d-link ;

--建立名為rep_test 的復(fù)制組

BEGIN

DBMS_REPCAT.CREATE_MASTER_REPGROUP (

gname => 'reptest');

END;

/

--將復(fù)制對象增加到復(fù)制組中

BEGIN

DBMS_REPCAT.CREATE_MASTER_REPOBJECT (

gname => 'rep_test',

type => 'TABLE',

oname => 'test001',

sname => 'dev001',

use_existing_object => TRUE,

copy_rows => FALSE);

END;

/

--生成復(fù)制支持

BEGIN

DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (

sname => 'dev001',

oname => 'test001',

type => 'TABLE',

min_communication => TRUE);

END;

/

--開始復(fù)制

BEGIN

DBMS_REPCAT.RESUME_MASTER_ACTIVITY (

gname => 'reptest');

END;

/

commit;

建立物化視圖

CONNECT dev001/whoami@db001.d-link ;

--建立物化視圖日志表,F(xiàn)AST 刷新方式必須要求建立物化視圖日志

CREATE MATERIALIZED VIEW LOG ON dev001.test001;

--建立復(fù)制用戶到主站點(diǎn)代理刷新者的數(shù)據(jù)庫鏈

CONNECT dev001/whoami@db002.d-link;

CREATE DATABASE LINK db001 CONNECT TO repadmin IDENTIFIED BY repadmin;

--建立物化視圖組

CONNECT mvadmin/mvadmin@db002.d-link ;

--物化視圖組必須和復(fù)制站點(diǎn)上的復(fù)制組名稱相同

BEGIN

DBMS_REPCAT.CREATE_MVIEW_REPGROUP (

gname => 'reptest',

master => 'db001.d-link',

propagation_mode => 'ASYNCHRONOUS');

END;

/

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

錯誤提示:

SQL> begin

2 dbms_repcat.create_mview_repgroup(

3 gname=>'reptest',

4 master=>'db001.d-link',

5 propagation_mode => 'ASYNCHRONOUS');

6 end;

7 /

begin

*

ERROR 位于第 1 行:

ORA-23313: 在 PUBLIC 沒有控制對象組 "REPTEST"."db001.d-link"

ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105

ORA-06512: 在"SYS.DBMS_REPCAT_SNA_UTL", line 1690

ORA-06512: 在"SYS.DBMS_REPCAT_SNA", line 64

ORA-06512: 在"SYS.DBMS_REPCAT", line 1262

ORA-06512: 在line 2

SQL>

查找資料后得到的結(jié)論:說是因?yàn)槟壳爸髡緦儆陟o默模式,解決過程如下:

BEGIN

DBMS_REPCAT.RESUME_MASTER_ACTIVITY (

gname => 'reptest');

END;

/

但依然無效,同樣樣報(bào)錯,上午這樣執(zhí)行一下后,建立物化視圖組雖然通過了,但意外的是,

現(xiàn)在把所有都刪除了重新建立,竟然報(bào)錯誤了。

SQL> connect repadmin/repadmin@db001.d-link ;

已連接。

SQL> select gname, master, status from dba_repgroup;

GNAME M STATUS

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

REPTEST Y NORMAL

按照其他方法:

SQL> execute dbms_repcat.suspend_master_activity (gname => 'reptest');

PL/SQL 過程已成功完成。

SQL> connect mviewadmin/mviewadmin@db002.d-link ;

已連接。

SQL> begin

2 dbms_repcat.create_mview_repgroup(

3 gname=>'reptest',

4 master=>'db001.d-link',

5 propagation_mode=>'ASYNCHRONOUS');

6 end;

7 /

begin

*

ERROR 位于第 1 行:

ORA-23313: 在 PUBLIC 沒有控制對象組 "REPTEST"."db001.d-link"

ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105

ORA-06512: 在"SYS.DBMS_REPCAT_SNA_UTL", line 1690

ORA-06512: 在"SYS.DBMS_REPCAT_SNA", line 64

ORA-06512: 在"SYS.DBMS_REPCAT", line 1262

ORA-06512: 在line 2

SQL>

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

--創(chuàng)建刷新組

BEGIN

DBMS_REFRESH.MAKE (

name => 'mvadmin.rep_refresh',

list => '',

next_date => SYSDATE,

interval => 'SYSDATE + 1/24',

implicit_destroy => FALSE,

rollback_seg => '',

push_deferred_rpc => TRUE,

refresh_after_errors => FALSE);

END;

/

SQL> connect mviewadmin/mviewadmin@db002.d-link ;

已連接。

SQL> select *from dev001.test001@db001 ;

A B

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

1 wui

2 zyun

SQL>

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

--創(chuàng)建物化視圖

SQL> CREATE MATERIALIZED VIEW dev001.test001

2 REFRESH FAST WITH PRIMARY KEY FOR UPDATE

3 AS SELECT * FROM dev001.test001@db001 ;

AS SELECT * FROM dev001.test001@db001

*

ERROR 位于第 3 行:

ORA-12028: 主體站點(diǎn) @DB001.d-link 不支持實(shí)體化視圖類型

SQL>

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

(兩處用長虛線的位置是問題所在)。

解決方法:(參考)

在進(jìn)行復(fù)制組創(chuàng)建的過程中出現(xiàn)如下錯誤:

SQL> begin

2 dbms_repcat.create_mview_repgroup(

3 gname=>'reptest',

4 master=>'db001.d-link',

5 propagation_mode => 'ASYNCHRONOUS');

6 end;

7 /

begin

*

ERROR 位于第 1 行:

ORA-23313: 在 PUBLIC 沒有控制對象組 "REPTEST"."db001.d-link"

ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105

ORA-06512: 在"SYS.DBMS_REPCAT_SNA_UTL", line 1690

ORA-06512: 在"SYS.DBMS_REPCAT_SNA", line 64

ORA-06512: 在"SYS.DBMS_REPCAT", line 1262

ORA-06512: 在line 2

經(jīng)多次檢查后發(fā)現(xiàn)問題出現(xiàn)在db link上,在測試中發(fā)現(xiàn)的問題:

SQL> connect system/pass@db002 ;

已連接。

SQL> select owner,db_link from dba_db_links ;

OWNER DB_LINK

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

PUBLIC DB001.Q-LINK

MVADMIN DB001.Q-LINK

DEV001 DB001.Q-LINK

SQL> connect system/pass@db001 ;

已連接。

SQL> select owner,db_link from dba_db_links ;

OWNER DB_LINK

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

PUBLIC DB002.Q-LINK

REPADMIN DB002.Q-LINK

SQL> connect mvadmin/pass@db002

已連接。

SQL> select * from dev001.test001@db001 ;

A B

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

1 wanghui

2 zhangyun

SQL> select * from dev001.test001@db001.q-link ;

select * from dev001.test001@db001.q-link

*

ERROR 位于第 1 行:

ORA-00933: SQL 命令未正確結(jié)束

SQL>

當(dāng)引用類似"db001.q-link"的db link時,Oracle出現(xiàn)了錯誤,此時應(yīng)注意"-"這個特殊字符,因?yàn)镺racle在db link 中無法正確的識別。

然后加上雙引號(""),如下:

select * from dev001.test001@"db001.q-link" ;

此時結(jié)果正常。現(xiàn)在就可以確認(rèn)是域名出現(xiàn)問題了。

然后通過使用類似命令更改了域名以后,即可恢復(fù)正常:

alter database rename global_name to DB002.QLINK;

問題的詳細(xì)描述,Note:274162.1

The above problem is known to arise due to the presence of the '-' character in the domain name. Upon renaming the domain to a name that doesn't contain this character, the above problem disappears. Oracle的說法:

The cause of this occurance is not clear. 報(bào)告中的影響范圍為:

Oracle Net Services - Version: 8.1.7.4 to 8.1.7.4

Solaris Operating System (SPARC 32-bit)

注釋:Oracle 9i中此問題也同樣存在,此示例的數(shù)據(jù)庫版本如下:

SQL> select * from v$version ;

BANNER

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

Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

PL/SQL Release 9.2.0.1.0 - Production

CORE 9.2.0.1.0 Production

TNS for 32-bit Windows: Version 9.2.0.1.0 - Production

NLSRTL Version 9.2.0.1.0 - Production

SQL>


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乡| 克拉玛依市| 襄城县| 黄平县| 正安县| 德钦县| 应用必备| 友谊县| 冀州市| 台北县| 三穗县| 太原市| 翁源县| 鄂托克前旗| 平武县| 宁国市| 济宁市| 三河市| 横峰县| 永州市| 华蓥市| 宁乡县| 会同县| 化州市| 江油市| 高邮市| 义马市| 霍州市| 民乐县| 定结县| 桐乡市| 会泽县| 上饶市| 大新县| 三亚市| 清水县| 蓬安县| 昭平县| 双城市| 泸溪县| 旬邑县|