`

Oracle 默认表空间(转)

    博客分类:
  • DB
阅读更多

在oracle9i中,如果未用 DEFAULT TABLESPACE 子句创建的所有用户将以SYSTEM表空间作为它们的默认表空间。同时也不能为数据库指定一个默认的表空间。 
Oracle 10g中定义了数据库级别的默认表空间USERS,在创建用户时没有定义默认表空间,就会把数据库级别的默认表空间当作自己的默认表空间。 
在10g以前,是把系统表空间(SYSTEMS)当作默认表空间。这样很不合理。

可以使用如下命令查看默认表空间:

SQL> SELECT PROPERTY_VALUE FROM database_properties WHERE PROPERTY_NAME='DEFAULT_PERMANENT_TABLESPACE';
 
PROPERTY_VALUE
--------------------------------------------------------------------------------
USERS

 可以使用如下命令修改默认表空间: 

ALTER DATABASE DEFAULT TABLESPACE users;

 

这里有几个注意事项: 
1. 如果我们在创建用户时指定了默认表空间,那么在修改默认表空间后,之前用户的默认表空间也会发生改变。 

2. 如果我们在创建用户时没有指定用户表空间,那么默认也会使用DB的默认表空间,这时候如果我们修改了DB的默认表空间,用户的表空间也会发生改变。 
3. 如果我们在创建用户指定用户的表空间是其他的表空间,那么我们修改DB的默认表空间不会影响用户的表空间。 
4. DB的默认表空间不能删除,除非将默认表空间指向其他表空间之后才可以删除。 
5. 如果用户的默认表空间指向其他的表空间,当这个表空间被drop 之后,用户的默认表空间会自动指向DB的默认表空间。

 

示例

1、查看DB 版本: 
SQL> SELECT * FROM v$version;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

 

2、创建用户,不指定默认表空间 
SQL> create user dave1 identified bydave1;
 
User created.
 
SQL> select default_tablespace from dba_users where username ='DAVE1';
 
DEFAULT_TABLESPACE
 
------------------------------
 
USERS

 

--默认表空间为users。 
3、创建用户指定默认表空间为DB的默认表空间 
SQL> CREATE USER tom2 IDENTIFIED BY tom2 DEFAULT TABLESPACE users;
 
用户已创建。
 
SQL> SELECT DEFAULT_TABLESPACE FROM dba_users WHERE username='TOM2';
 
DEFAULT_TABLESPACE
------------------------------
USERS

 

4、 创建用户指定的默认表空间为其他表空间

--创建表空间:

SQL> CREATE TABLESPACE tom3 DATAFILE 'F:\tablespace\tom3.dbf' SIZE 10M;
 
表空间已创建。

 --创建用户: 

 

SQL> CREATE USER tom3 IDENTIFIED BY tom3 DEFAULT TABLESPACE tom3;
 
用户已创建。
 
SQL> SELECT DEFAULT_TABLESPACE FROM dba_users WHERE username='TOM3';
 
DEFAULT_TABLESPACE
------------------------------
TOM3

 

5、修改DB的默认表空间 

SQL> ALTER DATABASE DEFAULT TABLESPACE tom3;
 
数据库已更改。
 
SQL> SELECT PROPERTY_VALUE FROM database_properties WHERE PROPERTY_NAME='DEFAULT_PERMANENT_TABLESPACE';
 
PROPERTY_VALUE
--------------------------------------------------------------------------------
TOM3

 

6、查看之前创建用户的表空间 
SQL> SELECT DEFAULT_TABLESPACE FROM dba_users WHERE username='TOM';
 
DEFAULT_TABLESPACE
------------------------------
TOM3
 
SQL> SELECT DEFAULT_TABLESPACE FROM dba_users WHERE username='TOM2';
 
DEFAULT_TABLESPACE
------------------------------
TOM3
 
SQL> SELECT DEFAULT_TABLESPACE FROM dba_users WHERE username='TOM3';
 
DEFAULT_TABLESPACE
------------------------------
TOM3

 

--注意这里tom,tom2用户的默认表空间都变成了tom3. 
7、 DB的默认表空间不能删除

--现在tom3是我们的默认表空间 

SQL> SELECT PROPERTY_VALUE FROM database_properties WHERE PROPERTY_NAME='DEFAULT_PERMANENT_TABLESPACE';
 
PROPERTY_VALUE
--------------------------------------------------------------------------------
TOM3

 --drop dave3 看看: 

 

SQL> DROP TABLESPACE tom3 INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE tom3 INCLUDING CONTENTS AND DATAFILES
*
第 1 行出现错误:
ORA-12919: 不能删除默认永久表空间

 我们把默认表空间改成USERS,再测试: 

 

SQL> ALTER DATABASE DEFAULT TABLESPACE USERS;
 
数据库已更改。
 
SQL> SELECT PROPERTY_VALUE FROM database_properties WHERE PROPERTY_NAME='DEFAULT_PERMANENT_TABLESPACE';
 
PROPERTY_VALUE
--------------------------------------------------------------------------------
USERS

 

SQL> DROP TABLESPACE tom3 INCLUDING CONTENTS AND DATAFILES;
 
表空间已删除。

 tom3表空间成功drop。 注意,我们的tom3用户的表空间之间是指向tom3的,现在我们把tom3表空间drop了,我们看一下tom3现在默认表空间: 

 

SQL> SELECT DEFAULT_TABLESPACE FROM dba_users WHERE username='TOM3';
 
DEFAULT_TABLESPACE
------------------------------
USERS

 --这里自动变成了我们的DB 默认的表空间

 

引用:http://my.oschina.net/xiaomaoandhong/blog/75933

分享到:
评论

相关推荐

    Oracle临时表空间满的解决步骤

    解决 Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表...

    oracle 创建表空间命令

    这会将`myuser`的默认表空间设置为`mytablespace`。 此外,还可以为用户指定临时表空间,用于处理临时数据,如排序和并行查询: ```sql ALTER USER myuser TEMPORARY TABLESPACE temp_tablespace; ``` 这里的`temp...

    学习oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    当创建新用户时,可以为用户分配默认表空间和临时表空间,以便他们在该表空间中创建对象: ```sql CREATE USER my_user IDENTIFIED BY my_password DEFAULT TABLESPACE MY_DATA TEMPORARY TABLESPACE MY_TEMP; ...

    oracle创建表空间用户等

    例如,如果要将`example_tbs`设置为`scott`用户的默认表空间: ```sql ALTER USER scott DEFAULT TABLESPACE example_tbs; ``` #### 四、分配权限 创建用户后还需要为其分配必要的权限,以便用户能够执行特定的...

    完整ORACLE创建表空间、用户、设置用户权限脚本

    - **default tablespace**: 设置用户的默认表空间。 - **temporary tablespace**: 设置用户的临时表空间。 #### 三、设置用户权限 为了确保数据库的安全性和数据的一致性,需要对用户进行权限设置。 ``` /*权限*/...

    oracle导入时表空间不一致解决方法

    2. **设置默认表空间和配额**: ```sql alter user <username> default tablespace <target_tablespace> quota unlimited on ; ``` 通过这种方式,可以确保用户有足够的权限来在目标表空间中创建对象。 #### 四...

    oracle增加表空间

    1. **创建用户**:例如,创建名为`u_bj`的用户,密码为`pw_ty`,默认表空间为`bjms`。 ```sql CREATE USER u_bj IDENTIFIED BY "pw_ty" DEFAULT TABLESPACE bjms PROFILE DEFAULT; ``` #### 六、授权用户 创建...

    ORACLE修改表空间方法

    3. **更改表空间的默认存储参数**:这些参数影响表在磁盘上的存储方式,例如初始化参数(INITIAL)、下次扩展大小(NEXT)和最大尺寸(MAXEXTENTS)。你可以通过`ALTER TABLESPACE`语句设置: ```sql ALTER ...

    Oracle建立表空间.pdf

    创建用户时可以指定其默认表空间: ```sql CREATE USER news IDENTIFIED BY news DEFAULT TABLESPACE news_tablespace; ``` 其中 `news` 是用户名,`news` 是密码,`news_tablespace` 是默认表空间。 #### 六、...

    Oracle用户(user)和表空间(tablespace).pdf

    例如,创建名为 `lhdz_bj` 的用户并设置密码,同时指定默认表空间和临时表空间。一旦用户创建成功,可以使用 `grant` 命令授予相应的权限,如 `connect` 和 `resource` 角色,使用户能够连接数据库并创建与操作对象...

    \Oracle 表空间与数据文件

    通过SQL查询,我们可以了解Scott用户的默认表空间和临时表空间。例如,查询如下: ```sql SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'SCOTT'; ``` 结果显示...

    Oracle创建表空间.创建用户.创建表

    - **`DEFAULT TABLESPACE`** 和 **`TEMPORARY TABLESPACE`** 分别指定了用户的默认表空间和临时表空间。 - **`QUOTA`** 限制了用户在指定表空间上的存储空间大小。 - **`PROFILE`** 可以设置用户的资源限制和其他...

    oracle创建表空间和用户授权及删除表空间和用户

    创建一个名为`wbppcs`的用户,并将其默认表空间设置为`wbppcs`: ```sql CREATE USER wbppcs IDENTIFIED BY wbppcs123 DEFAULT TABLESPACE wbppcs; ``` 接下来,为其授予DBA权限: ```sql GRANT DBA, CONNECT TO ...

    Oracle修改表空间大小.doc

    这是因为Oracle默认的表空间大小为400MB,当数据库中的数据量超过这个阈值时,便无法继续导入数据。本文将详细介绍如何解决这一问题,包括如何扩展表空间以及如何设置表空间的自动增长功能。 #### 二、解决方法概述...

    ORACLE修改表空间大小

    ### ORACLE 修改表空间大小详解 #### 一、问题背景及原因分析 在Oracle数据库管理过程中,经常会遇到因表空间不足导致的各种问题。其中一种常见问题是ORA-01652错误,即“无法在指定表空间扩展临时段”。这通常...

    Oracle 临时表空间使用注意

    首先,临时表空间是每个用户在Oracle数据库中进行操作时的默认工作区域。当用户进行如大型查询、创建索引或执行联接查询等涉及排序操作时,系统会自动在临时表空间中分配内存来存储中间结果。这是因为这些操作通常...

    oracle表空间查询命令

    每个Oracle数据库至少包含一个表空间,默认情况下,系统会在创建数据库时自动创建`SYSTEM`表空间。此外,还可以根据需要创建额外的表空间来满足不同的需求。 #### 二、查询表空间使用情况 为了有效地管理和监控...

    ORACLE quota 表空间限制

    这条命令会在删除表空间的同时移除与其相关的所有配额信息,默认情况下,`DROP TABLESPACE` 命令只会保留配额信息(`KEEP QUOTA`)。 #### 五、总结 通过上述介绍可以看出,在 Oracle 数据库中合理利用 Quota 功能...

    oracle创建表空间、用户

    创建用户时需要指定用户的登录密码,并为其分配默认表空间和其他权限。 **示例命令:** ```sql CREATE USER CIVIDEFEN IDENTIFIED BY CIVIDEFEN DEFAULT TABLESPACE wuspace; ``` - **解释:** - `CREATE USER`:...

    Oracle释放临时表空间脚本

    -- 查询数据库用户及其默认表空间和临时表空间 SELECT username, default_tablespace, temporary_tablespace FROM dba_users du ORDER BY du.temporary_tablespace, du.username; ``` 2. **查询数据库默认临时...

Global site tag (gtag.js) - Google Analytics