首页 > 解决方案 > 尝试安装 utPLSQL 3.1.10

问题描述

我已经从 github 下载了 utPLSQL.zip,解压缩了存档,打开了与 zip 捆绑在一起的用户指南,并开始按照手动安装过程进行操作。

我正在使用 Oracle 18c XE、SQL Developer 20.2 和 utPLSQL 3.1.10。我正在使用sqlplus执行脚本,使用命令登录:sqlplus '/ as sysdba'

前三个脚本运行良好:

@create_utplsql_owner.sql <schema name> <password> users;
@install.sql <schema name>;
@install_ddl_trigger.sql <schema name>

第四个脚本:

@create_synonyms_and_grants_for_public.sql <schema name>;

失败并出现异常:在用户 PUBLIC 的模式中为 UTPLSQL 对象创建同义词 create public synonym ut for .ut * ERROR at line 1: ORA-00955: name is already used by an existing object

有没有人遇到过这个?我尝试恢复到 utPLSQL 3.1.9 但遇到了同样的问题......

谢谢!

标签: oracleutplsql

解决方案


我第一次安装 utPLSQL 失败了。我删除了打算用作测试存储库的模式,这就是这个特定问题开始的时候。

深入研究 utPLSQL 安装脚本和一些 Oracle 文档,我发现删除模式不会从表 DBA_SYNONYMS 中删除所述模式的公共同义词。

运行安装脚本: install.sql 创建几个同义词,所有者在哪里。

运行安装脚本:create_synonyms_and_grants_for_public.sql 创建大量公共同义词。

删除模式以重置和重新安装 utPLSQL 只会删除所有者所在的同义词——必须手动删除公共同义词。该脚本完成这项工作并允许进行全新安装:

declare
    sqq varchar2(250);
    v_code varchar2(250);
    v_errm varchar2(250);

    cursor del_syns is
        SELECT synonym_name
        FROM DBA_SYNONYMS
        WHERE table_owner = 'C##UNIT_TEST_REPOSITORY';

begin

  FOR syn_name IN del_syns
  LOOP
    sqq := 'drop public synonym ' || syn_name.synonym_name || ' force';
    dbms_output.put_line(sqq);
    execute immediate sqq;
  END LOOP;

EXCEPTION
    when others then
        v_code := SQLCODE;
        v_errm := SUBSTR(SQLERRM, 1, 64);
        DBMS_OUTPUT.PUT_LINE ('------- Error code ' || v_code || ': ' || v_errm);

end;

推荐阅读