如果您设法创建了一个数据库链接,那么您显然拥有该用户的凭据,因此最简单的选择是以 remote user 的身份进行连接,并直接在该模式中创建表。 如果你想从你的schema中完成它,你不能使用那个语法,但是-有一个解决方案:dbms_utility.exec_ddl_statement 举个例子。 数据库链接优先:
SQL> create database link dbl_mike connect to mike identified by lion using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = my_server)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XEPDB1)))';
Database link created.
有用吗?好耶!
SQL> select * from dual@dbl_mike;
D
-
X
这是你尝试过的,发现它不会工作:
SQL> create table test_dbl@dbl_mike (id number);
create table test_dbl@dbl_mike (id number)
*
ERROR at line 1:
ORA-02021: DDL operations are not allowed on a remote database
1条答案
按热度按时间r6vfmomb1#
如果您设法创建了一个数据库链接,那么您显然拥有该用户的凭据,因此最简单的选择是以 remote user 的身份进行连接,并直接在该模式中创建表。
如果你想从你的schema中完成它,你不能使用那个语法,但是-有一个解决方案:
dbms_utility.exec_ddl_statement
举个例子。
数据库链接优先:
有用吗?好耶!
这是你尝试过的,发现它不会工作:
我提到的解决方法:
测试(如果表存在,我可以通过数据库链接插入一行并从该表中选择):
[编辑]
如果要运行多个语句,可以使用
exec
逐个执行。请注意,它不会在任何地方都有效;它可以在SQL*Plus、SQL Developer和其他一些工具中运行。但是,由于它对于BEGIN-END
块来说是 * 短 * 的,因此您可以/更好地