第一,创建dblink
oracle创建dblink方法
1.应用场景:
现有两个数据库,一个是nc650115,一个是nc56,现要通过dblink在nc650115连接nc56。
2.先在nc650115查看是否拥有创建dblink权限。在nc650115中执行
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
有权限显示如下
没有权限到sys里面授权
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to nc650115;
3.在nc650115下创建dblink。
create public database link NC65DBLINK
connect to nc56 identified by nc56
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.17.254)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
其中NC65DBLINK 为dblink名字,
connect to 需要连接的用户名 identified by 密码
HOST=需要连接数据库的ip
SERVICE_NAME=数据库实例
查看是否创建成功
select * from dba_db_links;
select owner,object_name from dba_objects where object_type='DATABASE LINK';--查询时间久
4.操作:
查询nc56里面的数据
select * from crm_bd_building@NC65DBLINK
删除dblink
drop public database link NC65DBLINK
第二,此时错误日志未创建
可直接从其他数据库建立,建立后没有id自增
第三,报pl/sql:ora-02289:序列不存在
运行语句://这就是报错的插入语句
insert into ScadaDeviceList (DeviceId, DeviceNumber) values (SEQ_DeviceList.NextVal,'SCADA01')
直接运行下面的语句添加自增序列就行
CREATE SEQUENCE SEQ_DeviceList
START WITH 80
INCREMENT BY 1
NOMINVALUE
MAXVALUE 9999999999999999999999999
NOCYCLE
NOORDER
CACHE 100;
第四,ora-01031:权限不足,去主机连接数据库运行下面两个语句
grant connect,resource,dba to cssy;
赋权DBA之后,还有这个错误。
执行 grant all privileges to cssy;
赋予任何主机访问数据的权限,问题得到了解决。