动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.oltp系统,数据块大小用4k还是8k.
.Oracle8 优化技术:输入/输出.
.Oracle数据库密码文件的使用和维.
.logminer使用步骤二(分析DML操作).
.经典Oracle图书推荐-之三.
.优化数据库大幅度提高Oracle的性.
.说一说如何配置Oracle的MTS part2.
.如何恢复只有完好数据文件的orac.
.Linux Shadow-Password-HOWTO.
.怎样制作可执行的java程序.
.Oracle9i进程内存占用问题解决方.
.Oracle中Decode()函数使用技巧.
.ORACLE SQL性能优化系列 九.
.redflag认证系统管理部分笔记.
.Oracle 9i 游标.
.Oracle安全全接触(1).
.Oracle弱智900问九.
.用简单的方法获取Oracle语句的执.
.带你深入了解Oracle数据库的进制.
.Oracle基本数据类型存储格式浅析.

讲解物化视图ORA-23313错误的解决方法

发表日期:2008-4-3 |


问题:

物化视图问题:

物化视图复制的设置

主站点:db001.d-link

物化视图站点:db002.d-link

主机名:dbmis

复制用户:dev001

检查初始化参数

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>

检查全局数据库名称

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>

建立主体站点

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

已连接。

SQL>

--建立复制管理用户repadmin 并授权

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;

--注册传播用户并授权

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;

/

--建立物化视图站点复制管理员的代理用户

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;

--以复制管理员身份登陆到主站点

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;

设置物化视图站点

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

--建立物化视图管理员,并授权

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;

--建立传播者,并授权

BEGIN

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

END;

/

--建立刷新者,并授权,这里使用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 数据库链

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;

--建立到主站点上复制管理员的数据库链

--以传播者身份登陆物化视图站点

BEGIN

DBMS_DEFER_SYS.SCHEDULE_PURGE (

next_date => SYSDATE,

interval => 'SYSDATE + 1/24',

delay_seconds => 0,

rollback_segment => '');

END;

/

--设置将修改推入到主站点的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;

建立主体组

--以复制管理员身份登陆复制站点

CONNECT repadmin/repadmin@db001.d-link ;

--建立名为rep_test 的复制组

BEGIN

DBMS_REPCAT.CREATE_MASTER_REPGROUP (

gname => 'reptest');

END;

/

--将复制对象增加到复制组中

BEGIN

DBMS_REPCAT.CREATE_MASTER_REPOBJECT (

gname => 'rep_test',

type => 'TABLE',

oname => 'test001',

sname => 'dev001',

use_existing_object => TRUE,

copy_rows => FALSE);

END;

/

--生成复制支持

BEGIN

DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (

sname => 'dev001',

oname => 'test001',

type => 'TABLE',

min_communication => TRUE);

END;

/

--开始复制

BEGIN

DBMS_REPCAT.RESUME_MASTER_ACTIVITY (

gname => 'reptest');

END;

/

commit;

建立物化视图

CONNECT dev001/whoami@db001.d-link ;

--建立物化视图日志表,FAST 刷新方式必须要求建立物化视图日志

CREATE MATERIALIZED VIEW LOG ON dev001.test001;

--建立复制用户到主站点代理刷新者的数据库链

CONNECT dev001/whoami@db002.d-link;

CREATE DATABASE LINK db001 CONNECT TO repadmin IDENTIFIED BY repadmin;

--建立物化视图组

CONNECT mvadmin/mvadmin@db002.d-link ;

--物化视图组必须和复制站点上的复制组名称相同

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>

查找资料后得到的结论:说是因为目前主站属于静默模式,解决过程如下:

BEGIN

DBMS_REPCAT.RESUME_MASTER_ACTIVITY (

gname => 'reptest');

END;

/

但依然无效,同样样报错,上午这样执行一下后,建立物化视图组虽然通过了,但意外的是,

现在把所有都删除了重新建立,竟然报错误了。

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>

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

--创建刷新组

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>

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

--创建物化视图

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: 主体站点 @DB001.d-link 不支持实体化视图类型

SQL>

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

(两处用长虚线的位置是问题所在)。

解决方法:(参考)

在进行复制组创建的过程中出现如下错误:

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

经多次检查后发现问题出现在db link上,在测试中发现的问题:

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 命令未正确结束

SQL>

当引用类似"db001.q-link"的db link时,Oracle出现了错误,此时应注意"-"这个特殊字符,因为Oracle在db link 中无法正确的识别。

然后加上双引号(""),如下:

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

此时结果正常。现在就可以确认是域名出现问题了。

然后通过使用类似命令更改了域名以后,即可恢复正常:

alter database rename global_name to DB002.QLINK;

问题的详细描述,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. 报告中的影响范围为:

Oracle Net Services - Version: 8.1.7.4 to 8.1.7.4

Solaris Operating System (SPARC 32-bit)

注释:Oracle 9i中此问题也同样存在,此示例的数据库版本如下:

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>

上一篇:在Oracle 10g中如何解决ORA-19815错误 人气:921
下一篇:教你快速掌握解决RMAN-06026错误的方法 人气:991
浏览全部ORACLE的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-12 team论坛 v2.0.4 bulid 080916 A
2008-10-12 Roclog v3.1.6
2008-10-12 SupeV v1.0.1 简体中文 GBK
2008-10-12 NetCMS v1.6.0.1010 正式版
2008-10-12 PHP考试系统PPFrame v1.2.7
2008-10-12 LPAS个人相册 v1.6.3
2008-10-12 快问仿百度知道系统 动态-静态-互
2008-10-12 方卡广告防点击系统 V1.0 GB2312
2008-10-12 泡菜内容管理系统[PCMS] v1.0 Bu
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成