﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-向前走的螃蟹-随笔分类-Oracle</title><link>http://www.blogjava.net/hhhaaawwwkkk/category/40584.html</link><description>学习笔记 努力奋斗 </description><language>zh-cn</language><lastBuildDate>Sat, 01 Aug 2009 14:52:44 GMT</lastBuildDate><pubDate>Sat, 01 Aug 2009 14:52:44 GMT</pubDate><ttl>60</ttl><item><title>Oracle10G 如何解除scott用户的锁定状态</title><link>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/03/285286.html</link><dc:creator>向前走的螃蟹</dc:creator><author>向前走的螃蟹</author><pubDate>Fri, 03 Jul 2009 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/03/285286.html</guid><wfw:comment>http://www.blogjava.net/hhhaaawwwkkk/comments/285286.html</wfw:comment><comments>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/03/285286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hhhaaawwwkkk/comments/commentRss/285286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hhhaaawwwkkk/services/trackbacks/285286.html</trackback:ping><description><![CDATA[<div>问题描述：<br />
&nbsp;&nbsp;&nbsp;&nbsp;新装完Oracle10g后，用scott/tiger测试，会出现以下错误提示：<br />
&nbsp;&nbsp;&nbsp; oracle10g the account is locked<br />
&nbsp;&nbsp;&nbsp; oracle10g the password has expired<br />
&nbsp;<br />
原因：默认Oracle10g的scott不能登陆。<br />
&nbsp;<br />
解决：<br />
（1）conn sys/sys as sysdba;//以DBA的身份登录<br />
（2）alter user scott account unlock;// 然后解锁<br />
（3）conn scott/tiger //弹出一个修改密码的对话框，修改一下密码就可以了</div>
<div>&nbsp;</div>
<div>具体操作步骤如下：</div>
<div>C:&gt; sqlplus</div>
<div>请输入用户名：sys</div>
<div>输入口令：sys as sysdba //注意：在口令这里输入的密码后面必须要跟上 as sysdba 才可以。<br />
SQL&gt; alter user scott account unlock;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 用户已更改.<br />
SQL&gt; commit;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 提交完成.<br />
SQL&gt; conn scott/tiger</div>
<div>更改scott口令</div>
<div>新口令：tiger</div>
<div>重新键入新口令：tiger</div>
<div>口令已更改</div>
<div>已连接。</div>
<div>//完成。</div>
 <img src ="http://www.blogjava.net/hhhaaawwwkkk/aggbug/285286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hhhaaawwwkkk/" target="_blank">向前走的螃蟹</a> 2009-07-03 09:53 <a href="http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/03/285286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 创建表空间、用户、表</title><link>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/02/285175.html</link><dc:creator>向前走的螃蟹</dc:creator><author>向前走的螃蟹</author><pubDate>Thu, 02 Jul 2009 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/02/285175.html</guid><wfw:comment>http://www.blogjava.net/hhhaaawwwkkk/comments/285175.html</wfw:comment><comments>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/02/285175.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hhhaaawwwkkk/comments/commentRss/285175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hhhaaawwwkkk/services/trackbacks/285175.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">--</span><span style="color: #008080">--创建表空间</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;tablespace&nbsp;test_tableSpace<br />
