在Oracle 10g中建立没有域名的DB_LINK

Oracle10g DB_LINK无域名配置
本文介绍如何在Oracle10g中通过不同方法修改GLOBAL_NAME参数以实现建立不带域名的DB_LINK,包括使用ALTER DATABASE和UPDATE语句的具体步骤及效果。

在Oracle 10g中建立没有域名的DB_LINK:

    记录如下:

    ——用alter语句这种修改方法,重启数据库,无效!

    alter database rename global_name to ORCL;

    ——用alter语句这种修改方法,重启数据库,有效!但是不是我想要的结果,虽然域名修改后变短了,但是建立DB_LINK还有域名存在!

    alter database rename global_name to ORCL.QIANGGUO.COM;

    ——用update语句这种修改方法,重启数据库,有效!创建DB_LINK没有域名存在!

    update global_name set global_name='ORCL';

    Microsoft Windows [版本 5.2.3790]

    (C) 版权所有 1985-2003 Microsoft Corp.

    C:\Documents and Settings\Administrator>sqlplus "/ as sysdba"

    SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 19 14:22:37 2008

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    连接到:

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options

    SQL> show parameter global_name;

    NAME TYPE VALUE

  ------------------------------------ ----------- ------------------------------

    global_names boolean FALSE

    SQL> show parameter global_name

    NAME TYPE VALUE

  ------------------------------------ ----------- ------------------------------

    global_names boolean FALSE

    SQL> select * from global_name;

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

    SQL> alter database rename global_name to ORCL;

    数据库已更改。

    SQL> select * from global_name; ——在这里可以看到,把global_name直接修改为“ORCL”,并不起作用!

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

    SQL> shutdown immediate;

    数据库已经关闭。

    已经卸载数据库。

    ORACLE 例程已经关闭。

    SQL> startup

    ORACLE 例程已经启动。

    Total System Global Area 289406976 bytes

    Fixed Size 1248576 bytes

    Variable Size 134218432 bytes

    Database Buffers 146800640 bytes

    Redo Buffers 7139328 bytes

    数据库装载完毕。

    数据库已经打开。

    SQL> select * from global_name; ——重启数据库后,仍然不起作用,

GLOBAL_NAME并没有变成我想要的“ORCL”!

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

    SQL> alter database rename global_name to ORCL.QIANGGUO.COM; ——如果修改为带域名的“ORCL.QIANGGUO.COM”,重启数据库将起作用,域名发生了变化!

    数据库已更改。

    SQL> select * from global_name;

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL.QIANGGUO.COM

    SQL> alter database rename global_name to ORCL; ——再次试着修改为“ORCL”,仍然不行!

    数据库已更改。

    SQL> select * from global_name;

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL.AHDX.COM

    SQL> update global_name set global_name='ORCL'; ——如果用update语句修改,重启数据库,成功!哈哈!

    已更新 1 行。

    SQL> select * from global_name;

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL

    SQL> select * from global_name;

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL

    SQL> commit;

    提交完成。

    SQL> shutdown immediate

    数据库已经关闭。

    已经卸载数据库。

    ORACLE 例程已经关闭。

    SQL> startup

    ORACLE 例程已经启动。

    Total System Global Area 289406976 bytes

    Fixed Size 1248576 bytes

    Variable Size 134218432 bytes

    Database Buffers 146800640 bytes

    Redo Buffers 7139328 bytes

    数据库装载完毕。

    数据库已经打开。

    SQL> select * from global_name;——如果用update语句修改,重启数据库,成功!哈哈!

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL

    SQL>

    分析一下:global_name视图

    创建global_name视图的语句如下:

    create or replace view global_name

    as

    select value$ from sys.props$ where name = 'GLOBAL_DB_NAME'

    不能直接修改sys.props$内部表,会告诉你权限不足!

    所以可以用update修改!

