oracle的默认表空间

一.默认表空间说明

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

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

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

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

[sql] view plaincopy

  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‘

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

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 默认的表空间。

DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,这个用户就会采用默认的表空间——users表空间(sys和system等系统用户采用的默认表空间是system表空间),DBA有办法避免这种问题了——在线指定系统默认表空间:

    ALTER DATABASE DEFAULT TABLESPACE <tsname>;

    通过执行以上命令,可以设定系统的默认表空间。这样的话,在创建新用户时,如果不指定他的默认表空间,就会采用上面指定的系统默认表空间作为这个用的默认表空间。

SQL>conn /as sysdbaSQL> create user zhangsan identified by zhangsan default tablespace myspace1;

用户已创建。SQL> alter database default tablespace myspace;

数据库已更改。

SQL> create user test identified by test;

用户已创建。

SQL> select username, default_tablespace defspace from dba_users where username=‘TEST‘;

USERNAME                       DEFSPACE

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

TEST                           MYSPACE

    然而一旦将系统默认表空间修改了以后,原有的所有普通用户的默认表空间都会被指定为这个表空间,如上例中test1,创建时指定了他的默认表空间为myspace1,执行了’alter database default tablespace myspace’后,他的默认表空间也被改为了myspace。

SQL> select username, default_tablespace defspace from dba_users where username=‘TEST1‘;

USERNAME                       DEFSPACE

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

TEST1                          MYSPACE

时间: 2024-08-03 20:06:42

oracle的默认表空间的相关文章

Oracle 12c创建PDB用户并设置默认表空间

Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全称为PluggableDatabase,即可插拔数据库.下面是官方文档关于CDB与PDB的关系图. 在CDB中,只能创建以c##或C##开头的用户,如果不加c##,则会提示错误“ORA-65096:公用用户名或角色名无效”,只有在PDB数据库中才能创建我们习惯性命名的用户,oracle称之为Loca

实例讲解Oracle数据库设置默认表空间问题

实例讲解Oracle数据库设置默认表空间问题 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,所以这个用户就会采用默认的表空间——system表空 DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,所以这个用户就会采用默认的表空间——system表空间.导致系统

oracle 查询表的大小,表空间的使用情况,默认表空间

oracle 查询表的大小,表空间的使用情况,默认表空间 oracle 查询表的大小,表空间的使用情况,默认表空间 --查看某张表占用磁盘空间大小 ( 表名大写 ) Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name having Segment_Name='表名'; 查看用户默认表空是那个 select username,default_tablespace from dba_user

Oracle设置创建表时的默认表空间

在导入/创建Oracle数据库表,有时我们会检查发现,导入/创建后表,所创建的表空间并非是我们想要的默认表空间.此时我们需要先修改用户的默认表空间,再导入的方式来解决该问题. alter user 你的用户名 default tablespace 你想默认的表空间 例如:alter user platform default tablespace platform 执行生效后,此时,再导入脚本或者创建表,就会在指定的默认空间下了

oracle用户和表空间

oracle中有表空间的概念.一个系统中要创建oracle数据库,首先需要创建一个用户,然后给用户分配表空间,表空间存储的就是表等基础元素.如果不显式地分配表空间的话,就会给用户默认上USERS这个表空间.分配上表空间后,这个用户下的表就存在这个表空间下. 1,创建表空间 create TABLESPACE test_space DATAFILE 'd:\oracle_test_data\test.dbf' size 100M; 表空间可以看作是服务器硬盘上的一个文件.创建表空间时,这个目录必须

Oracle数据库创建表空间

--Oracle数据库创建表空间 create tablespace new_taspace --表空间名 DATAFILE 'D:\NEWTABLESPACE.DBF'   --表空间关联的数据文件和位置 size 200M --文件初始大小 autoextend on next 20MB MAXSIZE 400MB; --文件大小可自动扩展,每次扩展20MB,最大400MB --创建表空间 create tablespace new_taspace1 --表空间关联的数据文件和位置 DATA

oracle第二步创建表空间、用户、授权

Windows+r→键入sqlplus,输入已安装好的oracle数据库超级管理员账号密码登录.显示: 成功. 创建表空间: 创建用户并默认表空间: 授权该创建用户对数据库的操作: 代码: SQL> create tablespace user_data 2 logging 3 datafile 'D:\oracleTableSpace\oracle70170705.dbf' 4 size 50m 5 autoextend on 6 next 50m maxsize 10240m 7 exten

oracle用户与表空间操作

oracle系统用户sys,system , sysman, scott 使用system用户登录[username/password][@server][as sysdba|sysoper]eg: system/123456 @orcl as sysdba 查看当前登录用户:show user 查看数据字典中的用户select username from dba_users; 启用禁用scott账户:alter user scott account unlock;alter user scot

Oracle数据创建表空间

一.直接在服务器端通过sqlplus命令行创建: 如果您用的是Linux系统,那么Oracle用户名为oracle.同时,您是在oracle服务器上操作. 如果是在Windows系统下, 请先点击"开始",然后点"运行",输入cmd并点击"确定",打开命令行窗口 如果是在Linux的图形窗口,请右键点击桌面并点击"打开终端",然后输入    su  -   oracl 做好上述准备工作以后,输入以下命令: sqlplus