oracle怎样创建表空间和用户

oracle怎样创建表空间和用户,第1张

oracle创建表空间和用户方法如下:
--表空间
CREATE TABLESPACE sdt
DATAFILE 'F:\tablespace\demo' size 800M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
--索引表空间
CREATE TABLESPACE sdt_Index
DATAFILE 'F:\tablespace\demo' size 512M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
--2建用户
create user demo identified by demo
default tablespace demo;

--3赋权
grant connect,resource to demo;
grant create any sequence to demo;
grant create any table to demo;
grant delete any table to demo;
grant insert any table to demo;
grant select any table to demo;
grant unlimited tablespace to demo;
grant execute any procedure to demo;
grant update any table to demo;
grant create any view to demo;

Oracle 创建数据
数据库中的每一个表都被一个模式(或用户)所拥有,因此表是一种典型的模式对象。在创建数据表时,Oracle 将在一个指定的表空间中为其分配存储空间。最初创建的表时一个空的逻辑存储结构,其中不包含任何数据记录。
一、数据表的逻辑结构
表是最常见的一种组织数据的方式,一张表一般都具有多个列(即多个字段)。每个字段都具有特定的属性,包括字段名、数据类型、字段长度、约束、默认值等,这些属性在创建表的时被确定。
Oracle 常用的5种数据类型:
1、字符类型
字符类型用于什么包含字母、数字数据的字段。对字符数据类型再细分可包括定长字符串和变长字符串两种,分别对应着 char 数据类型和 varchar 数据类型。
CHAR 数据类型,用于存储固定长度的字符串。一旦定义了 char 类型的列,该列就会一直保持声明时所规定的长度大小。当为该列的某个单元格(行与列的交叉处就是单元格)赋予长度较短的数值后,空余部分 Oracle 会用空格自动填充;如果字段保存的字符长度大于规定的长度,则 Oracle 会产生错误信息。char 类型的长度范围为 1~ 2000字节。
VarChar2 类型 : varchar2 用于存储变长的字符串。将字段定义为 varchar2 数据类型时,该字段的长度将根据实际字符数据的长度自动调整(即如果该列的字符串长度小于定义时的长度,系统不会使用空格填充,而是保留实际的字符串长度)。因此,在大多数情况下,都会使用 varchar2 替换 char 数据类型。
2、数值类型
数值数据类型的字段用于存储带符号的整数或浮点数。Oracle 中的 number 数据类型具有精度(precision)和范围(scale)。精度指定所有数字位的个数,范围值定小数的位数,这两个参数都是可选的。如果插入的数据超过指定的位数,Oracle 将自动进行四舍五入。
3、日期时间类型
Oracle 提供的日期时间数据类型时 DATE,它可以存储日期和时间的组合数据。用DATE 数据类型存储日期时间比使用字符数据类型进行存储更简单,并且可以借助于 Oracle 提供的日期时间函数方便处理数据。
在 Oracle 中,可以使用不同的方法建立日期值。最常用的获取日期的方法是通过 sysdate 函数,调用该函数可以获取当前系统的日期值。还可以使用 To_DATE 函数将数值或字符串转换为 DATE 类型。 Oracle 默认的日期和时间格式由初始化参数 NLS_DATE_FORMAT 指定,一般为 DD-MM-YY。
4、LOB类型
Lob 数据类型用于大型的、未被结构化的数据,例如二进制文件、文件和其他类型的外部文件。LOB 类型的数据可以存储在数据库内部,也可以将数据存储在外部文件中,而将指向数据的指针存储在数据库中。LOB 数据类型分为 BLOB、CLOB 和 BFILE 数据类型。
BLOB 类型:blob类型用于存储二进制对象。典型的 blob 可以包括图像、音频文件、视频文件等。在 blob 类型的字段中能够存储最大为 128MB的二进制对象。
CLOB 类型: clob 类型用于存放字符格式的大型对象,CLOB 类型的字段能够存储最大为 128MB 的对象。Oracle 首先把数据转换成Unicode格式的编码,然后再将它存储在数据库中。
BFILE 类型:bfile 类型用于存储二进制格式的文件;在 bfile 类型的字段中可以将最大为128MB 的二进制文件作为 *** 作系统文件存储在数据库外部,文件的大小不能超过 *** 作系统的限制;bfile 类型的字段中仅保存二进制文件的指针,并且 bfile 字段是只读的,不能修改。
5、RowID 数据类型
RowID 数据类型被称为 “伪列类型”,用于在 Oracle 内部保存表中的每条记录的物理地址。在 Oracle 内部通过 rowid 来定位所需记录的。由于 rowID 实际上保存的时数据记录的物理地址,所以通过 rowid 来访问数据记录可以获得最快的访问速度。为了便于使用,Oracle 自动为每一个表建立一个名称为 rowID 的字段,可以对这个字段进行查询、更新和删除等 *** 作,设置利用 rowID 来访问表中的记录以获取最快的 *** 作速度。
注意:由于 rowid 字段是隐式的,用户检索表时不会看到该字段,因此,如果要使用 rowid 字段,则必须显示地指定其名称。
二、创建数据表
创建表通常使用 create table 语句。如果用户在自己的模式中创建一个表,则用户必须具有 create table 系统权限。如果要在其他用户模式中创建表,则必须具有 create any tables 的系统权限。此外,用户还必须在指定的表空间中设置一定的配额存储空间。
创建表应该包含哪些列并且指定这些列的数据类型,而这些内容最好在对用户需求分析的基础上进行确定。
语法格式:
create table table_name(
字段名1 数据类型,
字段名2 数据类型
);
注意:1、如果用户要在其他模式中创建表,则必须在表名前加上某个模式的名称。
2、在create table 语句中可以使用嵌套子查询,基于已经存在的表或视图来创建新表,不需要为新表定义字段。
例:
SQL > create table students_2 as select from students;
三、数据表的特性
在 Oracle 中创建表时,表的特性将决定系统如何创建表、如何在磁盘上存储表,以及表创建后使用时的最终执行方式等。
1、存储参数
当用户在 Oracle 中创建表时,Oracle 允许用户指定该表如何使用磁盘上的存储空间。如果仅为表指定了表空间,而没有设置存储参数,则该表将采用其所属表空间的默认的存储参数。然而,表空间的默认存储参数不一定对表空间的每一个表都适用,因此,当表所需要的存储参数与表空间的默认存储参数不匹配时,需要用户在创建表时显式指定存储参数以体寒表空间的默认存储参数。
在创建表时,可以通过使用 storage 子句来设置存储参数,这样可以控制表中盘区的分配管理方式。对于本地化管理的表空间而言,如果指定盘区的管理方式为 autoallocate(自动化管理) ,则可以在 storage 子句中指定 initial、next 和 minextents 这3个存储参数,Oracle 将根据这3个存储参数的值为表分配的数据段初始化盘区大小,以后盘区的分配将由 Oracle 自动管理。如果指定的盘区管理方式为 uniform(等同大小管理),这时不能为表指定任何 storage 子句,盘区的大小将是统一大小。
参数 next 用于指定为存储表中的数据分配的第二个盘区大小。该参数在字典管理的表空间中起作用,而在本地化管理的表空间中不再起作用,因为随后分配的盘区将由 Oracle 自动决定其大小。参数 minextents 用于指定允许为表中的数据所分配的最小盘区数目,同样在本地化管理的表空间中该参数也不再起作用。因此,在存储参数中,主要是设置 inital 参数。该参数用于为表指定分配的第一个盘区大小,以 KB 和 MB 为单位。当为已知大小的数据建立表时,可以将 initial 设置为一个可以荣脑所有数据的数值,这样可以将表中所有的数据存储在一个盘区从而避免产生碎片。
例:
SQL > select initial_extent from user_tables where table_name = 'students'
在user_tables 数据字典表中查询表 students 的第一个盘区的大小。
2、数据块管理参数
对于一般不带有LOB 类型的数据表而言,一个数据块可以存放表的多行记录,用户可以设置的数据块管理参数主要分为以下两类:
1、Pctfree 和 pctused
这两个参数用于控制数据块中空闲空间的使用方法