datafile&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">D:\oracleDatabase\db\test_tableSpace.dbf</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;<br />
size&nbsp;200M<br />
</span><span style="color: #0000ff">default</span><span style="color: #000000">&nbsp;storage<br />
(initial&nbsp;200m<br />
</span><span style="color: #0000ff">next</span><span style="color: #000000">&nbsp;50m<br />
minextents&nbsp;</span><span style="color: #800000; font-weight: bold">20</span><span style="color: #000000"><br />
maxextents&nbsp;</span><span style="color: #800000; font-weight: bold">500</span><span style="color: #000000">)<br />
online;&nbsp;&nbsp;<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">--删除表空间</span><span style="color: #008080"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">DROP</span><span style="color: #000000">&nbsp;TABLESPACE&nbsp;test_tableSpace&nbsp;INCLUDING&nbsp;CONTENTS&nbsp;</span><span style="color: #808080">AND</span><span style="color: #000000">&nbsp;DATAFILES&nbsp;<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">--创建用户（）</span><span style="color: #008080"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">CREATE</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">USER</span><span style="color: #000000">&nbsp;shanshan&nbsp;PROFILE&nbsp;</span><span style="color: #0000ff">DEFAULT</span><span style="color: #000000">&nbsp;IDENTIFIED&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;shanshan&nbsp;</span><span style="color: #0000ff">DEFAULT</span><span style="color: #000000">&nbsp;<br />
TABLESPACE&nbsp;test_tablespace&nbsp;</span><span style="color: #0000ff">TEMPORARY</span><span style="color: #000000">&nbsp;TABLESPACE&nbsp;</span><span style="color: #0000ff">TEMP</span><span style="color: #000000">&nbsp;ACCOUNT&nbsp;UNLOCK;<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">--给用户分配权限（shanshan用户名）</span><span style="color: #008080"><br />
</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">grant</span><span style="color: #000000">&nbsp;connect,resource&nbsp;</span><span style="color: #0000ff">to</span><span style="color: #000000">&nbsp;shanshan;</span></div>
这样就可以登录了。<br />
用PL/SQL Developer登录<br />
Username ：shanshan<br />
password ：shanshan<br />
database ：zzn<br />
connect as ：normal<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">--</span><span style="color: #008080">--创建数据表</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;test_user(&nbsp;<br />
first_name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">15</span><span style="color: #000000">),&nbsp;<br />
last_name&nbsp;</span><span style="color: #000000; font-weight: bold">varchar2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">20</span><span style="color: #000000">)&nbsp;<br />
);<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">--插入一条记录</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;test_user&nbsp;</span><span style="color: #0000ff">values</span><span style="color: #000000">&nbsp;(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">zhao</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">zhaonan</span><span style="color: #ff0000">'</span><span style="color: #000000">);<br />
<br />
<br />
</span><span style="color: #008080">--</span><span style="color: #008080">--查询记录</span><span style="color: #008080"><br />
</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;test_user;</span></div>
<img src ="http://www.blogjava.net/hhhaaawwwkkk/aggbug/285175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hhhaaawwwkkk/" target="_blank">向前走的螃蟹</a> 2009-07-02 14:46 <a href="http://www.blogjava.net/hhhaaawwwkkk/archive/2009/07/02/285175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle db_link 和触发器实现不同数据库表的同步</title><link>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/05/06/269251.html</link><dc:creator>向前走的螃蟹</dc:creator><author>向前走的螃蟹</author><pubDate>Wed, 06 May 2009 07:45:00 GMT</pubDate><guid>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/05/06/269251.html</guid><wfw:comment>http://www.blogjava.net/hhhaaawwwkkk/comments/269251.html</wfw:comment><comments>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/05/06/269251.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hhhaaawwwkkk/comments/commentRss/269251.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hhhaaawwwkkk/services/trackbacks/269251.html</trackback:ping><description><![CDATA[<p>---创建dblink,dblink_test名称，（被同步数据库的a_test）ST10766用户名，ep密码，ass100连接字符串<br />
create public database link dblink_test<br />
　　 connect to ST10766 identified by ep <br />
　　 using 'ass100';</p>
<p>---删除dblink<br />
----drop public database link dblink_test;</p>
<p>----建立表<br />
create table a_test (id int,name varchar(20),pass varchar(20))<br />
select * from a_test;</p>
<p>insert into a_test (id,name,pass) values (1,'zzn','shanshan')<br />
insert into b_test (id,username,password) values('1','zxl','xiaolan')</p>
<p>----在目的数据库上，测试dblink，查询的是源数据库的表<br />
select * from a_test@dblink_orc10;&nbsp; <br />
select * from a_test;</p>
<p>----创建触发器</p>
<p>create or replace trigger a_b_test<br />
&nbsp; after&nbsp; insert or update or delete <br />
&nbsp; on a_test<br />
&nbsp; for each row<br />
begin<br />
&nbsp; if deleting then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete from b_test where id=:old.id;<br />
&nbsp; end if;<br />
&nbsp; if inserting then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert into b_test(id,username,password)&nbsp; //b_test表的字段<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; values(:new.id,:new.name,:new.pass);&nbsp;//a_test表的字段<br />
&nbsp; end if;<br />
&nbsp; if updating then<br />
&nbsp;&nbsp;&nbsp;&nbsp; update b_test set username=:new.name,password=:new.pass where id=:old.id;<br />
&nbsp; end if;<br />
end a_b_test;</p>
 <img src ="http://www.blogjava.net/hhhaaawwwkkk/aggbug/269251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hhhaaawwwkkk/" target="_blank">向前走的螃蟹</a> 2009-05-06 15:45 <a href="http://www.blogjava.net/hhhaaawwwkkk/archive/2009/05/06/269251.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]oracle数据库同步技术 </title><link>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/28/267823.html</link><dc:creator>向前走的螃蟹</dc:creator><author>向前走的螃蟹</author><pubDate>Tue, 28 Apr 2009 00:35:00 GMT</pubDate><guid>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/28/267823.html</guid><wfw:comment>http://www.blogjava.net/hhhaaawwwkkk/comments/267823.html</wfw:comment><comments>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/28/267823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hhhaaawwwkkk/comments/commentRss/267823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hhhaaawwwkkk/services/trackbacks/267823.html</trackback:ping><description><![CDATA[<div class="postBody">oracle数据库同步技术 <br />
