--创建 CREATE public database link test_link CONNECT TO scott IDENTIFIED BY tiger using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127001)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = LEE) ) )'; --使用 select ename from emp@test_link; --删除 drop public database link TEST_LINK;
一:dblink创建:
1、已经配置本地服务
create public database
link toBeJing connect to scott
identified by tiger using 'BEJING'
数据库连接字符串'BEJING'是当前客户端数据库中TNSNAMESORA文件里定义的别名名称可以用NET8 EASY CONFIG或者直接修改TNSNAMESORA里定义
2、直接建立链接
create database link toBeJing
connect to scott identified by tiger
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XXXX )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = BJORCL)
)
)';
host=数据库的ip地址,service_name=数据库的ssid。
其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。
注意: 假如创建全局dblink,则必须使用systm或sys用户,在database前加public。
1先创建PUBLIC DATABASE LINK,不用指定用户和密码
scott@TEST>conn system/test
Connected
system@TEST>CREATE PUBLIC DATABASE LINK orcl USING 'BEJING';
Database link created
2再在各个用户下创建私有DATABASE LINK(同PUBLIC DATABASE LINK名称相同),指定用户和密码
system@TEST>conn scott/tiger
Connected
scott@TEST>CREATE DATABASE LINK orcl CONNECT TO scott IDENTIFIED BY tiger;
Database link created
实际上相当于:
CREATE DATABASE LINK orcl USING 'BEJING' CONNECT TO scott IDENTIFIED BY tiger;
db link 有3种类型,我这里只讨论其中两种,connected user和fixed user。
connected user,简单来说,连接方数据库以connected的用户来连接远程数据库。
fixed user,简单来说,连接方数据库以fixed(指定的)用户来连接远程数据库。
看看创建db link语法,你对这两种类型就比较清楚了。
创建connected user的db link语法:
create databas link foo connect to scott identified by tiger using 'BEJING' ;
创建fixed user的db link语法:
create databas link foo using 'BEJING' ;
db link 的命名和global_names有关,global_name是数据库全局名称,global_name在你所管理的数据库中要保证唯一。数据库名称是db_name。数据库名称一般都取得比较短,我的习惯一般取长度4个字符,重名概率高。
所以,oracle模仿域名搞出一个global_name,global_name=db_name+db_domain。
有了global_name,就可以实现数据库命名的全局唯一。例:ORCLREGRESSRDBMSDEVUSORACLECOM
数据库全局名称可以用以下命令查出
SELECT FROM GLOBAL_NAME;
如果global_names=true,那么db link的命名要和远程数据库的global_name相同;
如果global_names=false,那么你可以随便命名db link。
查询global_names是true还是false,在pl/sql中的命令窗口(不是sql窗口)执行:show parameter global_names
二、dblink查询:
查看所有的数据库链接,进入系统管理员SQL> *** 作符下,运行命令:
SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
三、dblink删除:
DROP PUBLIC DATABASE LINK toBeJing
四、dblink使用:
SELECT……FROM表名@数据库链接名;
查询、删除和插入数据和 *** 作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。
例:查询北京数据库中emp表数据 select from emp@toBeJing;
五、同义词配合:
第四点中from emp@toBeJing可以创建同义词来替代:
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
如:create synonym bj_scott_emp for emp@toBeJing;
于是就可以用bj_scott_emp来替代带@符号的分布式链接 *** 作emp@toBeJing
DB LINK是独立于创建用户(USER_DB_LINKS的USERNAME)起作用的,其他用户无法使用这个连接,无权限也不能删除它。
查询ORACLE数据库名:SQL> select name from v$database。\x0d\查看实例名:SQL> select instance_name from v$instance。\x0d\数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。\x0d\数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。
一 数据库名
数据库名是数据库的 身份z号码 用于标示一个数据库 在参数文件中用DB_NAME表示
数据库名是在安装数据库 创建新的数据库 创建数据库控制文件 修改数据库结构 备份与恢复数据库时都需要使用到的
如何查看数据库名呢?方式有三
使用SQL语句 select name from v$database
使用show命令 show parameter db_name
查看参数文件 查看init ora文件
二 数据库实例名
数据库实例名是用于和 *** 作系统进行联系的标识 也就是说数据库和 *** 作系统之间的交互使用的是数据库实例名
实例名也被写入参数文件中 该参数为instance_name 在winnt平台中 实例名同时也被写入注册表
数据库名和实例名可以相同也可以不同 在一般情况下 数据库名和实例名是一对一的关系 但如果在oracle并行服务器架构(即oracle实时应用集群)中 数据库名和实例名是一对多的关系
如何查看当前数据库实例名呢?方式有三
使用SQL语句 select instance_name from v$instance
使用show命令 show parameter instance
查看参数文件 查看init ora文件
数据库实例名与ORACLE_SID两者都表示oracle实例 但是有区别的 instance_name是oracle数据库参数 而ORACLE_SID是 *** 作系统的环境变量 ORACLD_SID用于与 *** 作系统交互 也就是说 从 *** 作系统的角度访问实例名 必须通过ORACLE_SID
ORACLE_SID必须与instance_name的值一致 否则 你将会收到一个错误 在unix平台 是 ORACLE not available 在winnt平台 是 TNS 协议适配器错误
三 数据库域名与全局数据库名
随着由多个数据库构成的分布式数据库的普及 这种命令数据库的方法给数据库的管理造成一定的负担 因为各个数据库的名字可能一样 造成管理上的混乱
为了解决这种情况 引入了Db_domain参数 这样在数据库的标识是由Db_name(数据库名)和 Db_domain(数据库域名)两个参数共同决定的 避免了因为数据库重名而造成管理上的混乱 这类似于互连网上的机器名的管理
我们将Db_name和 Db_domain两个参数用 连接起来 表示一个数据库 并将该数据库的名称称为Global_name(全局数据库名) 即它扩展了Db_name Db_name参数只能由字母 数字 _ # $ 组成 而且最多 个字符
对一个网络数据库(Oracle database)的唯一标识 oracle建议用此种方法命令数据库 该值是在创建数据库是决定的 缺省值为Db_name Db_domain 在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值 如果要修改 Global_name 只能用ALTER DATABASE RENAME GLOBAL_NAME TO 命令进行修改 然后修改相应参数
如何查询数据库域名呢?方法有三
使用SQL命令 select value from v$parameter where name = db_domain
使用show命令 show parameter domain
查看参数文件 在参数文件中查询
四 数据库服务名
该参数是oracle i新引进的 在 i以前 我们用SID来表示标识数据库的一个实例 但是在Oracle的并行环境中 一个数据库对应多个实例 这样就需要多个网络服务名 设置繁琐 为了方便并行环境中的设置 引进了Service_name参数 该参数对应一个数据库 而不是一个实例
该参数的缺省值为Db_name Db_domain 即等于Global_name 如果数据库有域名 则数据库服务名就是全局数据库名 否则 数据库服务名与数据库名相同
如何查询数据库服务名呢?方法有三
使用SQL语句 select value from v$parameter where name = service_name
使用show命令 show parameter service_name
查看参数文件 在参数文件中查询
从Oracle i开如的oracle网络组件 数据库与客户端的连接主机串使用数据库服务名 之前用的是ORACLE_SID 即数据库实例名
五 网络服务名
网络服务名 又可以称为数据库别名(database alias) 是客户端程序访问数据库时所需要 屏蔽了客户端如何连接到服务器端的细节 实现了数据库的位置透明的特性 网络服务名被记录在tnsnames ora文件中
网络服务名是从客户端的角度出发 当客户端连接远程数据库或其他服务时 可以指定Net服务名 因此需要使用一个或多个命名方法将此Net服务名解析为连接数据库或其他服务的连接描述符
通常选择的是[本地] 将存储在本地客户机的tnsnames ora文件中的网络服务名解析为连接描述符
[Oracle Names] 由Oracle名字服务器提供为网络上的每个Oracle Net服务提供解析方法
[主机名] 通过TCP/IP环境中的主机别名连接到Oracle数据库服务
[Sun NIS]/[DCE CDS] 专用系统用的 在Windows 系统环境下不适用
六 总结
Oracle中各种命名的比较名称查询方式
名称→ 查询方式 DB_NAME→select name from v$database INSTANCE_NAME →select instance_name from v$instance ORACLE_SID→值和INSTANCE_NAME相同 DB_DOMAIN→select value from v$parameter where name= db_domain GLOBAL_NAME →DB_NAME DB_DOMAIN SERVICE_NAME→ select value from v$parameter where name= service_name NET_SERVICE_NAME→检查tnsnames ora文件
lishixinzhi/Article/program/Oracle/201311/16568
E:\toolKit>sqlplus "/ as sysdba"
SQLPlus: Release 92010 - Production on Fri Mar 2 10:26:49 2007
Copyright (c) 1982, 2002, Oracle Corporation All rights reserved
Connected to:
Oracle9i Enterprise Edition Release 92010 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 92010 - Production
Welcome HuiYi Environment
=========================
The time is 2007-03-02 10:26:50 (Friday)
The User Env Language is AMERICAN_AMERICAZHT16BIG5
Wish you a pleasant journey :)
SYS@huiyi>show parameter service_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string huiyi
关于oracle的全局数据库名称:
1、如果你只是单机使用的话起名字随便。
2、如果是多台电脑一起用的话,并且都是作为远程数据库的话,就要起一个在全局范围内能区分谁是谁的名字。
3、namedomain只是一个起名字的例子,(你可以不起这样的名字)。
4、举个例子:比如你的机器名叫xxxx那你就可以起namexxxx因为网络内的机器名字是不同的,这样就可以区分每一个oracle实例了。
说的比较乱,不知道你听明白了么。
---
以上,希望对你有所帮助。
以上就是关于Oracle 查询局域网内其他电脑上的Oracle数据库表全部的内容,包括:Oracle 查询局域网内其他电脑上的Oracle数据库表、查询ORACLE数据库名,应该怎么查询、Oracle体系结构中的各种名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)