oracle如何创建表空间和备份数据

1.创建数据表空间
 
create tablespace "chenxm"
 
logging
 
datafile 'e:\spaces_eu\chenxm.ora' size 500m extent
 
management local segment space management  auto ;
 
alter database
 
datafile 'e:\spaces_eu\chenxm.ora' autoextend
 
on next  1m;
 
2.创建临时表空间(日志文件)
 
create
 
temporary tablespace "chenxm_temp" tempfile
 
'e:\spaces_eu\chenxm_temp.ora' size 100m autoextend
 
on next  1m maxsize unlimited extent management local uniform
 
size 1m;
 
3.创建用户和授权
 
create user "eucrm"  profile "default"
 
identified by "1" default tablespace "chenxm"
 
temporary tablespace "chenxm_temp"
 
account unlock;
 
grant unlimited tablespace to "eucrm";
 
grant create database link to "eucrm";
 
grant create any table to "eucrm";
 
grant create any trigger to "eucrm";
 
grant create any view to "eucrm";
 
grant create database link to "eucrm";
 
grant create procedure to "eucrm";
 
grant create table to "eucrm";
 
grant create tablespace to "eucrm";
 
grant create trigger to "eucrm";
 
grant drop any table to "eucrm";
 
grant insert any table to "eucrm";
 
grant update any table to "eucrm";
 
grant "connect" to "eucrm";
 
alter user "eucrm" default role all;
 
4.删除表空间与用户
 
drop user eucrm cascade;
 
drop tablespace chenxm including contents;
 
drop tablespace chenxm_temp including contents;
 
 
 
5.创建表
 
建表时最好依照第三范式去建表(三个范式),这样可以最大程度避免出现数据冗余,
 
而且表结构合理的情况下,可以加快查询速度
 
 
 
第一范式:表中每一个字段的数据都不可分割。
 
在目前的数据库软件及其设计中,基本只有char类字段要考虑这一范式
 
(而不是像有些人说的现有数据库完全不需要考虑,实际上很多垃圾软件公司设计数据库为了方便以后变更,很多都用varchar型的字段)
 
,但适当合并一些char类字段,可简化数据库结构,如将电话1、电话2、电话3(定长字符串)类的设计改为电话(varchar型变长字符串),
 
采用适当的正则表达式确保输入数据的正确性.
 
第二范式:非主键列完全依赖主键列。
 
与完全依赖所对应的部分依赖,是指某些非主键列仅依赖复合主键中的部分列,而不是整个复合主键。因此所有单主键的表都符合第二范式。
 
(学号, 课程名称) → (姓名, 年龄, 成绩, 学分)
 
违反第二范式:
 
课程名称 → 学分,学分实际上只依赖于课程名(与学号无任何关系),
 
学号 → 姓名, 年龄,同理,姓名、年龄与课程名无任何关系。
 
第三范式:非主键列不可传递依赖主键,即非主键列互不依赖。
 
(学号) → (姓名, 年龄, 所在学院, 学院地点, 学院电话)
 
违反第三范式:(学号) → (所在学院) → (学院地点, 学院电话)
 
6.建立索引
 
索引:在经常查询的字段上面建立索引,
 
利用index对查询进行优化,(index可以避免对表的一个全面扫描)
 
原理:当以某个字段建立一个索引的时候,数据库就会生成一个索引页,
 
索引页不单单保存索引的数据,还保存了索引在数据库的具体的物理地址[rowid],
 
单我们查询数据时,oracle会先查索引页,这样就能够很快的定位查找到要找的记录)。
 
注意:
 
如果表的列很少,不适合建索引.
 
当执行过多次的insert,delete,update后,会出现索引碎片,
 
影响查询速度,我们应该对索引进行重组.
 
7. sql语句的优化
 
尽量使你的sql语句能够使用索引。
 
怎样使sql语句能够使用到索引呢:
 
当sql语句中包含not in,<>,is null,is not null,like '%%'的时候不会用索引。
 
IN: in会拆成一堆or的,可以使用表的索引。
 
NOT IN:强列推荐不使用,因为它不能应用表的索引。优化方案:用NOT EXISTS 或(外连接+判断为空)方案代替
 
<> 操作符(不等于): 不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。
 
优化方案:用其它相同功能的操作运算代替,如a<>0 改为 a>0 or a<0;a<>’’ 改为 a>’’.
 
IS NULL 或IS NOT NULL操作(判断字段是否为空):
 
判断字段是否为空一般是不会应用索引的,因为B树索引(oracle大多是使用B树索引)是不索引空值的。
 
优化方案:用其它相同功能的操作运算代替,如 a is not null 改为 a>0 或a>’’等。
 
is null 时,用一个缺省值代替空值,例如业扩申请中状态字段不允许为空,缺省为申请。
 
LIKE:LIKE操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,
 
优化方案:如LIKE ‘%001%’ 这种查询不会引用索引,会产生全表扫描,
 
而LIKE ‘001%’则会引用范围索引。进行范围的查询,性能肯定大大提高。
 
8.备份数据
 
导出:
 
exp 用户名/密码@服务名 file=d:\file name.dmp
 
 
 
数据导出:
 
1 将数据库test完全导出,用户名system 密码manager 导出到d:\daochu.dmp中
 
exp system/manager@test file=d:\daochu.dmp full=y
 
2 将数据库中system用户与sys用户的表导出
 
exp system/manager@test file=d:\daochu.dmp owner=(system,sys)
 
3 将数据库中的表table1 、table2导出
 
exp system/manager@test file=d:\daochu.dmp tables=(table1,table2)
 
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
 
exp system/manager@test file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
 
 
 
导入
 
imp system/admin@服务名  file=d:\daochu.dmp
 
数据的导入
 
1 将d:\daochu.dmp 中的数据导入 test数据库中。
 
imp userid=system/manager@test fromuser=  touser=  file=d:\daochu.dmp
 
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
 
在后面加上 ignore=y 就可以了。
 
2 将d:\daochu.dmp中的表table1 导入
 
imp system/manager@test  file=d:\daochu.dmp  tables=(table1)
 
 
 
例如:
 
imp username/password@servicename file=e:\filename.dmp full=y ignore=y log=log.txt
 
exp username/password@servicename file=e:\filename.dmp full=y
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值