<br />
高级复制<br />
什么是复制？简单地说复制就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 高级复制，是在组成分布式数据库系统的多个数据库中复制和维护数据库对象的过程。 Oracle 高级复制允许应用程序更新数据库的任何副本，并将这些更改自动传递到其他数据库，同时确保全局事务处理的一致性和数据完整性。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同步复制，复制数据在任何时间在任何复制节点均保持一致。如果复制环境中的任何一个节点的复制数据发生了更新操作，这种变化会立刻反映到其他所有的复制节点。这种技术适用于那些对于实时性要求较高的商业应用中。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 异步复制，所有复制节点的数据在一定时间内是不同步的。如果复制环境中的其中的一个节点的复制数据发生了更新操作，这种改变将在不同的事务中被传播和应用到其他所有复制节点。这些不同的事务间可以间隔几秒，几分种，几小时，也可以是几天之后。复制节点之间的数据临时是不同步的，但传播最终将保证所有复制节点间的数据一致。 <br />
<span style="font-size: 18pt">一、实现数据库复制的前提条件</span>&nbsp;&nbsp;<br />
<strong>1、数据库支持高级复制功能&nbsp;&nbsp;<br />
</strong>您可以用system身份登录数据库，查看v$option视图，如果其中Advanced replication为TRUE，则支持高级复制功能；否则不支持。&nbsp;&nbsp;<br />
<strong>2、数据库初始化参数要求</strong>&nbsp;&nbsp;<br />
①、db_domain = test.com.cn&nbsp;&nbsp;<br />
指明数据库的域名(默认的是WORLD)，这里可以用您公司的域名。&nbsp;&nbsp;<br />
②、global_names = true&nbsp;&nbsp;<br />
它要求数据库链接(database link)和被连接的数据库名称一致。&nbsp;&nbsp;<br />
现在全局数据库名：db_name+&#8221;.&#8221;+db_domain&nbsp;&nbsp;<br />
③、有跟数据库job执行有关的参数&nbsp;&nbsp;<br />
job_queue_processes = 1&nbsp;&nbsp;<br />
job_queue_interval = 60&nbsp;&nbsp;<br />
distributed_transactions = 10&nbsp;&nbsp;<br />
open_links = 4&nbsp;&nbsp;<br />
第一行定义SNP进程的启动个数为n。系统缺省值为0，正常定义范围为0～36，根据任务的多少，可以配置不同的数值。&nbsp;&nbsp;<br />
第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒，正常范围为1～3600秒。事实上，该进程执行完当前任务后，就进入睡眠状态，睡眠一段时间后，由系统的总控负责将其唤醒。&nbsp;&nbsp;<br />
如果修改了以上这几个参数，需要重新启动数据库以使参数生效。&nbsp;&nbsp;<br />
<span style="font-size: 18pt">二、实现数据库同步复制的步骤&nbsp;</span>&nbsp;<br />
假设在Internet上我们有两个数据库：一个叫深圳(shenzhen)，一个叫北京(beijing)。&nbsp;&nbsp;<br />
具体配置见下表：&nbsp;&nbsp;<br />
数据库名 shenzhen beijing&nbsp;&nbsp;<br />
数据库域名 test.com.cn test.com.cn&nbsp;&nbsp;<br />
数据库sid号 shenzhen beijing&nbsp;&nbsp;<br />
Listener端口号 1521 1521&nbsp;&nbsp;<br />
服务器ip地址 10.1.1.100 10.1.1.200&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
<strong>1、确认两台数据库之间可以互相访问，在tnsnames.ora里设置数据库连接字符串。</strong>&nbsp;&nbsp;<br />
①、例如：深圳这边的数据库连接字符串是以下的格式&nbsp;&nbsp;<br />
beijing =&nbsp;&nbsp;<br />
(DESCRIPTION =&nbsp;&nbsp;<br />
(ADDRESS_LIST =&nbsp;&nbsp;<br />
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.200)(PORT = 1521))&nbsp;&nbsp;<br />
)&nbsp;&nbsp;<br />
(CONNECT_DATA =&nbsp;&nbsp;<br />
(SERVICE_NAME = beijing)&nbsp;&nbsp;<br />
)&nbsp;&nbsp;<br />
)&nbsp;&nbsp;<br />
运行$tnsping beijing&nbsp;&nbsp;<br />
出现以下提示符：&nbsp;&nbsp;<br />
Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.200)(PORT=1521))&nbsp;&nbsp;<br />
OK（n毫秒）&nbsp;&nbsp;<br />
表明深圳数据库可以访问北京数据库。&nbsp;&nbsp;<br />
②、在北京那边也同样配置，确认$tnsping shenzhen 是通的。&nbsp;&nbsp;<br />
<strong>2、改数据库全局名称，建公共的数据库链接。</strong>&nbsp;&nbsp;<br />
①、用system身份登录shenzhen数据库&nbsp;&nbsp;<br />
SQL&gt;alter database rename global_name to shenzhen.test.com.cn;&nbsp;&nbsp;<br />
用system身份登录beijing数据库：&nbsp;&nbsp;<br />
SQL&gt;alter database rename global_name to beijing.test.com.cn;&nbsp;&nbsp;<br />
②、用system身份登录shenzhen数据库&nbsp;&nbsp;<br />
SQL&gt;create public database link beijing.test.com.cn using 'beijing';&nbsp;&nbsp;<br />
测试数据库全局名称和公共的数据库链接&nbsp;&nbsp;<br />
SQL&gt;select * from global_name@beijing.test.com.cn;&nbsp;&nbsp;<br />
返回结果为beijing.test.com.cn就对了。&nbsp;&nbsp;<br />
用system身份登录beijing数据库：&nbsp;&nbsp;<br />
SQL&gt;create public database link shenzhen.test.com.cn using 'shenzhen';&nbsp;&nbsp;<br />
测试数据库全局名称和公共的数据库链接&nbsp;&nbsp;<br />
SQL&gt;select * from global_name@shenzhen.test.com.cn;&nbsp;&nbsp;<br />
返回结果为shenzhen.test.com.cn就对了。&nbsp;&nbsp;<br />
<strong>3、建立管理数据库复制的用户repadmin，并赋权。</strong>&nbsp;&nbsp;<br />
①、用system身份登录shenzhen数据库&nbsp;&nbsp;<br />
SQL&gt;create user repadmin identified by repadmin default tablespace users temporary tablespace temp;&nbsp;&nbsp;<br />
SQL&gt;execute dbms_defer_sys.register_propagator('repadmin');&nbsp;&nbsp;<br />
SQL&gt;grant execute any procedure to repadmin;&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');&nbsp;&nbsp;<br />
SQL&gt;grant comment any table to repadmin;&nbsp;&nbsp;<br />
SQL&gt;grant lock any table to repadmin;&nbsp;&nbsp;<br />
②、同样用system身份登录beijing数据库，运行以上的命令，管理数据库复制的用户repadmin，并赋权。&nbsp;&nbsp;<br />
说明：repadmin用户名和密码可以根据用户的需求自由命名。&nbsp;&nbsp;<br />
<strong>4、在数据库复制的用户repadmin下创建私有的数据库链接。</strong>&nbsp;&nbsp;<br />
①、用repadmin身份登录shenzhen数据库&nbsp;&nbsp;<br />
SQL&gt;create database link beijing.test.com.cn connect to repadmin identified by repadmin;&nbsp;&nbsp;<br />
测试这个私有的数据库链接：&nbsp;&nbsp;<br />
SQL&gt;select * from global_name@beijing.test.com.cn;&nbsp;&nbsp;<br />
返回结果为beijing.test.com.cn就对了。&nbsp;&nbsp;<br />
②、用repadmin身份登录beijing数据库&nbsp;&nbsp;<br />
SQL&gt;create database link shenzhen.test.com.cn connect to repadmin identified by repadmin;&nbsp;&nbsp;<br />
测试这个私有的数据库链接&nbsp;&nbsp;<br />
SQL&gt;select * from global_name@shenzhen.test.com.cn;&nbsp;&nbsp;<br />
返回结果为shenzhen.test.com.cn就对了。&nbsp;&nbsp;<br />
<strong>5、创建或选择实现数据库复制的用户和对象，给用户赋权，数据库对象必须有主关键字。</strong>&nbsp;&nbsp;<br />
假设我们用ORACLE里举例用的scott用户，dept表。&nbsp;&nbsp;<br />
①、用internal身份登录shenzhen数据库，创建scott用户并赋权&nbsp;&nbsp;<br />
SQL&gt;create user scott identified by tiger default tablespace users temporary tablespace temp;&nbsp;&nbsp;<br />
SQL&gt;grant connect, resource to scott;&nbsp;&nbsp;<br />
SQL&gt;grant execute on sys.dbms_defer to scott;&nbsp;&nbsp;<br />
②、用scott身份登录shenzhen数据库，创建表dept&nbsp;&nbsp;<br />
SQL&gt;create table dept&nbsp;&nbsp;<br />
(deptno number(2) primary key,&nbsp;&nbsp;<br />
dname varchar2(14),&nbsp;&nbsp;<br />
loc varchar2(13) );&nbsp;&nbsp;<br />
③、如果数据库对象没有主关键字，可以运行以下SQL命令添加：&nbsp;&nbsp;<br />
SQL&gt;alter table dept add (constraint dept_deptno_pk primary key (deptno));&nbsp;&nbsp;<br />
④、在shenzhen数据库scott用户下创建主关键字的序列号，范围避免和beijing的冲突。&nbsp;&nbsp;<br />
SQL&gt; create sequence dept_no increment by 1 start with 1 maxvalue 44 cycle nocache;&nbsp;&nbsp;<br />
(说明：maxvalue 44可以根据应用程序及表结构主关键字定义的位数需要而定)&nbsp;&nbsp;<br />
⑤、在shenzhen数据库scott用户下插入初始化数据&nbsp;&nbsp;<br />
SQL&gt;insert into dept values (dept_no.nextval,'accounting','new york');&nbsp;&nbsp;<br />
SQL&gt;insert into dept values (dept_no.nextval,'research','dallas');&nbsp;&nbsp;<br />
SQL&gt;commit;&nbsp;&nbsp;<br />
⑥、在beijing数据库那边同样运行以上①，②，③&nbsp;&nbsp;<br />
⑦、在beijing数据库scott用户下创建主关键字的序列号，范围避免和shenzhen的冲突。&nbsp;&nbsp;<br />
SQL&gt; create sequence dept_no increment by 1 start with 45 maxvalue 99 cycle nocache;&nbsp;&nbsp;<br />
⑧、在beijing数据库scott用户下插入初始化数据&nbsp;&nbsp;<br />
SQL&gt;insert into dept values (dept_no.nextval,'sales','chicago');&nbsp;&nbsp;<br />
SQL&gt;insert into dept values (dept_no.nextval,'operations','boston');&nbsp;&nbsp;<br />
SQL&gt;commit;&nbsp;&nbsp;<br />
<strong>6、创建要复制的组scott_mg，加入数据库对象，产生对象的复制支持</strong>&nbsp;&nbsp;<br />
①、用repadmin身份登录shenzhen数据库，创建主复制组scott_mg&nbsp;&nbsp;<br />
SQL&gt; execute dbms_repcat.create_master_repgroup('scott_mg');&nbsp;&nbsp;<br />
说明：scott_mg组名可以根据用户的需求自由命名。&nbsp;&nbsp;<br />
②、在复制组scott_mg里加入数据库对象&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat.create_master_repobject(sname=&gt;'scott',oname=&gt;'dept', type=&gt;'table',use_existing_object=&gt;true,gname=&gt;'scott_mg');&nbsp;&nbsp;<br />
参数说明：&nbsp;&nbsp;<br />
sname 实现数据库复制的用户名称&nbsp;&nbsp;<br />
oname 实现数据库复制的数据库对象名称&nbsp;&nbsp;<br />
(表名长度在27个字节内，程序包名长度在24个字节内)&nbsp;&nbsp;<br />
type 实现数据库复制的数据库对象类别&nbsp;&nbsp;<br />
(支持的类别：表，索引，同义词，触发器，视图，过程，函数，程序包，程序包体)&nbsp;&nbsp;<br />
use_existing_object true表示用主复制节点已经存在的数据库对象&nbsp;&nbsp;<br />
gname 主复制组名&nbsp;&nbsp;<br />
③、对数据库对象产生复制支持&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat.generate_replication_support('scott','dept','table');&nbsp;&nbsp;<br />
(说明：产生支持scott用户下dept表复制的数据库触发器和程序包)&nbsp;&nbsp;<br />
④、确认复制的组和对象已经加入数据库的数据字典&nbsp;&nbsp;<br />
SQL&gt;select gname, master, status from dba_repgroup;&nbsp;&nbsp;<br />
SQL&gt;select * from dba_repobject;&nbsp;&nbsp;<br />
<strong>7、创建主复制节点</strong>&nbsp;&nbsp;<br />
①、用repadmin身份登录shenzhen数据库，创建主复制节点&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat.add_master_database&nbsp;&nbsp;<br />
(gname=&gt;'scott_mg',master=&gt;'beijing.test.com.cn',use_existing_objects=&gt;true, copy_rows=&gt;false, propagation_mode =&gt; 'asynchronous');&nbsp;&nbsp;<br />
参数说明：&nbsp;&nbsp;<br />
gname 主复制组名&nbsp;&nbsp;<br />
master 加入主复制节点的另一个数据库&nbsp;&nbsp;<br />
use_existing_object true表示用主复制节点已经存在的数据库对象&nbsp;&nbsp;<br />
copy_rows false表示第一次开始复制时不用和主复制节点保持一致&nbsp;&nbsp;<br />
propagation_mode 异步地执行&nbsp;&nbsp;<br />
②、确认复制的任务队列已经加入数据库的数据字典&nbsp;&nbsp;<br />
SQL&gt;select * from user_jobs;&nbsp;&nbsp;<br />
<strong>8、使同步组的状态由停顿(quiesced )改为正常(normal)</strong>&nbsp;&nbsp;<br />
①、用repadmin身份登录shenzhen数据库，运行以下命令&nbsp;&nbsp;<br />
SQL&gt; execute dbms_repcat.resume_master_activity('scott_mg',false);&nbsp;&nbsp;<br />
②、确认同步组的状态为正常(normal)&nbsp;&nbsp;<br />
SQL&gt; select gname, master, status from dba_repgroup;&nbsp;&nbsp;<br />
③、如果这个①命令不能使同步组的状态为正常(normal)，可能有一些停顿的复制，运行以下命令再试试(建议在紧急的时候才用)：&nbsp;&nbsp;<br />
SQL&gt; execute dbms_repcat.resume_master_activity('scott_mg',true);&nbsp;&nbsp;<br />
<strong>9、创建复制数据库的时间表，我们假设用固定的时间表：10分钟复制一次。</strong>&nbsp;&nbsp;<br />
①、用repadmin身份登录shenzhen数据库，运行以下命令&nbsp;&nbsp;<br />
SQL&gt;begin&nbsp;&nbsp;<br />
dbms_defer_sys.schedule_push (&nbsp;&nbsp;<br />
destination =&gt; 'beijing.test.com.cn',&nbsp;&nbsp;<br />
interval =&gt; 'sysdate + 10/1440',&nbsp;&nbsp;<br />
next_date =&gt; sysdate);&nbsp;&nbsp;<br />
end;&nbsp;&nbsp;<br />
/&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
SQL&gt;begin&nbsp;&nbsp;<br />
dbms_defer_sys.schedule_purge (&nbsp;&nbsp;<br />
next_date =&gt; sysdate,&nbsp;&nbsp;<br />
interval =&gt; 'sysdate + 10/1440',&nbsp;&nbsp;<br />
delay_seconds =&gt; 0,&nbsp;&nbsp;<br />
rollback_segment =&gt; '');&nbsp;&nbsp;<br />
end;&nbsp;&nbsp;<br />
/&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
②、用repadmin身份登录beijing数据库，运行以下命令&nbsp;&nbsp;<br />
SQL&gt;begin&nbsp;&nbsp;<br />
dbms_defer_sys.schedule_push (&nbsp;&nbsp;<br />
destination =&gt; ' shenzhen.test.com.cn ',&nbsp;&nbsp;<br />
interval =&gt; 'sysdate + 10 / 1440',&nbsp;&nbsp;<br />
next_date =&gt; sysdate);&nbsp;&nbsp;<br />
end;&nbsp;&nbsp;<br />
/&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
SQL&gt;begin&nbsp;&nbsp;<br />
dbms_defer_sys.schedule_purge (&nbsp;&nbsp;<br />
next_date =&gt; sysdate,&nbsp;&nbsp;<br />
interval =&gt; 'sysdate + 10/1440',&nbsp;&nbsp;<br />
delay_seconds =&gt; 0,&nbsp;&nbsp;<br />
rollback_segment =&gt; '');&nbsp;&nbsp;<br />
end;&nbsp;&nbsp;<br />
/&nbsp;&nbsp;<br />
<strong>10、添加或修改两边数据库的记录，跟踪复制过程</strong>&nbsp;&nbsp;<br />
如果你想立刻看到添加或修改后数据库的记录的变化，可以在两边repadmin用户下找到push的job_number，然后运行：&nbsp;&nbsp;<br />
SQL&gt;exec dbms_job.run(job_number);&nbsp;&nbsp;<br />
<span style="font-size: 18pt">三、异常情况的处理&nbsp;</span>&nbsp;<br />
<strong>1、检查复制工作正常否，可以在repadmin 用户下查询user_jobs</strong>&nbsp;&nbsp;<br />
SQL&gt;select job,this_date,next_date,what, broken from user_jobs;&nbsp;&nbsp;<br />
正常的状态有两种：&nbsp;&nbsp;<br />
任务闲——this_date为空，next_date为当前时间后的一个时间值&nbsp;&nbsp;<br />
任务忙——this_date不为空，next_date为当前时间后的一个时间值&nbsp;&nbsp;<br />
异常状态也有两种：&nbsp;&nbsp;<br />
任务死锁——next_date为当前时间前的一个时间值&nbsp;&nbsp;<br />
任务死锁——next_date为非常大的一个时间值，例如：4001-01-01&nbsp;&nbsp;<br />
这可能因为网络中断照成的死锁&nbsp;&nbsp;<br />
解除死锁的办法：&nbsp;&nbsp;<br />
$ps &#8211;ef|grep orale&nbsp;&nbsp;<br />
找到死锁的刷新快照的进程号ora_snp*，用kill &#8211;9 命令删除此进程&nbsp;&nbsp;<br />
然后进入repadmin 用户SQL&gt;操作符下，运行命令：&nbsp;&nbsp;<br />
SQL&gt;exec dbms_job.run(job_number);&nbsp;&nbsp;<br />
说明：job_number 为用select job,this_date,next_date,what from user_jobs;命令查出的job编号。&nbsp;&nbsp;<br />
<strong>2、增加或减少复制组的复制对象</strong>&nbsp;&nbsp;<br />
①、停止主数据库节点的复制动作，使同步组的状态由正常(normal)改为停顿(quiesced )&nbsp;&nbsp;<br />
用repadmin身份登录shenzhen数据库，运行以下命令&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat.suspend_master_activity (gname =&gt; 'scott_mg');&nbsp;&nbsp;<br />
②、在复制组scott_mg里加入数据库对象，保证数据库对象必须有主关键字。&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat.create_master_repobject(sname=&gt;'scott',oname=&gt;'emp', type=&gt;'table',use_existing_object=&gt;true,gname=&gt;'scott_mg');&nbsp;&nbsp;<br />
对加入的数据库对象产生复制支持&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat.generate_replication_support('scott','emp','table');&nbsp;&nbsp;<br />
③、在复制组scott_mg里删除数据库对象。&nbsp;&nbsp;<br />
SQL&gt;execute dbms_repcat.drop_master_repobject ('scott','dept','table');&nbsp;&nbsp;<br />
④、重新使同步组的状态由停顿(quiesced )改为正常(normal)。&nbsp;&nbsp;<br />
SQL&gt; execute dbms_repcat.resume_master_activity('scott_mg',false); </div>
 <img src ="http://www.blogjava.net/hhhaaawwwkkk/aggbug/267823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hhhaaawwwkkk/" target="_blank">向前走的螃蟹</a> 2009-04-28 08:35 <a href="http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/28/267823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建oracle dblink 过程[转]</title><link>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/27/267751.html</link><dc:creator>向前走的螃蟹</dc:creator><author>向前走的螃蟹</author><pubDate>Mon, 27 Apr 2009 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/27/267751.html</guid><wfw:comment>http://www.blogjava.net/hhhaaawwwkkk/comments/267751.html</wfw:comment><comments>http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/27/267751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hhhaaawwwkkk/comments/commentRss/267751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hhhaaawwwkkk/services/trackbacks/267751.html</trackback:ping><description><![CDATA[&nbsp;俩台不同的数据库服务器，从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据，这个时候可以使用dblink。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 其实dblink和数据库中的view差不多，建dblink的时候需要知道待读取数据库的ip地址，ssid以及数据库用户名和密码。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建可以采用两种方式：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、已经配置本地服务<br />
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            　　create&nbsp;public&nbsp;database <br />
            　　link&nbsp;fwq12&nbsp;connect&nbsp;to&nbsp;fzept <br />
            　　identified&nbsp;by&nbsp;neu&nbsp;using&nbsp;'fjept'</td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE &nbsp;DATABASE &nbsp;LINK +&nbsp; 数据库链接名（<span style="font-size: 8pt">以后就通过这个名字来进行调用远程数据库的内容</span>。）CONNECT TO&nbsp;+ 用户名（<span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>是用来连接到远程数据库的合法</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>Oracle</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>用户名</span>） IDENTIFIED BY + &nbsp;密码（<span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>为该用户连接到</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>Oracle</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>时候的合法密码</span>） USING +&nbsp; 本地配置的数据的实例名（<span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>为该</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>Oracle</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>数据库所在的主机上的</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>tnsnames.ora</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>文件里边定义的数据库连接串</span>）;<br />
