我想用脚本文件中的oracle变量创建一个oracle用户,而不是PL/SQL客户端。
如下所示:
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'
...发布于 2012-12-10 17:45:03
对于DDL调用,用户名不应包含在引号中:
define var DBUSERNAME = 'AAA';
CREATE USER &DBUSERNAME PROFILE "DEFAULT" ...使用双引号是可以接受的,但我建议您只有在确定名称将设置为大写以避免将来的大小写问题时才这样做-最好跳过引号以避免这种情况。(你也不需要在create调用中用双引号将配置文件、密码等括起来,只要你没有任何奇数名称的东西,但是为了安全起见,像get_ddl这样的实用程序总是会把它们包括在内)。不过,如果它们不是大写的,那么过程调用可能无法识别该名称。
脚本中唯一需要单引号的地方是对GrantSystemPriv和grant_system_privilege的调用,在这些调用中,您将字符串作为参数进行传递。
您还缺少DDL语句后的分号,以及匿名PL/SQL块后的终止/:
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;
/等。
https://stackoverflow.com/questions/13797841
复制相似问题