oracle怎么创建表空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle怎么创建表空间相关的知识,希望对你有一定的参考价值。

oracle创建表空间操作方法如下:

1.开启oracle服务,打开plsql工具,使用管理员账户登录

2.点左上角的新建SQL窗口

3.创建表空间。在sql窗口中输入create tablespace test datafile 'D:\\test.ora' size 1000m;这里的test为表空间名称,路径自己来命名。然后点执行按钮。

4.执行成功后,继续创建用户。输入create user test identified by test default tablespace test quota 500m on users; 这里第一个test为用户名,第二个test为密码,第三个test为表空间名。然后执行

5.成功创建用户后,进行授权。输入grant all privileges to test; 执行该语句给test用户授权,此时test用户就可以登录了

6.接下来使用test用户登录,就可以建表了

拓展资料

甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。

2017年6月7日发布的2017年美国《财富》500强,甲骨文公司排名第81位。

2017年6月,《2017年BrandZ最具价值全球品牌100强》公布,甲骨文公司排名第46位

参考技术A 请问下Oracle为什么要创建表空间?
答:表空间是一个逻辑概念。Oracle中的数据逻辑上存储于表空间(tablespace)中,而物理上则存储于属于表空间的数据文件(datafile)中。
一个数据库是由一个或多个表空间组成的;一个表空间是由一个或者多个数据文件组成的。
为什么要创建表空间?是为了便于管理,毕竟逻辑存储结构相对于物理存储结构来说,软件管理的可用性会大大提高。比如扩容、改删、迁移等。以下摘自《数据库系统概念》第五版:表空间也可以作为在数据库之间转移数据的一种办法。譬如,很常见的是每隔一段时间把数据从事务系统转移到数据仓库中去。Oracle允许将一个表空间的所有数据从一个系统转移到另一个系统,仅仅简单地复制文件并从数据字典元数据中输入输出一小部分数据。这些操作比从一个数据库下载数据,然后用一个加载器将数据插入到另一个数据库中比起来块多了。

2012-12-31更新(描述清楚点):
1、表空间是逻辑结构,对开发人员或者用户来说处理逻辑结构更方便、对系统管理员来说逻辑结构不可见,更能保证数据安全性,物理结构则交由数据库本身去管理,这样在重新组织物理存储后(如迁移、更换硬件、更换操作系统)应用程序可以不做任何修改直接使用。
2、如果没有表空间,庞大的数据库系统中的表、索引等会对应于相应数量的操作系统文件,这对DBA的维护工作来说是无法想象的。
3、表空间的逻辑结构可以突破操作系统或者底层硬件环境(如硬盘大小)对文件大小的限制,

表空间该如何创建?
答:使用“select * from v$tablespace;"可以查询当前实例已有的表空间。
表空间分为三类:系统表空间(不可缺少,包含数据字典表、触发器存储器以及存储的过程),Oracle中为SYSTEM表空间;存储用户数据的表空间;临时表空间(一般作为大排序和散列)。
简单创建表空间的命令:
CTEATE TABLESPACE tablespace_name DATAFILE '/path/path/datafile_name.dbf' SIZE xxx;
详细请看联机文档关于CREATE TABLSPACE的SQL语句。
-

是将所有表放入一个表空间,还是将几个大表放入表空间?
答:小型数据库可能只需要使用SYSTEM表空间,但是Oracle建议用户至少创建一个存储用户数据的表空间,与系统的数据字典等分离,这样在进行数据库管理的时候更加灵活、减少资源竞争。
以下来自Oracle112_concepts
用户可以利用多个表空间(multiple tablespace)完成以下任务:
A、控制数据库内的磁盘空间分配
B、为数据库用户设定空间使用配额(quota)
C、通过将某个表空间置于联机/脱机(online/offline)状态来控制数据的可访问性(availability)
D、执行对数据库的某部分的备份与恢复
E、使数据存储可以跨多个设备,提升系统性能
参考技术B 1、登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)
2、以sysdba方式来打开sqlplus,命令如下: sqlplus / as sysdba
3、创建临时表空间:
--查询临时表空间文件的绝对路径。如果需要的话,可以通过查询来写定绝对路径。一般用$ORACLE_HOME就可以了
select name from v$tempfile;
create temporary tablespace NOTIFYDB_TEMP tempfile '$ORACLE_HOME\oradata\NOTIFYDB_TEMP.bdf' size 100m reuse autoextend on next 20m maxsize unlimited;
4、创建表空间:
--查询用户表空间文件的绝对路径:
select name from v$datafile;
create tablespace NOTIFYDB datafile '$ORACLE_HOME\oradata\notifydb.dbf' size 100M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
5、创建用户和密码,指定上边创建的临时表空间和表空间
create user hc_notify identified by hc_password default tablespace NOTIFYDB temporary tablespace NOTIFYDB_TEMP;
6、赋予权限
grant dba to hc_notify;
grant connect,resource to hc_notify;
grant select any table to hc_notify;
grant delete any table to hc_notify;
grant update any table to hc_notify;
grant insert any table to hc_notify;
经过以上操作,就可以使用hc_notify/hc_password登录指定的实例,创建我们自己的表了。
参考技术C Oracle创建表空间
Oracle创建表空间是数据库管理员经常要做的事情,在实际当中,一般独立的业务系统会有一个独立的用户进行独立开发管理,附带的会独立创建一个自己的表空间进行存储。