在安装目录下，如：E:\Oracle\Ora81\network\ADMIN下用写字板或记事本打开TNSNAME.ORA文件，<br />
<br />
SELECT COUNT(*) FROM TABLE_NAME@DB_LINK WHERE WHERE_CLAUSE;//<span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>查阅远程数据库的内容。<br />
</span><span style="font-size: 10pt">UPDATE <span style="color: #000000"><span style="font-size: 10pt"><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#84;&#69;&#83;&#84;&#46;&#84;&#69;&#83;&#84;&#64;&#68;&#66;&#95;&#76;&#73;&#78;&#75;"><font size="4">TEST.TEST@DB_LINK</font></a><font size="4"> </font></span><font size="4">SET SO_NBR=NEW_SO_NBR WHERE WHERE_CLAUSE</font></span><font size="4">;//</font><span style="mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;><font size="4"><span style="font-size: 8pt"><span style="mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;><font size="4">修改远程数据库的内容。</font></span></span><br />
</font></span></span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>在实际使用过程中，还可以通过为这个远程表建立一个同义词来进一步增加透明性，使该数据库连接串对于程序和开发人员来讲完全透明。</span><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
CREATE SYNONYM TABLE_NAME FOR TABLE_NAME@DB_LINK;&nbsp;<br />
</span></font></font><br />
&nbsp;&nbsp;&nbsp;&nbsp; 2、未配置本地服务<br />
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3"><font style="font-weight: bold; color: #990000">以下是引用片段：</font><br />
            create&nbsp;database&nbsp;link&nbsp;linkfwq <br />
            　　&nbsp;connect&nbsp;to&nbsp;fzept&nbsp;identified&nbsp;by&nbsp;neu <br />
            　　&nbsp;using&nbsp;'(DESCRIPTION&nbsp;= <br />
            　　&nbsp;(ADDRESS_LIST&nbsp;= <br />
            　　&nbsp;(ADDRESS&nbsp;=&nbsp;(PROTOCOL&nbsp;=&nbsp;TCP)(HOST&nbsp;=&nbsp;10.142.202.12)(PORT&nbsp;=&nbsp;1521)) <br />
            　　&nbsp;) <br />
            　　&nbsp;(CONNECT_DATA&nbsp;= <br />
            　　&nbsp;(SERVICE_NAME&nbsp;=&nbsp;fjept) <br />
            　　&nbsp;) <br />
            　　&nbsp;)';</td>
        </tr>
    </tbody>
