oracle - 使用 ALTER SESSION SET CURRENT_SCHEMA 后在 Oracle 表空间中创建索引

标签 oracle oracle11g

我正在尝试复制一个问题,即有人报告在使用 ALTER SESSION SET CURRENT_SCHEMA 调用后无法在正确的表空间中创建索引。

作为系统连接并调用ddl.sql:

sqlplus system/pass@//host/sid @ddl

ddl.sql 包含:

-- setup schema a and user a
@new-db/a_schema_setup
-- setup schema b and user b
@new-db/b_schema_setup

-- creates tables and indexes in schema a
ALTER SESSION SET CURRENT_SCHEMA=a;
@new-db/a_ddl

-- creates tables and indexes in schema b
ALTER SESSION SET CURRENT_SCHEMA=b;
@common/b_ddl

b_ddl.sql包含DDL语句,例如

CREATE TABLE X (...);

CREATE UNIQUE INDEX IDX_X_PK ON X(ID);

在什么情况下,不会在为架构 ab 定义的表空间中创建索引?

最佳答案

当您在索引创建语句中显式设置表空间时,例如

CREATE INDEX table_name_i1
ON table_name (column_one, column_two)
TABLESPACE indexes
/

这将覆盖您在数据库或架构级别设置的默认值。

您可以(正如 Brian 所说)使用具有不同表空间索引设置的嵌入式架构(但无论如何这些都不会出现在架构 a 或 b 中)或者拥有 ALTER USER b DEFAULT TABLESPACE x在脚本中(例如,奇怪但可以设置它以创建索引,然后将其设置回来)。

关于oracle - 使用 ALTER SESSION SET CURRENT_SCHEMA 后在 Oracle 表空间中创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467840/

相关文章:

oracle11g - Ora-00904 - 创建 View 时出错

sql - Oracle 12c中选择不包含某列的表

database - ORA-28113 : policy predicate has error

c# - 比较两个表中的数据,一个是Oracle,一个是SQL Server

triggers - 在 Oracle 11g 中创建触发器时出现问题

sql - 查找特定记录的值(value)相对于整个结果的百分比

sql - 我只需要找到每个城市薪酬最高的员工

sql - 使用从同一表计算的值更新表的最佳方法

oracle - 使用近操作符 LIKE oracle 上下文索引的 Postgres 全文搜索

oracle - oracle中long数据类型与varchar数据的比较