新建一个Command Window 在提示符下输入一下命令,回车执行就可以了
create tablespace dbspace datafile 'D:\oracle\product\1020\oradata\orcl\dbspacedbf' size 400M autoextend on next 10m maxsize unlimited;--创建表空间
DROP TABLESPACE dbspace INCLUDING CONTENTS AND DATAFILES;--删除表空间
其中
1) DATAFILE: 表空间数据文件存放路径
2) SIZE: 起初设置为200M
3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
4) 空间名称histdb 与 数据文件名称 histdbdbf 不要求相同,可随意命名
5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间
6) alter database datafile ' D:\oracle\product\1020\oradata\orcl\histdbdbf ' resize 500m; //手动修改数据文件大小为
下列命令用于为表空间建立用户,将用户的默认表空间设置为刚建立的表空间
create user test1 identified by test1 default tablespace dbspace;
alter database default tablespace dbspace;
create user test identified by test;
select username, default_tablespace defspace from dba_users where username='TEST';

建立表空间
建立表空间是使用crate tablespace命令完成的,需要注意的是,一般情况下,建立表空间是特权用户或是dba来执行的,如果用其它用户来创建表空间,则用户必须要具有create tablespace的系统权限。
建立数据表空间
在建立数据库后,为便于管理表,最好建立自己的表空间
create tablespace data01 datafile 'd:\test\dada01dbf' size 20m uniform size128k;
说明:执行完上述命令后,会建立名称为data01的表空间,并为该表空间建立名称为data01dbf的数据文件,区的大小为128k

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
[(alias[, alias])]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
OR REPLACE :若所创建的试图已经存在,ORACLE自动重建该视图;
FORCE :不管基表是否存在ORACLE都会自动创建该视图;
NOFORCE :只有基表都存在ORACLE才会创建该视图:
alias :为视图产生的列定义的别名;
subquery :一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION :插入或修改的数据行必须满足视图定义的约束;
WITH READ ONLY :该视图上不能进行任何DML *** 作。
CREATE OR REPLACE VIEW dept_sum_vw
(name,minsal,maxsal,avgsal)
AS
SELECT ddname,min(esal),max(esal),avg(esal)
FROM emp e,dept d
WHERE edeptno=ddeptno
GROUP BY ddname;
--给用户授权创建视图
-- grant create all view to zdgshr; 所有数据库都能创建视图的用户
grant create view to zdgshr;
--创建简单视图
create view temp
as
select from zd_member_basic_info;
--测试
select from temp where rownum=1;
--创建简单视图:只读
create or replace view temp1
as
select id,job_number,name,dept_id from zd_member_basic_info
with read only;
--测试
insert into temp1(id,job_number,name,dept_id) values(1,0,'张三',1300);
视图的删除:
DROP VIEW VIEW_NAME语句删除视图。
删除视图的定义不影响基表中的数据。
只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
视图被删除后,基于被删除视图的其他视图或应用将无效。

