如何在多个用户中执行sql脚本(模式)
您可以使用SQLPlus构建一个脚本,该脚本为每个用户运行一次脚本。 假设你有这样的脚本:
script.sql :
select count(1) from obj;
你想为两个用户运行它; 你可以建立如下的脚本:
scriptLauncher.sql :
conn alek/****@xe
@d:script
conn hr/****@xe
@d:script
结果:
SQL> @d:scriptLauncher
Connected.
COUNT(1)
----------
15
Connected.
COUNT(1)
----------
35
当然,这意味着您必须将密码存储在纯文本文件中,这可能会带来安全风险。
如果你的脚本只有DML操作,试试这个
SET SERVEROUTPUT ON
DECLARE
TYPE my_users_type IS VARRAY (5) OF VARCHAR (256);
my_users my_users_type;
BEGIN
my_users := my_users_type ('USER1', 'USER2', 'USER3'); --your users
FOR i IN my_users.FIRST .. my_users.LAST LOOP
EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA =' || my_users (i);
@D:yourscript.SQL; --your script with path
END LOOP;
end;
/
yourscript.SQL应该只包含被分割的DML命令; 没有其他的。 或者你可以修改它 - 创建一个过程有字符串参数。 参数将是单个DML命令,将为所有用户循环执行。
或者只是使用
ALTER SESSION SET CURRENT_SCHEMA = USER1
@D:yourscript.SQL;
ALTER SESSION SET CURRENT_SCHEMA = USER2
@D:yourscript.SQL;
ALTER SESSION SET CURRENT_SCHEMA = USER3
@D:yourscript.SQL;
对脚本yourscript.SQL没有限制,除非在DML操作中不使用模式名称作为前缀
PS执行用户应该有足够的权利。
我将拥有一个我拥有的文件夹
要么
使用拥有所有其他权限的用户运行它3并个性化脚本,以便每个脚本运行它。
链接地址: http://www.djcxy.com/p/95055.html上一篇: How to execute sql script in multiple users (schema)
下一篇: Sort multiple text fields in MYSQL according to information entered or not