DBLINK以及其他语法

项目中使用到DBLINK,总结了一下:
    当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。
    创建dblink一般有两种方式,确保在创建dblink之前该用户已拥有创建dblink的权限。
    摘抄网上关于权限的查看方法,以sys用户登录到本地数据库:

  select * from user_sys_privs t

  where t.privilege like upper('%link%');

  1 SYS CREATE DATABASE LINK NO

  2 SYS DROP PUBLIC DATABASE LINK NO

  3 SYS CREATE PUBLIC DATABASE LINK NO
  
   1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。

  create public database link

  to_remote connect to test identified by 12345 using 'remoteDB';

  其中to_remote是你创建的dblink名字,'remoteDB'是远程数据库的实例名,test/12345是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库'remoteDB'中tb_test表,sql语句如下所示

  select * from tb_test@to_remote;

   2.创建dblink的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库,

  create database link to_remote

  connect to test identified by 12345

  using '(DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.35)(PORT = 1521))

  )

  (CONNECT_DATA =

  (SERVER = rT)

  (SERVICE_NAME = remoteDB)

  )

  )';
   第二种是把第一种配置在tnsnames.ora文件中的信息,直接放在创建dblink语句后面。
  
    oracle创建序列:
    Create Sequence

  (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限)

  CREATE SEQUENCE emp_sequence

  INCREMENT BY 1 —— 每次加几个

  START WITH 1 —— 从1开始计数

  NOMAXVALUE —— 不设置最大值

  NOCYCLE —— 一直累加,不循环

  CACHE 10;

   只要定义了emp_sequence,你就可以用使CURRVAL,NEXTVAL

  CURRVAL=返回 sequence的当前值

  NEXTVAL=增加sequence的值,然后返回 sequence 值

    2、Alter Sequence

  你需要有sequence的owner,或者拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数。如果想要改变start值,必须 drop sequence 再 re-create .

  Alter sequence示例:


ALTER SEQUENCE emp_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后从头开始 NOCACHE ;


  可以影响Sequence的初始化参数:

  SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。

  简单的Drop Sequence

  DROP SEQUENCE order_seq;

猜你喜欢

转载自johnny-gz.iteye.com/blog/1726028
今日推荐