</table>
<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; host＝数据库的ip地址，service_name＝数据库的ssid。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实两种方法配置dblink是差不多的，我个人感觉还是第二种方法比较好，这样不受本地服务的影响。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库全局名称可以用以下命令查出<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT * FROM GLOBAL_NAME;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查询远端数据库里的表<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT &#8230;&#8230; FROM 表名@数据库链接名;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查询、删除和插入数据和操作本地的数据库是一样的，只不过表名需要写成&#8220;表名@dblink服务器&#8221;而已。</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 附带说下同义词创建:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE SYNONYM同义词名FOR 表名;<br />
&nbsp;&nbsp;&nbsp;&nbsp; CREATE SYNONYM同义词名FOR 表名@数据库链接名;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 删除dblink：DROP&nbsp; PUBLIC&nbsp; DATABASE&nbsp; LINK linkfwq。<br />
<br />
如何知道当前用户、当前系统中有哪些数据库连接串？<font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
SELECT * FROM USER_DB_LINKS; <br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>这个查询会给出当前用户的数据库联接的名字、联接用户名、联接密码、要连接的主机以及创建时期。</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
SELECT * FROM DBA_DB_LINKS; <br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>这个查询会给出当前系统中所有的数据库联接的创建用户、联接用户名、要连接的主机以及创建时期。</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
SELECT * FROM V$DBLINK; <br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>这个查询会给出当前打开的数据库联接。</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
4</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>。常见错误处理：</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
//////////////////////////////////////////////////////////////// <br />
1</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>。不能分解服务名：</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>登录到远程服务器上的结果：</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
net97&gt;show parameters global_name <br />
<br />
NAME TYPE VALUE <br />
------------------------------------ ------- ------------------------------ <br />
global_names boolean FALSE <br />
net97&gt; <br />
net97&gt;drop database link jinhua; <br />
<br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>数据库链接已丢弃。</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
<br />
net97&gt;create database link jinhua <br />
2 connect to username identified by password <br />
3 using 'jinhua'; <br />
<br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>数据库链接已创建。</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
<br />
net97&gt;select * from so@jinhua; <br />
select * from so@jinhua <br />
* <br />
ERROR </span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>位于第</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> 1 </span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>行</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>: <br />
ORA-12154: TNS:</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>不能分解服务名称</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>. <br />
net97&gt;conn username/password@jinhua; <br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>已连接。</span></font></font><font face="宋体"><font size="4"><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?> <br />
net97&gt; <br />
</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>这是因为在</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>Oracle</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>数据库所在的</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>Unix</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>主机上面的</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>tnsnames.ora</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>文件里边没有对</span><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?>jinhua</span><span style="font-size: 9pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: "  ? mso-hansi-font-family: ?? ?;>这个服务名的定义。所以不能分解服务名。</span></font></font><span lang="EN-US" style="font-size: 9pt; font-family: "  ?; mso-bidi-font-size: 11.0pt?><font face="宋体" size="4">&nbsp;<br />
</font></span><br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果创建全局dblink，必须使用systm或sys用户，在database前加public。<br />
参考资料:<br />
&nbsp; <a href="http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_admin.htm#i1008271">http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_admin.htm#i1008271</a><br />
</p>
 <img src ="http://www.blogjava.net/hhhaaawwwkkk/aggbug/267751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hhhaaawwwkkk/" target="_blank">向前走的螃蟹</a> 2009-04-27 17:14 <a href="http://www.blogjava.net/hhhaaawwwkkk/archive/2009/04/27/267751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>