首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle -如何使用oracle变量创建oracle用户?

Oracle -如何使用oracle变量创建oracle用户?
EN

Stack Overflow用户
提问于 2012-12-10 17:06:38
回答 1查看 171关注 0票数 0

我想用脚本文件中的oracle变量创建一个oracle用户,而不是PL/SQL客户端。

如下所示:

代码语言:javascript
复制
define var DBUSERNAME = 'AAA';

CREATE USER '&DBUSERNAME' PROFILE "DEFAULT" IDENTIFIED BY "pwd123" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK
BEGIN
DBMS_WM.GrantSystemPriv('ACCESS_ANY_WORKSPACE', '&DBUSERNAME', 'NO');
END;

GRANT ADMINISTER ANY SQL TUNING SET TO '&DBUSERNAME'
GRANT ADMINISTER DATABASE TRIGGER TO '&DBUSERNAME'
BEGIN
dbms_resource_manager_privs.grant_system_privilege(privilege_name=>'ADMINISTER_RESOURCE_MANAGER', grantee_name=>'&DBUSERNAME', admin_option=>FALSE);
END;

GRANT ADMINISTER SQL TUNING SET TO '&DBUSERNAME'
GRANT ADVISOR TO '&DBUSERNAME'
...
EN

回答 1

Stack Overflow用户

发布于 2012-12-10 17:45:03

对于DDL调用,用户名不应包含在引号中:

代码语言:javascript
复制
define var DBUSERNAME = 'AAA';

CREATE USER &DBUSERNAME PROFILE "DEFAULT" ...

使用双引号是可以接受的,但我建议您只有在确定名称将设置为大写以避免将来的大小写问题时才这样做-最好跳过引号以避免这种情况。(你也不需要在create调用中用双引号将配置文件、密码等括起来,只要你没有任何奇数名称的东西,但是为了安全起见,像get_ddl这样的实用程序总是会把它们包括在内)。不过,如果它们不是大写的,那么过程调用可能无法识别该名称。

脚本中唯一需要单引号的地方是对GrantSystemPrivgrant_system_privilege的调用,在这些调用中,您将字符串作为参数进行传递。

您还缺少DDL语句后的分号,以及匿名PL/SQL块后的终止/

代码语言:javascript
复制
GRANT ADMINISTER DATABASE TRIGGER TO &DBUSERNAME;

代码语言:javascript
复制
BEGIN
    dbms_resource_manager_privs.grant_system_privilege(
        privilege_name=>'ADMINISTER_RESOURCE_MANAGER',
        grantee_name=>'&DBUSERNAME',
        admin_option=>FALSE);
END;
/

等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13797841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档