oracle同义词与dblink

           Oracle同义词(synonyms)

        从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。这种映射关系体现在同个数据库中通过表别名进行访问,也体现在访问远程数据库中某张表,这时候就需要创建dblink。

        同义词创建权限       

 用户可以在自己的模式中创建同义词,这需要具有CREATE SYNONYM这个系统权限。如果希望在其它用户的模式中创建同义词,则需要具有CREATE ANY SYNONYM这个系统权限。普通用户创建的同义词一般都是私有同义词,公有同义词一般由DBA创建,普通用户如果希望创建同义词,则需要CREATE PUBLIC SYNONYM这个系统权限。

创建同义词

create public synonym table_name1 for user.table_name2。

table_name1是同义词名称,table_name2是具体要为哪张表创建同义词,table_name1是table_name2的别名。

假设当前用户为了方便地访问scott用户的表dept,可以执行下面的CREATE语句创建同义词:CREATE PUBLIC SYNONYM sy_dept FOR scott.dept;

这样在具有相应权限的情况下,当前用户就可以通过这个同义词代替原来的表进行相应操作:

通过同义词查询:SELECT deptno,dname,loc FROM sy_dept;

通过同义词写入一行数据:INSERT INTO sy_dept(deptno,dname,loc)   VALUES(100,'NETWORK','BEIJING'); 

用户可以删除自己创建的同义词,如果要删除其他用户创建的同义词,则要具有DROP ANY SYNONYM系统权限。DBA可以删除所有的公共同义词,普通用户需要具有DROP PUBLIC SYNONYM系统权限,才能删除公共同义词。同义词被删除以后,它的相关信息也将从数据字典中删除。

dblink

此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后再创建数据库同义词:create synonym table_name for table_name@DB_Link;  

DB_Link就是远程要访问的数据库地址别名,table_name就是要访问的远程数据库服务器上的某张表。

创建数据库链接:
    create database link linkname
    connect to username
    identified by password
    using 'connection string';

connection string可以有两种形式:

1,在文件tnsnames.ora配置的名称:
   例如:
   CDRDL =(DESCRIPTION =(

               ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.147.129.29)(PORT = 2521)))
           (CONNECT_DATA =(SERVICE_NAME = cdrdb))

)
   tnsnames.ora是Oracle数据库服务器安装路径下的配置文件,默认路径:X:\oracle\product\10.2.0\db_1\NETWORK\ADMIN文件下。

此时也可以写成:
    create database link linkname
    connect to username
    identified by password
    using 'CDRDL';

 2,也可以直接使用‘=’号后面的字符串,
    例如:
    create database link linkname
    connect to username
    identified by password
    using '(DESCRIPTION =(

               ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.147.129.29)(PORT = 2521)))
           (CONNECT_DATA =(SERVICE_NAME = cdrdb))

 )'; 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—



你可能感兴趣的:(oracle,同义词,DBlink)