Oracle创建表空间可以通过OEM企业管理器、SQL命令两种方式进行创建,笔者这里采用SQL命令方式进行讲解,OEM方式读者可以自行登录OEM后台自行试验。

Oracle创建表空间语法结构如下:

create tablespace tab_name
datafile 'filename'
size n
[autoextend on next n1 maxsize m /of]
[temporary/permanent]
[extent management local/dictionary];
语法解析:

create tablespace:创建表空间的关键字。

tab_name:创建后表空间的名字。

datafile:指定数据文件的路径为filename。

size n:指定数据文件的大小。

[autoextend on next n1 maxsize m /of ]:表示表空间是否是自动扩展的,on 为自动扩展,of为不扩展,当自动扩展时,next n1表示自动扩展的大小,max size m 表示数据文件最大扩展到m大小。

[temporary/permanent] :表示创建的表空间的类型,temporary表示临时表空间,permanent表示永久表空间,不填都是默认永久表空间。

[extent management local/dictionary]:表示表空间管理的方式,local表示本地的管理模式,dictionary表示数据字典管理模式,默认都是本地管理方式。

案例1、根据表空间创建语法,创建一个100M大小数据文件(student.dbf)的表空间student,代码如下:

create tablespace student
datafile 'E:\APP\ADMIN\ORADATA\ORCL\student.DBF'
size 100m
autoextend on next 10m maxsize 500m
permanent
extent management local;
案例解析:

创建一个student表空间,指定了数据文件为“,表空间是自动扩展的,每次自动扩展大小为10M,最大扩展到500M,创建的是永久表空间,用来存储student用户的数据库对象和数据,管理模式为本地管理。
参考技术D 表空间代表的是你之前创建dataspace时候在服务器上创建的dbf文件,在导入文件的时候需要给用户授权 也就是说给这个目录授予用户的读写权限。

oracle system01.dbf表空间满了,导致用户没法登入怎么办

这是由于你创建用户时没有指定缺省表空间,系统自动把系统表空间作为用户的默认表空间,用户所创建的所有对象、数据统统写入到系统表空间中了,因而引起系统表空间太满用户无法登入。
解决方法:
1、创建新用户 -- Create User ... ... default tablespace Users Temporary tablespace temp;
2、利用EXP按用户方式导出写满系统表空间的用户,再用IMP导入到新建的用户中;
3、彻底删除原来的用户 -- Drop User 用户名 cascade;追问

可是sys超级管理员都没法登进去了

追答

重新启动数据库,再登入sys用户试试。登入后先加大系统文件system01.dbf。

追问

是本地磁盘满了

参考技术A (1)首先,system表空间的数据文件缺省是autoextend,不会满,请检查是否autoextend。
(2)其次,一旦满了,请加数据文件,一般都没有问题,oracle一般一个表空间能有1022个数据文件,如果是8k大小的数据块,每个数据文件的大小都在32g,够用了。
(3)如果,用户无法登陆,这个不太可能是system数据文件满了的原因,sqlplus -prelim 强制登陆,用hanganalyze检查一下本回答被提问者采纳
参考技术B 看起来很糟糕。如果能用 sqlplus "/as sysdba" 登陆的话,可以将文件resize即可
alter database datafile 1 resize 2G;
如果无法登陆,可以尝试
sqlplus -prelim / as sysdba
当然需要你的DB是10G。如果悲催的是9I或者更低的版本,可以在本地安装一个10G的客户端
然后通过
sqlplus -prelim sys/password@目标数据库名称 as sysdba
的办法登陆。
参考技术C 一般都是自动增长,如果真出现你的情况,以sys as dba进入,alter tablespace add file增加文件来扩展空间

以上是关于oracle怎么创建表空间的主要内容,如果未能解决你的问题,请参考以下文章

oracle 怎么授权用户 只能在指定的表空间中 创建表

oracle创建表的时候提示超出表空间'SYSTEM'的空间限量,怎么办?

oracle数据库创建自动增长的表空间语句怎么写?

oracle数据库创建自动增长的表空间语句怎么写?

oracle怎么删除用户添加的系统表空间

用友nc5.7 linux 中oracle创建表空间问题