oracle-分布式服务器

分布式数据库:物理上分开存放,逻辑上一个整体。

独立性:客户端不必关心数据如何分割和存储,只关心数据本身。

数据库的三种操作:

1.本地操作
2.远程操作
scott/tiger@192.168.1.252/orcl
3.分布式操作(借助链路)

配置分布式数据库

image

1.防火墙关闭或者开放oracle端口
2.开启oracle远程登录
tnsnames.ora和listener.ora中host设置为计算机名或IP地址(不是localhost)、
注意tnsnames.ora中的SERVICE_NAME是orcl还是orcl.localdomain
3.创建数据库链路:
create database link 链路名 connect to 远程用户名 identified by 远程密码 using '本地服务命名';
create database link l2vm2 connect to scott identified by tiger using 'remoteORCL';

第一次创建链路时需要授权
grant create database link to scott ;

4.创建本地服务命名:
打开 Net Manager--》服务命名--》左边+ --》 网络服务名 “remoteORCL” –-》 TCP/IP –-》 主机IP和端口 -- 》远程实例名"orcl",建好之后,保存配置

通过分布式访问远程数据库

通过链路访问远程数据库

使用同义词屏蔽分布式访问

SQL> create  synonym  remoteemp  for emp@l2vm2 ;

同义词已创建。

SQL> select * from remoteemp;

     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7369 SMITH                CLERK                    7902 17-12月-80
       800                    20

      7499 ALLEN                SALESMAN                 7698 20-2月 -81
      1600        300         30

      7521 WARD                 SALESMAN                 7698 22-2月 -81
      1250        500         30

创建远程表的本地视图:

SQL> create view empview
  2  as
  3  select * from emp@l2vm2;

视图已创建。

SQL> select * from empview;

     EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
       SAL       COMM     DEPTNO
---------- ---------- ----------
      7369 SMITH                CLERK                    7902 17-12月-80
       800                    20

      7499 ALLEN                SALESMAN                 7698 20-2月 -81
      1600        300         30

      7521 WARD                 SALESMAN                 7698 22-2月 -81
      1250        500         30

分布式数据库的跨界点更新(备份)

a快照(实体化视图):异步(主表修改后,定期同步到副本)

create snapshot empss
refresh start with sysdate
next next_day(sysdate,'星期一')   --循环,每个星期一
as select * from emp@l2vm2 ;

b触发器:修改之后立即同步

create  trigger update_emp
after update on emp
for each row
begin
	--将涨后的薪水备份到远程数据库中
	update  emp@l2vm2 set sal=:new.sal where empno=:new.empno ;
end ;
/
posted @ 2022-07-19 17:19  姬雨晨  阅读(267)  评论(0编辑  收藏  举报