验证如下:

    SQL> select * from global_name;

    GLOBAL_NAME

  --------------------------------------------------------------------------------

    ORCL

    SQL> select value$ from sys.props$ where name = 'GLOBAL_DB_NAME';

    VALUE$

  --------------------------------------------------------------------------------

    ORCL

    SQL>


<think> 我们正在处理一个关于Oracle数据库中使用SQL语句删除数据库链接(database link)的问题。根据引用[3]中的信息,删除数据库链接的语法是: DROP PUBLIC DATABASE LINK link_name; 或者对于非公有的数据库链接,使用: DROP DATABASE LINK link_name; 注意,如果创建的是公有的数据库链接(使用PUBLIC关键字),那么在删除时也需要使用PUBLIC关键字。此外,引用[3]还提到,删除公有数据库链接需要使用SYSTEM或SYS用户。 因此,删除步骤可以总结为: 1. 确定要删除的数据库链接是公有的还是私有的。 2. 使用相应的用户(如果是公有链接,则需SYSTEM或SYS用户;私有链接则可以是创建它的用户或具有足够权限的用户)。 3. 执行删除语句。 示例: 删除公有数据库链接: DROP PUBLIC DATABASE LINK dblink_name; 删除私有数据库链接(当前用户下的): DROP DATABASE LINK dblink_name; 注意:在删除之前,请确保该数据库链接不再被使用,以免影响现有程序。 根据引用[3]的内容,我们得到上述信息。 因此,回答用户的问题:在Oracle服务器上删除database link,可以使用上述的DROP语句。 同时,我们也可以提供查看已有数据库链接的方法,以便用户确认要删除的链接名称和类型。 查看当前用户下的数据库链接: SELECT * FROM USER_DB_LINKS; 查看所有的公有数据库链接(需要DBA权限): SELECT * FROM DBA_DB_LINKS; 步骤: 1. 连接到Oracle数据库(使用SQL*Plus或其他工具)。 2. 确认当前用户是否有权限删除指定的数据库链接。如果删除公有链接,则必须使用SYSTEM或SYS用户。 3. 执行删除语句。 例如,假设我们要删除一个名为'MY_DBLINK'的私有数据库链接,则执行: DROP DATABASE LINK MY_DBLINK; 如果要删除名为'PUBLIC_LINK'的公有数据库链接,则使用SYS用户执行: DROP PUBLIC DATABASE LINK PUBLIC_LINK; 注意:删除操作不可逆,请谨慎操作。 </think>### 在Oracle服务器上删除Database Link的方法 根据Oracle官方文档和实践总结,删除数据库链接的方法如下: #### 1. **删除私有Database Link** ```sql DROP DATABASE LINK 链接名称; ``` - 适用于当前用户创建的私有链接 - 示例:删除名为`ora9i`的链接 ```sql DROP DATABASE LINK ora9i; ``` #### 2. **删除公有Database Link** ```sql DROP PUBLIC DATABASE LINK 链接名称; ``` - 需使用`SYSTEM`或`SYS`管理员账户操作[^3] - 示例:删除公有链接`global_link` ```sql DROP PUBLIC DATABASE LINK global_link; ``` #### 3. **验证删除结果** ```sql SELECT * FROM ALL_DB_LINKS WHERE DB_LINK = '链接名称'; ``` - 若查询返回空行,说明已成功删除 #### 注意事项: 1. 删除权限要求: - 私有链接:需是链接创建者或拥有`DROP ANY DATABASE LINK`权限 - 公有链接:必须使用`SYSTEM/SYS`账户[^3] 2. 依赖对象: - 删除前需确保无程序/触发器使用该链接(如引用[4]的同步触发器) 3. 名称规范: - 若链接名称包含域名(如`ora9i.us.oracle.com`),需使用完整名称删除 > **操作示例**: > ```sql > -- 连接到SQL*Plus > sqlplus / as sysdba > > -- 删除公有链接 > DROP PUBLIC DATABASE LINK remote_db; > > -- 验证结果 > SELECT OWNER, DB_LINK FROM DBA_DB_LINKS; > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值