我使用以下脚本生成DDL以在数据库中创建表空间.
select 'create tablespace ' || df.tablespace_name || chr(10)
|| ' datafile ''' || df.file_name || ''' size ' || df.bytes
|| decode(autoextensible,'N',null, chr(10) || ' autoextend on maxsize '
|| maxbytes)
|| chr(10)
|| 'default storage ( initial ' || initial_extent
|| decode (next_extent, null, null, ' next ' || next_extent )
|| ' minextents ' || min_extents
|| ' maxextents ' || decode(max_extents,'2147483645','unlimited',max_extents)
|| ') ;' "Script To Recreate Tablespaces"
from dba_data_files df, dba_tablespaces t
where df.tablespace_name=t.tablespace_name;
Run Code Online (Sandbox Code Playgroud)
它运作良好.但是当表空间包含两个数据文件时,它还会使用create …
我想问一个问题.会发生什么如果我在创建过程中未指定表空间而创建索引.例如 :
CREATE INDEX indx_cd on distributors(dist_cd)
Run Code Online (Sandbox Code Playgroud)
索引在什么表空间中创建?即使我这样说,索引仍然可以正常工作吗?
我知道只要它们处于不同的模式中,我们就可以拥有相同名称的表.假设两个模式表都被转储到同一个表空间,即使它有效吗?我认为根据我的知识它是有效的..我的理解是否正确?或者在这种情况下是否有任何条款?或任何其他问题?
我们的数据文件之一达到了 32G 的最大值。因此,我们在该表空间中创建了第二个数据文件。
但是,我们忘记给出默认的 NEXT 大小。因此,文件 1 的 NEXT 为 50MB。文件 2 的 NEXT 为 8k。
这些是本地管理的,所以,我猜唯一要做的就是创建一个新的表空间,然后移动所有对象。或者还有其他解决方案吗?一个问题:如何移动TYPES?我需要删除并重新创建那些吗?这将使很多事情无效......
有什么建议?我可以仅隔离该数据文件中的对象吗?
感谢您。
我已经在oracle 12c标准版中创建了一个用户。
现在,我尝试在sql developer中使用用户名和密码创建表,但出现以下错误。
SQL Error: ORA-01950: no privileges on tablespace 'USERS'01950. 00000 - "no privileges on tablespace '%s'"
Run Code Online (Sandbox Code Playgroud)
它还显示了以下原因和措施:
Cause: User does not have privileges to allocate an extent in the
specified tablespace.
Action: Grant the user the appropriate system privileges or grant the user
space resource on the tablespace.
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题。我的用户名是c ## santh
我使用的是 Oracle 数据库 12c。据我所知,表空间是一种逻辑存储单元,由一个或多个数据文件组成,其中存储有关架构对象的数据。我也了解如何创建表空间。
我的问题是:哪些模式对象可以分配给不同的表空间?我们如何使用 SQL 将这些对象分配到表空间?
编辑:
我发现要将表移动到不同的表空间,我们使用以下语法:
ALTER TABLE <TABLE NAME to be moved> MOVE TABLESPACE <destination TABLESPACE NAME>
Run Code Online (Sandbox Code Playgroud)
此外,要将相应的索引移动到表空间,我们在执行上述查询后使用以下语法:
alter index <owner>."<index_name>" rebuild;
Run Code Online (Sandbox Code Playgroud)
但是,是否还有更多架构对象可以移动到如上所述的表空间?
在创建表或索引时,我总是得到建议tablespace在查询中添加子句。如果我们tablespace在创建表子句时不使用该子句,对我们的表会有什么重大影响?
这是我很长时间以来一直在做的事情。
CREATE TABLE XT_PMB_NOTIFY_UNSUB(
TXNID NUMBER(15),
APP_SEQNO NUMBER(15),
PRIMARY_KEYVAL VARCHAR2(4000) NOT NULL,
OP_CODE VARCHAR2(15),
TXN_STATUS VARCHAR2(1),
CREATE_DT DATE,
PRIMARY KEY (TXNID) );
Run Code Online (Sandbox Code Playgroud)
来自的建议DBA。
CREATE TABLE XT_PMB_NOTIFY_UNSUB(
TXNID NUMBER(15),
APP_SEQNO NUMBER(15),
PRIMARY_KEYVAL VARCHAR2(4000) NOT NULL,
OP_CODE VARCHAR2(15),
TXN_STATUS VARCHAR2(1),
CREATE_DT DATE,
PRIMARY KEY (TXNID) )
TABLESPACE DATA_ENC_TS;
Run Code Online (Sandbox Code Playgroud) 这是一个练习分配,我必须创建一个包含两个数据文件的表空间.我们必须使用提供给我们的确切命名约定.我相信我做对了,但是我得到了这个错误:" ORA-00972:标识符太长了 ".我想我得到的是因为路径和文件名太长了.问题是,我该如何解决这个问题?
谢谢!
CREATE TABLESPACE CTTT444_tbs
DATAFILE "C:\oracle\product\10.2.0\oradata\cttt444_1.dbf" SIZE 15M,
DATAFILE "C:\oracle\product\10.2.0\oradata\cttt444_2.dbf" SIZE 15M,
AUTOEXTEND ON
NEXT 5m
MAXSIZE 100m);
Run Code Online (Sandbox Code Playgroud)