第一篇:Oracle建表空间各种语句
在创建用户之前,先要创建表空间:
其格式为:格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小;如:
SQL> create tablespace news_tablespace datafile 'F:oracleproduct10.1.0oradatanewsnews_data.dbf' size 500M;其中'news_tablespace'是你自定义的表空间名称,可以任意取名;'F:oracleproduct10.1.0oradatanewsnews_data.dbf'是数据文件的存放位置,'news_data.dbf'文件名也是任意取;'size 500M'是指定该数据文件的大小,也就是表空间的大小。
现在建好了名为'news_tablespace'的表空间,下面就可以创建用户了:
其格式为:格式: create user 用户名 identified by 密码 default tablespace 表空间表;如:
SQL> create user news identified by news default tablespace news_tablespace;默认表空间'default tablespace'使用上面创建的表空间。
接着授权给新建的用户:
SQL> grant connect,resource to news;--表示把 connect,resource权限授予news用户
SQL> grant dba to news;--表示把 dba权限授予给news用户
授权成功。
ok!数据库用户创建完成,现在你就可以使用该用户创建数据表了!1.建表空间
create tablespace hoteldata datafile 'D:javaOracleproduct10.1.0oradatazznorclhoteldata.dbf'size 200m autoextend on next 10m maxsize unlimited;2.建用户 create user hotel identified by hotel default tablespace hoteldata account unlock;//identified by 后面的是密码,前面的是用户名 3.用户授权
grant resource,connect,RECOVERY_CATALOG_OWNER to hotel;grant create table to hotel;alter user hotel quota unlimited ON OSDB;alter user hotel default tablespace hoteldata;4.删除表空间
DROP TABLESPACE hoteldata INCLUDING CONTENTS AND DATAFILES;5.删除用户
DROP USER hotel CASCADE 6.删除表的注意事项
在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。oracle sqlplus脚本建库总结(原创)******************************************************************/--查询表空间参数
select tablespace_name,min_extents,max_extents,pct_increase,status from dba_tablespaces;--查询数据文件信息
--autoextensible数据库已满后是否自动扩展
select tablespace_name,bytes,autoextensible,file_name from dba_data_files;/******************************************************************/--创建表空间
--一般信息
--DATAFILE:数据文件目录--存储
--AUTOEXTEND:数据文件满后自动扩展--ON NEXT:增量
--MAXSIZE UNLIMITED:最大容量无限制--SIZE:文件大小--存储
--启用事件记录:LOGGING为生成从做日志并可恢复,NOLOGGING为快速更新不生成日志且不可恢复
--MANAGEMENT LOCAL:本地管理--缺省:自动分配
--UNIFORM SIZE:统一分配
--MANAGEMENT DICTIONARY:在字典中管理--DEFAULT STORAGE:覆盖默认区值--INITIAL:初始大小--NEXT :下一个大小--MINEXTENTS:最小数量
--MAXEXTENTS UNLIMITED :最大数量不限制--PCTINCREASE:增量,单位“%”--MINIMUM EXTENT:最小区大小 CREATE TABLESPACE “TEST” NOLOGGING DATAFILE 'G:ORACLEORADATAMYORACLETEST.ora' SIZE 5M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 12K;--最好写成相对路径,免得出错 CREATE TABLESPACE “TEST” NOLOGGING DATAFILE '../DATABASE/TEST.ora' SIZE 5M REUSE--建议用'../oradata/TEST.ora' AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 12K;CREATE TABLESPACE “TEST” LOGGING DATAFILE 'G:ORACLEORADATAMYORACLETEST.ora' SIZE 5M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE(INITIAL 1K NEXT 2K MINEXTENTS 5 MAXEXTENTS 67 PCTINCREASE 4)MINIMUM EXTENT 3K;/******************************************************************/--增加表空间, 注意这里test.ora1不能与原表空间文件名称相同--添加一个新的大小为5M数据库文件test.ora1 alter tablespace mytesttablespace add datafile 'c:testtest.ora1' size 5M;/******************************************************************/--修改表空间数据库文件属性,myoracle为sid--将test.ora1数据库文件改为3M,其中resize可以是ONLINE, OFFLINE, RESIZE, AUTOEXTEND 或 END/DROP alter database myoracle datafile 'c:testtest.ora1' resize 3M;alter database myoracle datafile '$ORACLE_HOME/oradata/undo102.dbf' autoextend on next 10m maxsize 500M;/******************************************************************/ /*删除表空间
语法:drop tablespace tablespace_name including contents and datafiles;删除表空间时要系统不会删除表空间数据库文件,要彻底删除要手动删除 */ drop tablespace mytesttablespace including contents and datafiles;/******************************************************************/--创建用户--命令:
--CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE “默认表空间名” TEMPORARY TABLESPACE “TEMP” ACCOUNT UNLOCK--一般属性
--DEFAULT TABLESPACE :默认表空间名
--TEMPORARY TABLESPACE :临时表空间名,默认TEMP--ACCOUNT :用户状态,默认UNLOCK 未锁定;LOCK 锁定 CREATE USER “TEST” PROFILE “DEFAULT” IDENTIFIED BY “test” DEFAULT TABLESPACE “TEST” TEMPORARY TABLESPACE “TEMP” ACCOUNT UNLOCK;--可以写成
CREATE USER “TEST” PROFILE “DEFAULT” IDENTIFIED BY “test” DEFAULT TABLESPACE “TEST”;/******************************************************************/--用户授权
--grant “connect,resource,dba” to “someuser” with admin option;--WITH ADMIN OPTION :管理选项--授予usertest DBA权限
grant dba to “usertest” with admin option;--取消授权
--REVOKE “RESOURCE” FROM “SCOTT”;/******************************************************************/--建表
--在usertest方案下建表,注意表名不能用关键字,否则报错ORA-00903: 表名无效
--语法:
--create table [schema.]
--data type:表示字段的数据类型
--default
CREATE TABLE “TEST”.“TEST”(“ID” NUMBER(10)DEFAULT 0 PRIMARY KEY, “NAME” VARCHAR2(20)NOT NULL, “INFO” VARCHAR2(1000))TABLESPACE “TEST”;/******************************************************************/--插入数据--语法:
--INSERT INTO tablename(column1,column2,…)VALUES(expression1,expression2,…);
INSERT INTO “TEST”.“TEST”(“ID” ,“NAME” ,“INFO”)VALUES(1 ,'testname' ,'');--也可以写成
INSERT INTO “TEST”.“TEST” VALUES(1 ,'testname' ,'');/******************************************************************/
第二篇:Oracle表空间和数据文件的关系
数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成: 数据文件和控制文件。数据库的文件为数据库提供真正的物理存储。
每一个Oracle数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表,索引等)的数据物理地存储在数据库地数据文件中。数据文件通常为*.dbf格式,例如: userCIMS.dbf.数据文件有一下特征:①、一个数据文件仅与一个数据库联系;②、一旦建立, 数据文件只增不减;③、一个表空间(数据库存储地逻辑单位)由一个或多个数据文件组成。
其次, 我们再来叙述一下Oracle的逻辑结构: Oracle的逻辑结构包括表空间(tablespace), 段(segment), 数据块(data block)以及模式对象(schema object)。
Oracle数据库在逻辑上是由多个表空间组成的, 表空间在物理上包含一个或者多个数据文件。而数据文件大小是块大小的整数倍;表空间中存储的对象叫段, 比如数据段, 索引段和回退段。段由区组成, 区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,取得大小可以不同;数据块是数据库中的最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值影设置为操作系统块大小的整数倍。
⑴ 表空间(TABLESPACE)表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线(online)和离线(offline)属性,可以将除SYSTEM以外的任何表空间置为离线。⑵ 段(SEGMENT)数据库的段可以分为4类:数据段,索引段,回退段和临时段。⑶ 区
区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储在段中,它由连续的数据块组成。⑷ 数据块
数据块是数据库中最小的数据组织单位与管理单位,是数据库文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的ORACLE版本BD_BLOCK_SIZE的默认值是不同的。查询DB_BLOCK_SIZE可以使用sql:
select name, value from v$parameter where name = 'db_block_size';⑸ 模式对象
模式对象是一种应用,包括:表、聚簇、试图、索引序列生成器、同义词、哈希、程序单元、数据库链的等。
最后说一下ORACLE的用户、表空间和数据文件的关系:
一个用户可以使用一个或多个表空间,一个表空间也可以提供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的。一个表空间可以包含多个数据文件,而一个数据文件只能隶属于一个表空间。
总结一下:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,数据夹中的纸是表,写在纸上的信息就是数据。
第三篇:oracle常用语句
Oracel 中常使用的语法(部分)
Oracel 中常使用的语法
2、显示当前连接用户 :SQL> show user3、查看系统拥有哪些用户 :SQL> select * from all_users;
4、新建用户并授权:SQL> create user a identified by a;(默认建在SYSTEM表空间下)
SQL> grant connect,resource to a;
5、连接到新用户 :SQL> conn a/a6、查询当前用户下所有对象:SQL> select * from tab;
7、建立第一个表 :SQL> create table a(a number);
8、查询表结构SQL> desc a9、插入新记录SQL> insert into a values(1);
10、查询记录SQL> select * from a;
11、更改记录SQL> update a set a=2;
12、删除记录SQL> delete from a;
13、回滚SQL> roll;或SQL> rollback;
14、提交SQL> commit;
用户授权:
GRANT ALTER ANY INDEX TO “user_id ”
GRANT “dba ” TO “user_id ”;
ALTER USER “user_id ” DEFAULT ROLE ALL
创建用户:
CREATE USER “user_id ” PROFILE “DEFAULT ” IDENTIFIED BY “ DEFAULT TABLESPACE
”USERS “ TEMPORARY TABLESPACE ”TEMP “ ACCOUNT UNLOCK;GRANT ”CONNECT “ TO ”user_id “;
用户密码设定:
ALTER USER ”CMSDB “ IDENTIFIED BY ”pass_word “
表空间创建:
CREATE TABLESPACE ”table_space “ LOGGING DATAFILE
'C:ORACLEORADATAdbstable_space.ora' SIZE 5M
----------
1、查看当前所有对象:SQL > select * from tab;
2、建一个和a表结构一样的空表
SQL > create table b as select * from a where 1=2;
SQL > create table b(b1,b2,b3)as select a1,a2,a3 from a where 1=2;
3、察看数据库的大小,和空间使用情况
SQL > col tablespace format a20
SQL > select b.file_id文件ID,b.tablespace_name表空间,b.file_name物理文件名,b.bytes总字节数,(b.bytes-sum(nvl(a.bytes,0)))已使用,sum(nvl(a.bytes,0))剩余,sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name /
dba_free_space--表空间剩余空间状况
dba_data_files--数据文件空间占用情况
4、查看现有回滚段及其状态 : SQL > col segment format a30
SQL > SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;
5、查看数据文件放置的路径 :SQL > col file_name format a50
SQL > select tablespace_name,file_id,bytes/1024/1024,file_name fromdba_data_files order by file_id;
6、显示当前连接用户 :SQL > show user7、把SQL*Plus当计算器 :SQL > select 100*20 from dual;
8、连接字符串:SQL > select 列1 | |列2 from 表1;
SQL > select concat(列1,列2)from 表1;
9、查询当前日期和时间: SQL > select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss')from dual;
10、用户间复制数据:SQL > copy from user1 to user2 create table2 using select * from table1;
11、视图中不能使用order by,但可用group by代替来达到排序目的SQL > create view a as select b1,b2 from b group by b1,b2;
12、通过授权的方式来创建用户 :SQL > grant connect,resource to test identified by test;
SQL > conn test/test13、查出当前用户所有表名: select unique tname from col;
---------
/* 向一个表格添加字段 */alter table alist_table add address varchar2(100);
/* 修改字段 属性 字段为空 */alter table alist_table modify address varchar2(80);
/* 修改字段名字 */
create table alist_table_copy as select ID,NAME,PHONE,EMAIL, QQ as QQ2,/*qq 改为qq2*/
ADDRESS from alist_table;drop table alist_table;
rename alist_table_copy to alist_table /* 修改表名 */
空值处理,有时要求列值不能为空 :create table dept(deptno number(2)not null, dname char(14), loc char(13));
在基表中增加一列: alter table dept add(headcnt number(3));
修改已有列属性 :alter table dept modify dname char(20);
注:只有当某列所有值都为空时,才能减小其列值宽度。只有当某列所有值都为
空时,才能改变其列值类型。
只有当某列所有值都为不空时,才能定义该列为not null。
例:alter table dept modify(loc char(12));alter table dept modify loc char(12);
alter table dept modify(dname char(13),loc char(12));
查找未断连接 :
select process,osuser,username,machine,logon_time ,sql_text from v$session a,v$sqltext b where a.sql_address=b.address;
---
1.以USER_开始的数据字典视图包含当前用户所拥有的信息, 查询当前用户所拥有的表信息:
select * from user_tables;
2.以ALL_开始的数据字典视图包含ORACLE用户所拥有的信息, 查询用户拥有或有权访问的所有表信息:
select * from all_tables;
3.以DBA_开始的视图一般只有ORACLE数据库管理员可以访问:select * from dba_tables;
4.查询ORACLE用户:
conn sys/change_on_installselect * from dba_users;
conn system/manager;select * from all_users;
5.创建数据库用户:CREATE USER user_name IDENTIFIED BY password;GRANT CONNECT TO user_name;GRANT RESOURCE TO user_name;
授权的格式: grant(权限)on tablename to username;
删除用户(或表):drop user(table)username(tablename)(cascade);
6.向建好的用户导入数据表 :
IMP SYSTEM/MANAGER FROMUSER = FUSER_NAME TOUSER = USER_NAME FILE = C:EXPDAT.DMPCOMMIT = Y
7.索引: create index [index_name] on [table_name](”column_name ")
第四篇:Oracle常用语句
Oracle:
1、创建user用户: create user demo identified by demo account unlock默认是lock;
2、权限回收和设置: grant connect|resource to demo;revoke connect|resource from demo;
3、修改用户信息: alter user demo identified by admin;alter user demo account lock;
4、数据库连接: conn sys/change_on_install as sysdba;SYS用户必须要加后面sysdba5、Conn scott/tiger;conn system/admin;
6、Oracle 服务开启 startup open;关闭服务shutdowm;
7、Oracle有两种权限操作数据库的系统权限 比如说创建tablesession还有一种是操作数据库中的对象,对表进行增删改查,有三种角色connectresourcedba,角色是一些系统权限的集合,conect角色主要是些临时的用户,特别是那些不需要建表的用户,resource是那些比较正式的数据库用户,可以有自己的表 序列 过程 触发器 索引 等等,dba拥有所有系统权限
8、在oracle中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端
数据定义语言(DDL),包括CREATE(创建)命令、ALTER(修改)命令、DROP
(删除)命令等。
数据操纵语言(DML),包括INSERT(插入)命令、UPDATE(更新)命令、DELETE
(删除)命令、SELECT … FOR UPDATE(查询)等。
数据查询语言(DQL),包括基本查询语句、Order By子句、Group By子句等。 事务控制语言(TCL),包括COMMIT(提交)命令、SAVEPOINT(保存点)命
令、ROLLBACK(回滚)命令。
数据控制语言(DCL),GRANT(授权)命令、REVOKE(撤销)命令。
9、当查询单行函数的时候,from后面使用DUAL表,dual表在系统中只有一行一列,该表在输出单行函数时为了select…from的语法完整性而使用。Select sysdate from dual;select 1+1 from dual;返回值为2;
10、创建表create table infos(....)添加约束alter table infos add constraint info_pk primary key(stuid);
11、Oracle外键约束alter table scores add constraint for_name foreign key(stuid)references infos(stuid);score表中添加约束stuid是外键是infos表中的主键;
12、orderby 默认是升序排列
13、一个数据库中的所有表select * from tab;desc emp;查看表结构
14、输入一个/ 是重复执行上一步操作;如果前面语句句尾没有写分号,则语句只是保存在缓冲区中,/可以提交语句;
15、一个数据库中访问另一个数据库中的表比如在sys数据库中select * from scott.emp;
16、根据结果集创建表 create table demo as select * from infos;
17、根据结果集复制表结构 create table demo as select * from infos where 1=2;
18、INSERT向表中插入一个结果集 insert into demo select * from infos;
19、添加数据insert into infos values(,,);
20、Commit 是提交用户操作的结果只有提交了 数据才真正的更新到表中 别的用户才
能看到最后操作的结果
21、更新数据update infos set stuid='33', name-'整数' where age-'33';
22、删除数据 delete from infos where stuid-'33';
23、删除整张表truncate table infos;delete from infos;两者均能删除数据,但前者删除的数据不能回复,后者删除的数据可以通过日志文件恢复,表中记录过多,用truncate会比delete更加效率
24、打开一个终端 删除一条数据,然后再打开另一个终端,会发现数据依然存在,在oracle中,每个连接到数据库的窗口,都会与数据库建立一个session,一个session对数据的操作 不会马上反应到数据库的真实数据中去,可以允许回滚,当一个session提交所有操作后,数据库才会做真正的修改...25、提交事务commit回滚rollback;回滚是在提交之前使用,如果已经提交了,回滚也没用...26、字符串连接符 ||
27、起别名select empno id,ename name from emp;最好回避中文
28、package mytest;
29、public class Main {
30、public static void main(String[] args){
31、System.out.println(new A());
32、}
33、}
34、class A35、{
36、}
37、Java在运行上述代码时输出一个很奇异的结果:
38、mytest.A@60aeb039、尝试解释一下可能的原因.40、classA中虽然没有任何方法,不过他继承了object类,实现了里面的tostring()方法,打印出的是该对象在内存中的地址对象类型名@内存地址
41、Select * from emp where sal between 1500 and 3000;
42、Oracle 对大小写敏感,所以查询的时候应该大写select * from emp where ename=' SMITH';
43、字段in的作用select * from emp where ename in('张三','李四','王五');另外一种就是not inselect * from emp where empno not in(333,4444,555);
44、Like 语句的作用模糊查询select * from empwhere ename like '_S%';_表示一个字符,% 表示多个字符
45、Order by 的使用升序asc降序descselect * from emp where deptno=10order by sal desc ,hiredate asc;薪水降序雇佣日期升序select * from emp where empno<>4444;select * from emp where empno!=4444;
46、Concatselect concat('hello','world')from dual;连接两个字符串
47、字符串截取select substr('hello',1,4)from dual返回hellsubstr从一开始截取
48、字符串截取后面几位 比如说名字的后三位select substr(ename,length(ename)-2,)from emp或者select substr(ename,-3,999)from emp;从倒数第三个一直到最后截取
49、NVL()可以指定值 nvl(comm,0)可以把null值转换成另外一个值 比如说050、Decode()相当于if else。。Select decode(1,1,'hah ',2,'weiwei',3,'huhu')from dual;最
前面是1,后面的那些都是选项,对应了哪个就相应的打印出哪个...51、decode(job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁')
52、统计一张表中的记录数select count(*)from emp;
53、Where 只能对单行进行过滤,而不能对行组进行过滤,group by如果要有条件过滤的话应该用havingselect deptno,AVG(sal)from emp having AVG(sal)>2000 group by deptno;
54、使用where也可以同时使用having,where 是对行进行筛选,而having是对组进行筛选having 是放在group by 后面 进行组筛选
55、在组函数存在的时候就不要出现分组查询语句了select deptno,sum(avg(sal))from emp order by deptno;这就错了不要出现deptno,因为有组函数了
56、子查询:查询出工资比7654高,同时与7788从事同样工作的全部雇员信息: select * from emp where sal>(select sal from emp where empno=7654)and job=(select job from emp where empno=7788);
57、表的修改: alter table demo add(列名,类型); alter table demo add(address varchar(30)default '无名氏');修改表字段的值alter table demo modify(address varchar(50)default '张三');modify 关键字
58、为表重命名rename demo to demo01;rename emp to empdemo;
59、约束的种类 : 主键约束唯一约束 外键约束非空约束检查约束
60、Primary keyuniqueforeign keynot nullcheck61、添加约束的语句alter table demo add constraint约束名primary key(id);
62、Alter table demo add constraint 约束名 not null(name);check(sec in('男','女'))unique(name)foreign key(id)references 表名(id);
63、Rownumselect rownum ,empno,ename from emp;rownum 就是显示行数 每一行一个数,前五行 select rownum,ename from emp where rownum<=5;假如是十行中的后五行,那就只能先做一个子查询select * from(select rownum r,ename from emp where rownum<=10)k where k.r>5;
64、约束的作用就是保证了数据的完整性关联上的约束 如果要删除表的话 应该先删除子表 再删除父表如果要强制删除父表则drop table demo cascade constraint;还有一种是级联删除 父类删除 子表也删除drop table demo on delete cadcade;
65、Dual表是sys用户下的一张表从scott用户下访问此表应该要sys.dual,但是现在没有,这就是一个同义词的概念,用dual代替用户名.表名创建同义词create synonym emp for scott.emp;为scott表中的emp 表建一个同义词,然后再其他用户下就可以直接通过emp直接访问了...Drop synonym emp;删除同义词
66、序列,是序列号的生成器,可以为数据库表中的行自动生成序号语句为:create sequence demo increment by 1 start with 10 nomaxvalue(无最大值)maxvalue 100 minvalue
10。。Demo.nextval序列的下一个内容demo.currval序列的当前内容
67、视图的功能:一个试图实际上就是封装了一条复杂的查询语句create view demo as 子查询创建好的视图以后一样能够直接在视图中进行查询操作完整的语句应该是 create or replace view demo as 子查询假如你要查询一个结果,但是查询语句特别长,你每次都要写那个语句就很麻烦,所以可以把那个语句包装成一个视图,以后只要select * from demo就能实现同样的功能...68、不能更新视图的创建条件 with check option创建视图只读不允许更改with read only69、新建的用户user需要赋予权限,如果所有权限都需要有,那就把权限分组成各种角色,再赋予connnect resoutce70、进入命令行,到指定要备份数据库的文件下exp备份然后用imp恢复
71、数据库设计的三大范式:第一范式,保证数据表中的每个字段不可再分第二范式:。
72、Groupby 和having 的使用having在最后对分组后的数据进行筛选,而不能用where73、左右连接(+)在左表示右连接在右表示左连接
第五篇:oracle表空间管理及操作实用案例
Oracle
表空间管理及操作详解(附带案例)
一:表空间概述
表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中;数据库逻辑上讲是由一个或者多个表空间组成,数据文件则是存放在表空间中,表空间有一个或者多个数据文件组成即表空间有数据文件构成的。
数据库,表空间,段,区,块,按大小排列依次是:数据库---》表空间-----》段-----》区----》块。
1.建立表空间的作用:
(1.)控制数据库占用的磁盘空间。(2).dba可以将不同的数据类型部署到不同的位置,这样有利于提高i/o性能,同时有利与备份和恢复等管理操作。
二:管理表空间和数据文件。
(1)建立表空间create tablespace;一般情况下建立表空间是特权用户或者dba来执行的,如果其他用户来创建表空间,则用户建必须要具有create tablespace的系统权限。(2)建立数据表空间
在建立数据库后,为便于管理表,最好建立自己的表空间。
create tablespace sp02 datafile 'd:testsp02.dbf' size 20m uniform size 128k 说明:执行完上述命令后,会建立名称为sp02的表空间,并为该表空间建立名称为sp02.dbf的数据文件,区的大小为128k。(3.)在表空间建表
create table tablesp02(ID number(5),name varchar2(20))tablespace sp02(4)显示当前用户拥有哪些表。
select * from tab;
(5).知道表空间名,显示该表空间包括的所有表。
select * from all_tables where tablespace_name='表空间名'。
注:拥有权限不同的用户在进行以上操作得到的结果可能不同。System可以查看得到某空间的所拥有表。(比如users表空间)(6)知道表名,查看该表属于那个表空间。
select TABLESPACE_NAME, TABLE_NAME from user_tables where TABLE_NAME='EMP';(7)知道表名,查看该表属于那个表空间,属于哪个用户。
select owner,TABLESPACE_NAME, TABLE_NAME from all_tables where TABLE_NAME='EMP';(8)改变表空间的状态 使表空间可读写
alter tablespace 表空间名 read write;
删除表空间,一般情况下由特权用户或者dba来操作。具有drop tablespace系统权限。
drop tablespace ‘表空间’includeing contens and datafiles;
说明:includeing contens表示删除表空间时,删除该空间的所有数据库对象而datafiles表示将数据库文件也删除。(9)改变表空间的状态(1)使用空间脱机
alter tablespace 表空间名 offline(2)使用空间联机
alter tablespace表空间名online(3)只读表空间
建立表空间时,表空间可以读写,如果不希望在表空间上执行update,delete,insert操作。那么可以将表空间修改为只读。alter talbespace sp01 read only;
三:移动数据文件:
(1)确定数据文件所在的表空间(知道表属于哪个表空间)Select tablespace_name from dba_data_files where file_name='D:TEST 5.DBF';(2)使用表空间脱机
确保数据文件的一致性,将表空间转换为offline的状态。alter tablespace sp01 offline;
(3)使用命令移动数据文件到指定的目标位置。host move d:testsp01.dpf c:testsp01.dbf;(4)执行alter tablespace命令
在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改。
alter tablespace sp01 rename datefile ‘d:sp01.dbf’ to 'c:sp01.dbf'(5)使得表空间联机
在移动了数据文件后,为了使用户可以访问该表空间,必须将其变为online状态:
alter tablespace sp01 online;
四:显示表空间信息:
查询数据视图字典dba_tablespace,显示表空间的信息:
select tablespace_name from dba_tablespaces 显示某个表空间的详细信息: select * from dba_tablespaces where TABLESPACE_NAME='SP05';显示表空间所包含的数据文件。查询数据字典视图dba_data_files。可显示表空间所包含的数据文件如下:
select file_name,bytes from dba_data_files where tablespace_name='SP05';常用表空间,undo表空间和临时表空间,非标准块的表空间。了解表空间的各个状态:如何改变表空间的的状态的方法。(online,offline,read write,read only)system是系统表空间,不能作为只读,如果是普通表空间,那么我们可以设为只读。
五:附加案例:建一个表空间,在表空间里面建表,并且增加表空间的存储空间。
1.建立表空间 create tablespace sp05 datafile 'd:testsp05.dbf' size 20m uniform size 128k 2.建表
create table tablesp05(ID number(5),name varchar2(20))tablespace sp02 3.insert into tablesp05 select * from tablesp05;(重复多步提示空间不足)
4,拓展表空间,扩大存储空间。
alter tablespace sp05 add datafile 'D:test 5.dbf' size 20m;
拓展表空间的存储空间这里有三种方法:
(1)增加数据文件alter tablespace sp05 add datafile 'D:test 5.dbf' size 20m;
(2)修改数据文件大小
alter database datafile 'd:testsp05.dbf' resize 50m;数据文件不要超过500m。(3)设置文件的自动增长 alter database datafile 'D:testSP05.dbf' autoextend on next 10m maxsize 500m;