如何使用READ ONLY访问权限在ORACLE中创建临时表

时间:2014-03-10 06:52:34

标签: oracle oracle-sqldeveloper

我正在使用CREATE GLOBAL TEMPORARY TABLE脚本在oracle DB中创建一个临时表,但它显示SQL Error: ORA-01031: insufficient privileges。我想创建一个具有只读访问权限的临时表。 Plz帮助我解决这个问题。

我们要努力实现的目标是:

  1. 我们必须在目标数据库中创建一个始终为GreenPlum的表。
  2. 在源数据库(Oracle)中,我们从USER获取一个select查询,例如:“select * from ABC A join DEF D on A.Col1 = D.col1”然后我们创建TEMP TABLE(如果是Oracle) )例如“CREATE GLOBAL TEMPORARY TABLE table101 AS(选择*来自ABC A加入DEF D on A.Col1 = D.col1)”。
  3. 然后使用此TEMP表,我们从INFORMATION_SCHEMA获取所需信息,例如“select * from ALL_TAB_COLUMNS where table_name ='table101'”。通过这个,我们将获得column_name,data_type,character_maximum_length等信息。使用此信息,我们可以使用Javascript获取“create table Statement”。
  4. 然后我们将这个Create table语句存储在一个变量&在Execute Row脚本中运行它(在pentaho数据集成工具中的步骤),它将在目标数据库中创建表。
  5. 问题是我们在oracle中只读取了访问权限。现在该做什么。
  6. 注意:简而言之,我们使用源DB中的select语句在目标数据库中创建一个表。 Dest DB中表的表示结构取决于源DB中的选择查询。

1 个答案:

答案 0 :(得分:0)

如果目标数据库也是oracle数据库,那么您应该能够在那里设置数据库链接到源数据库并使用" CREATE TABLE AS SELECT * FROM + source table + @ + database link +;& #34;

哎呀,我刚刚注意到这是从2014年开始的。好吧,也许这对未来的询问者很有帮助。