1、为什么要创建表空间?
答:在建立用户的时候,我们建议数据库管理员要指定用户的默认表空间。因为我们在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,显然,这并不是很合理。
另外要注意,不同的表空间有不同的权限控制。用户对于表空间A具有完全控制权限,可能对于表空间B就只有查询权限,甚至连连接的权限的都没有。所以,合理为用户配置表空间的访问权限,也是提高数据库安全性的一个方法。
2、如何创建表空间?
答:创建示例:
create tablespace "tablecontrols"
datafile 'C:oracleproduct ablecontrols ablecontrols.dbf'
size 300M
autoextend on next 100M
maxsize unlimited
logging online permanent;
说明:
create tablespace:创建表空间
tablecontrols:表空间名称
datafile:默认文件位置
size:表空间大小
autoextend on next 100M:自动扩展表空间100M,当原始空间使用完时
maxsize unlimited:无限制大小
logging online permanent:永久在线记录
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库。对于初学者来说,为了避免麻烦,可以用'Database
Configuration Assistant'向导来创建数据库。创建完数据库后,并不能立即在数据库中建表,必须先创建该数据库的用户,并且为该用户指定表空间。
下面是创建数据库用户的具体过程:
1.假如现在已经建好名为'news'的数据库,此时在F:/oracle/product/10.1.0/oradata/目录下已经存在news目录(注意:我的Oracle10g安装在F:/oracle下,若
你的Oracle安装在别的目录,那么你新建的数据库目录就在*/product/10.1.0/oradata/目录下)。
2.在创建用户之前,先要创建表空间:
其格式为:格式: create 表空间名 datafile '数据文件名' size 表空间大小;
如:
SQL> create tablespace news_tablespace datafile 'F:/oracle/product/10.1.0/oradata/news/news_data.dbf' size 500M;
其中'news_tablespace'是你自定义的表空间名称,可以任意取名;'F:/oracle/product/10.1.0/oradata/news/news_data.dbf'是数据文件的存放位
置,'news_data.dbf'文件名也是任意取;'size 500M'是指定该数据文件的大小,也就是表空间的大小。
3.现在建好了名为'news_tablespace'的表空间,下面就可以创建用户了:
其格式为:格式: create user 用户名 identified by 密码 default tablespace 表空间表;
如:
SQL> create user news identified by news default tablespace news_tablespace;
默认表空间'default tablespace'使用上面创建的表空间。
4.接着授权给新建的用户:
SQL> grant connect,resource to news; --表示把 connect,resource权限授予news用户
SQL> grant dba to news; --表示把 dba权限授予给news用户
授权成功。
Configuration Assistant'向导来创建数据库。创建完数据库后,并不能立即在数据库中建表,必须先创建该数据库的用户,并且为该用户指定表空间。
下面是创建数据库用户的具体过程:
1.假如现在已经建好名为'news'的数据库,此时在F:/oracle/product/10.1.0/oradata/目录下已经存在news目录(注意:我的Oracle10g安装在F:/oracle下,若
你的Oracle安装在别的目录,那么你新建的数据库目录就在*/product/10.1.0/oradata/目录下)。
2.在创建用户之前,先要创建表空间:
其格式为:格式: create 表空间名 datafile '数据文件名' size 表空间大小;
如:
SQL> create tablespace news_tablespace datafile 'F:/oracle/product/10.1.0/oradata/news/news_data.dbf' size 500M;
其中'news_tablespace'是你自定义的表空间名称,可以任意取名;'F:/oracle/product/10.1.0/oradata/news/news_data.dbf'是数据文件的存放位
置,'news_data.dbf'文件名也是任意取;'size 500M'是指定该数据文件的大小,也就是表空间的大小。
3.现在建好了名为'news_tablespace'的表空间,下面就可以创建用户了:
其格式为:格式: create user 用户名 identified by 密码 default tablespace 表空间表;
如:
SQL> create user news identified by news default tablespace news_tablespace;
默认表空间'default tablespace'使用上面创建的表空间。
4.接着授权给新建的用户:
SQL> grant connect,resource to news; --表示把 connect,resource权限授予news用户
SQL> grant dba to news; --表示把 dba权限授予给news用户
授权成功。
经过长时间学习创建Oracle表空间,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。
1、先查询空闲空间
select tablespace_name,file_id,block_id,bytes,blocks from dba_free_space;
2、增加Oracle表空间
先查询数据文件名称、大小和路径的信息,语句如下:
select tablespace_name,file_id,bytes,file_name from dba_data_files;
3、修改文件大小语句如下
alter database datafile '需要增加的数据文件路径,即上面查询出来的路径 'resize 800M;
4、创建Oracle表空间
create tablespace test datafile '/home/app/oracle/oradata/oracle8i/test01.dbf' size 8M autoextend on next 5M maxsize 10M; create tablespace sales datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M autoextend on next 50M maxsize unlimited maxsize unlimited 是大小不受限制 create tablespace sales datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M autoextend on next 50M maxsize 1000M extent management local uniform; unform表示区的大小相同,默认为1M create tablespace sales datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M autoextend on next 50M maxsize 1000M extent management local uniform size 500K; unform size 500K表示区的大小相同,为500K create tablespace sales datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M autoextend on next 50M maxsize 1000M extent management local autoallocate; autoallocate表示区的大小由随表的大小自动动态改变,大表使用大区小表使用小区 create tablespace sales datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M autoextend on next 50M maxsize 1000M temporary; temporary创建字典管理临时表空间 create temporary tablespace sales tempfile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M autoextend on next 50M maxsize 1000M 创建本地管理临时表空间,如果是临时表空间,所有语句中的datafile都换为tempfile 8i系统默认创建字典管理临时表空间,要创建本地管理临时表空间要加temporary tablespace关键字 创建本地管理临时表空间时,不得使用atuoallocate参数,系统默认创建uniform管理方式 为表空间增加数据文件: alter tablespace sales add datafile '/home/app/oracle/oradata/oracle8i/sales02.dbf' size 800M autoextend on next 50M maxsize 1000M;
创 建本地管理临时Oracle表空间,如果是临时表空间,所有语句中的datafile都换为tempfile8i系统默认创建字典管理临时表空间,要创建 本地管理临时表空间要加temporary tablespace关键字创建本地管理临时表空间时,不得使用atuoallocate参数,系统默认创建uniform管理方式
为表空间增加数据文件:
alter tablespace sales add datafile '/home/app/oracle/oradata/oracle8i/sales02.dbf' size 800M autoextend on next 50M maxsize 1000M;
5、更改自动扩展属性:
alter database datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf', '/home/app/oracle/oradata/oracle8i/sales02.dbf' '/home/app/oracle/oradata/oracle8i/sales01.dbf autoextend off;
6、删除表空间:
drop tablespace xxx including contents and datafiles
以上介绍创建Oracle表空间,在这里拿出来和大家分享一下,希望对大家有用。
3.0表空间
create tablespace BTADATA datafile '/home/app/oracle/oradata/ifp30/BTADATA.dbf' size 100M autoextend on next 50M;
create tablespace BTAIDX datafile '/home/app/oracle/oradata/ifp30/BTAIDX.dbf' size 100M autoextend on next 50M;
create tablespace PUBDATA datafile '/home/app/oracle/oradata/ifp30/PUBDATA.dbf' size 100M autoextend on next 50M;
create tablespace PUBIDX datafile '/home/app/oracle/oradata/ifp30/PUBIDX.dbf' size 100M autoextend on next 50M;
create tablespace SALEDATA datafile '/home/app/oracle/oradata/ifp30/SALEDATA.dbf' size 200M autoextend on next 50M;
create tablespace SALEIDX datafile '/home/app/oracle/oradata/ifp30/SALEIDX.dbf' size 100M autoextend on next 50M;
create tablespace PUBDATA datafile '/home/app/oracle/oradata/ifp30/PUBDATA.dbf' size 100M autoextend on next 50M;
create tablespace PUBIDX datafile '/home/app/oracle/oradata/ifp30/PUBIDX.dbf' size 100M autoextend on next 50M;
create tablespace SALEDATA datafile '/home/app/oracle/oradata/ifp30/SALEDATA.dbf' size 200M autoextend on next 50M;
create tablespace SALEIDX datafile '/home/app/oracle/oradata/ifp30/SALEIDX.dbf' size 100M autoextend on next 50M;