四、视图分为简单视图和复杂视图。
简单视图只从单表里获取数据;复杂视图从多表里获取数据。
简单视图不包含函数和数据组;复杂视图包含函数和数据组。
简单视图可以实现DML *** 作;复杂视图不可以。
create or replace view temp1
as
select distinct name,job_number,dept_id from zd_member_basic_info
with read only;
delete from zd_member_basic_info where name='而过';
create or replace view temp
as
select from zd_member_basic_info order by name;

1建表空间ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.因此,在创建对象之前,首先要分配存储空间.
分配存储,就要创建表空间:
创建表空间示例如下:
CREATE TABLESPACE "SAMPLE"LOGGINGDATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTANora' SIZE 5M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO上面的语句分以下几部分:第一: CREATE TABLESPACE "SAMPLE" 创建一个名为"SAMPLE"的表空间
对表空间的命名,遵守Oracle的命名规范就可了
ORACLE可以创建的表空间有三种类型:
(1)TEMPORARY:临时表空间,用于临时数据的存放;
创建临时表空间的语法如下:
CREATE TEMPORARY TABLESPACE "SAMPLE"
(2)UNDO :还原表空间用于存入重做日志文件
创建还原表空间的语法如下:
CREATE UNDO TABLESPACE "SAMPLE"
(3)用户表空间:最重要,也是用于存放用户数据表空间
可以直接写成: CREATE TABLESPACE "SAMPLE"
TEMPORARY和UNDO表空间是ORACLE管理的特殊的表空间只用于存放系统相关数据
第二: LOGGING
有NOLOGGING和LOGGING两个选项,
NOLOGGING:创建表空间时,不创建重做日志
LOGGING和NOLOGGING正好相反,就是在创建表空间时生成重做日志
用NOLOGGING时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复,但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的,所以通常不需要表空间的创建日志,因此,在创建表空间时,选择NOLOGGING,以加快表空间的创建速度第三: DATAFILE用于指定数据文件的具体位置和大小
如: DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTANora' SIZE 5M
说明文件的存放位置是'D:\ORACLE\ORADATA\ORA92\LUNTANora' ,文件的大小为5M
如果有多个文件,可以用逗号隔开:
DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTANora' SIZE 5M,'D:\ORACLE\ORADATA\ORA92\ddora' SIZE 5M但是每个文件都需要指明大小单位以指定的单位为准如5M或500K
对具体的文件,可以根据不同的需要,存放大不同的介质上,如磁盘阵列,以减少IO竟争
指定文件名时,必须为绝对地址,不能使用相对地址第四: EXTENT MANAGEMENT LOCAL存储区管理方法
在Oracle8i以前,可以有两种选择,一种是在字典中管理(DICTIONARY),另一种是本地管理(LOCAL ),从9I开始,只能是本地管理方式因为LOCAL管理方式有很多优点
在字典中管理(DICTIONARY):将数据文件中的每一个存储单元做为一条记录,所以在做DM *** 作时,就会产生大量的对这个管理表的Delete和Update *** 作做大量数据管理时,将会产生很多的DM *** 作,严得的影响性能,同时,长时间对表数据的 *** 作,会产生很多的磁盘碎片,这就是为什么要做磁盘整理的原因
本地管理(LOCAL):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并 *** 作。第五: SEGMENT SPACE MANAGEMENT
磁盘扩展管理方法:
SEGMENT SPACE MANAGEMENT:使用该选项时区大小由系统自动确定。由于Oracle可确定各区的最佳大小,所以区大小是可变的。
UNIFORM SEGMENT SPACE MANAGEMENT:指定区大小,也可使用默认值(1 MB)。第六:段空间的管理方式:
AUTO:只能使用在本地管理的表空间中使用LOCAL管理表空间时,数据块中的空闲空间增加或减少后,其新状态都会在位图中反映出来。位图使Oracle管理空闲空间的行为更加自动化,并为管理空闲空间提供了更好的性,但对含有LOB字段的表不能自动管理
MANUAL:目前已不用,主要是为向后兼容
第七:指定块大小可以具体指定表空间数据块的大小
创建例子如下:
1 CREATE TABLESPACE "SAMPLE"
2 LOGGING
3 DATAFILE 'D:\ORACLE\ORADATA\ORA92\SAMPLEora' SIZE 5M,
4 'D:\ORACLE\ORADATA\ORA92\ddora' SIZE 5M
5 EXTENT MANAGEMENT LOCAL
6 UNIFORM SEGMENT SPACE MANAGEMENT
7 AUTO
SQL> /
表空间已创建。
要删除表空间进,可以
SQL> DROP TABLESPACE SAMPLE;
表空间已丢弃。 -----------------------------------------------------------2建表我们都知道oracle数据库是以表的方式来管理数据,所有的数据都是存放在表中的,如果我们没有创建表的话,数据是不能直接放在数据库中的,那么,我们该怎么在oracle中创建表呢?
我们可以使用create table语句在oracle中创建表,创建表的具体语法为:create table tablename (columnname datatype);其中tablename为我们要创建的表的名字,columnname为我们要创建的表中的列的名字,datatype表示列的数据类型以及长度,这里要注意的是,我们在创建表的时候必须要指定表的唯一的名字,以及列的唯一名字,否则数据库就不知道是怎么回事的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13160046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-13
下一篇 2023-06-13

发表评论

登录后才能评论

评论列表(0条)

保存