博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 默认表空间(default permanent tablespace) 说明
阅读量:7210 次
发布时间:2019-06-29

本文共 3648 字,大约阅读时间需要 12 分钟。

 本文转自:

一.默认表空间说明

在oracle9i中,如果未用 DEFAULT TABLESPACE 子句创建的所有用户将以SYSTEM表空间作为它们的默认表空间。同时也不能为数据库指定一个默认的表空间。

在Oracle 10g中定义了数据库级别的默认表空间USERS,在创建用户时没有定义默认表空间,就会把数据库级别的默认表空间当作自己的默认表空间。

在10g以前,是把系统表空间(SYSTEMS)当作默认表空间。这样很不合理。

 

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

[sql]
  1. /* Formatted on 2011/12/19 15:57:48(QP5 v5.185.11230.41888) */  
  2. SELECT PROPERTY_VALUE  
  3.   FROM database_properties  
  4.  WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE'  
/* Formatted on 2011/12/19 15:57:48(QP5 v5.185.11230.41888) */ SELECT PROPERTY_VALUE FROM database_properties WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE'
可以使用如下命令修改默认表空间:

ALTER DATABASE DEFAULT TABLESPACE users;

 

这里有几个注意事项:

1.     如果我们在创建用户时指定了默认表空间,那么在修改默认表空间后,之前用户的默认表空间也会发生改变。

2.     如果我们在创建用户时没有指定用户表空间,那么默认也会使用DB的默认表空间,这时候如果我们修改了DB的默认表空间,用户的表空间也会发生改变。

3.     如果我们在创建用户指定用户的表空间是其他的表空间,那么我们修改DB的默认表空间不会影响用户的表空间。

4.     DB的默认表空间不能删除,除非将默认表空间指向其他表空间之后才可以删除。

5.     如果用户的默认表空间指向其他的表空间,当这个表空间被drop 之后,用户的默认表空间会自动指向DB的默认表空间。

 

二.示例

2.1查看DB 版本:

SQL> select * from v$version;

 

BANNER

-----------------------------------------------------------------------

Oracle Database 11g Enterprise EditionRelease 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE   11.2.0.1.0      Production

TNS for 32-bit Windows: Version 11.2.0.1.0- Production

NLSRTL Version 11.2.0.1.0 - Production

 

2.2查看当前的默认表空间

SQL> SELECT PROPERTY_VALUE

 2    FROM database_properties

 3   WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE';

 

PROPERTY_VALUE

-------------------------------------------------------------

USERS

 

2.3 创建用户,不指定默认表空间

SQL> create user dave1 identified bydave1;

User created.

SQL> select default_tablespace from dba_users where username ='DAVE1';

 

DEFAULT_TABLESPACE

------------------------------

USERS

--默认表空间为users。

 

2.4 创建用户指定默认表空间为DB的默认表空间

SQL> create user dave2 identified by dave2 default tablespace users;

User created.

 

SQL> select default_tablespace fromdba_users where username ='DAVE2';

DEFAULT_TABLESPACE

------------------------------

USERS

 

 

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

 --创建表空间:

SQL> create tablespace dave3 datafile'D:\APP\ADMINISTRATOR\ORADATA\NEWCCS\dave3.dbf' size 10M;

Tablespace created.

 

--创建用户:

SQL> create user dave3 identified by dave3 default tablespace dave3;

User created.

 

SQL> select default_tablespace from dba_users where username ='DAVE3';

DEFAULT_TABLESPACE

------------------------------

DAVE3

 

2.6 修改DB的默认表空间

SQL> ALTER DATABASE DEFAULT TABLESPACEdave3;

Database altered.

 

2.7 查看之前创建用户的表空间

SQL> select default_tablespace from dba_users where username ='DAVE3';

DEFAULT_TABLESPACE

------------------------------

DAVE3

 

SQL> select default_tablespace fromdba_users where username ='DAVE2';

DEFAULT_TABLESPACE

------------------------------

DAVE3

 

SQL> select default_tablespace fromdba_users where username ='DAVE1';

DEFAULT_TABLESPACE

------------------------------

DAVE3

--注意这里Dave1,dave2用户的默认表空间都变成了dave3.

 

 

2.8 DB的默认表空间不能删除

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

SQL> SELECT PROPERTY_VALUE

 2    FROM database_properties

 3   WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE'

 4  ;

 

PROPERTY_VALUE

----------------------------------------------------------

DAVE3

 

--drop dave3 看看:

SQL> drop tablespace dave3 includingcontents and datafiles;

drop tablespace dave3 including contentsand datafiles

*

ERROR at line 1:

ORA-12919: Can not drop the defaultpermanent tablespace

这里报错ORA-12919.

 

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

SQL> ALTER DATABASE DEFAULT TABLESPACEUSERS;

Database altered.

 

SQL> drop tablespace dave3 including contents and datafiles;

Tablespace dropped.

 

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

 

SQL> select default_tablespace from dba_users where username ='DAVE3';

DEFAULT_TABLESPACE

------------------------------

USERS

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

转载地址:http://krrum.baihongyu.com/

你可能感兴趣的文章
attenuation
查看>>
vue中$router和$route的区别
查看>>
【转】APK反编译
查看>>
uni-app 如何引入全局方法或变量?
查看>>
mac下python2.x和python3.x的安装方法和升级方法/卸载
查看>>
RabbitMQ消息交换模式简介
查看>>
Android项目中独立Git项目分库后的编译调试时Gradle的配置
查看>>
(原創) 写程序时,要同时以Class Creator和Class User的角色来写程序 (OO) (.NET) (N-Tier) (C/C++)...
查看>>
(轉貼) 如何用Windows Live Writer修改更早之前的舊文?(Web) (Windows Live Writer)
查看>>
提高关键词排名的28个SEO技巧
查看>>
Linux练习(时间变为常用时间)
查看>>
Windows Azure Web Site (18) Azure Web App设置MIME
查看>>
【S4】使用empty()而不是判断size()是否为0
查看>>
sql server 数据排名
查看>>
修改MySQL中的数据
查看>>
(原創) 如何對圖片加入Salt and Pepper Noise? (.NET) (C/C++) (C++/CLI) (GDI+) (Image Processing)...
查看>>
(轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)
查看>>
Dockerfile详解(三)
查看>>
【转】启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!...
查看>>
Bellman - Ford, SPFA 学习笔记(含有负权的单源最短路径)
查看>>