前端之家收集整理的这篇文章主要介绍了
数据的表前缀,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
很多系统的
数据库都给数据表
加上前缀,这是为什么呢? 因为每个系统都有一个对应的
数据库,有时多个系统都共用一个
数据库,而数据表的
名称可能相同,为了区分不同系统的数据表,所以每个系统的数据表都有一个自己的前缀,而且
加上前缀,相当于对数据表进行了
分类,从名字上看就知道哪个表是哪个系统的
数据库中的,方便管理。 前缀指
数据库中使用的
用户名 如:select * from abc.tablename@def abc是schema,oracle中的模块,通常是指
数据库的
用户,def是oracle中的dblink,创建dblink用于配置
数据库连接的别名,
sql的意思是在
查询def库中abc
用户下的表 前缀oracle叫schema 有可能是
用户,也有可能是表空间 表名带有$符号一般都是数据字典的视图或同义词。 例如:v$database
数据库运行信息、v$datafile所有数据
文件信息 oracle的dblink的使用 在跨
数据库查询的时候时常会用到dblink,例如:两台不同的
数据库服务器,从一台
数据库服务器的一个
用户读取另一台
数据库服务器下面的某个schema的数据,这个时候,使用dblink能够很方便的实现。 dblink和
数据库中的view
功能类似,建立dblink的时候需要直接到待读取
数据库的ip地址,ssid以及
数据库的
用户名和密码。 第一部分:如何创建dblink dblink的创建有两种方式: 1、在本地
数据库tnsnames.ora
文件中配置要访问的目标
数据库信息 create [public] database link to_mai connect to scott identified by tiger using 'to_mai'; 其中第一个to_mai是将要创建的dblink的名字, 第二个to_mai是tnsnames.ora
文件中配置的目标
数据库mai的连接信息: to_mai = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mai) ) ) scott/tiger是
登录到远程
数据库的
用户名和密码,然后当在本地
数据库使用to_mai的dblink访问远程
数据库的时候,会使用scott的身份来访问 2、本地
数据库tnsnames.ora
文件中没有配置要访问的
数据库信息 create [public] database link to_mai connect to scott identified by tiger using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mai) ) )'; 这一种方式其实是把第一种配置在tnsnames.ora
文件中的信息,直接放在dblink的后面 第二部分:dblink相关的权限 SYS@test > select * from user_sys_privs where privilege like upper('%link%'); USERNAME PRIVILEGE ADM ------------------------------ ---------------------------------------- --- SYS CREATE DATABASE LINK NO SYS DROP PUBLIC DATABASE LINK NO SYS CREATE PUBLIC DATABASE LINK NO 权限解释: CREATE DATABASE LINK(所创建的DBlink只能是创建者自己使用,别的
用户都使用不了) CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有
用户都可以使用) DROP PUBLIC DATABASE LINK(
删除Public dblink的权限) 第三部分:dblink的使用 假如说,我要比较两个库的
用户的差异,那么我现在可以这么做: select username from dba_users@to_mai minus select username from dba_users; 这样就可以得到在目标
数据库中有的
用户,而在当前
用户中没有的
用户列表了 另外一个:如果你乐意,你可以用triggers+dblink实现一个简单的数据同步,不过不建议使用,玩玩就行了。 第四部分:dblink的相关视图 dblink的常用视图有如下几个: dba_db_links,查看系统中所有的dblink v$dblink,用来查看当前
数据库中有哪些打开的dblink @后是实例名或数据源,一个简单例子,服务器上创建了2个
数据库实例,
名称分别为HR、BOSS,如果你用PL/
sql DEVELOPR等根据
登录了HR实例,此时可以省略@HR,若是要访问BOSS实例,则需要select * from dim.dim_area_no@BOSS