`
yunchow
  • 浏览: 317806 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

轻松掌握Oracle数据库管理

阅读更多
作为一个DBA的职责如下:
1,安装升级数据库
2,建表,表空间,表,视图,索引...
3,制定并实施备份与恢复计划
4,数据库权限管理,调优,故障排除.
5,还要能参与项目开发,会写sql语句,存储过程,触发器,规则,约束和包.

查看初始化参数命令:
show parameter;

数据库表的备份与恢复
导出具体分为:导出表,导出方案,导出数据库.
我们可以用exp命令来完成导出的操作.
该命详解:

导出自已的表:
exp userid=scott/tiger@test tables=(emp,dept) file=d:/e1.dmp;
特别说明:
在导入和导出的时候,要到Oracle目录的Bin目录下去导.
在导出其他用户的表时只要在表名前指名方案名即可,如:
exp userid=system/manager@test tables=(scott.emp) file=d:/xx.dmp;

导出表结构
exp userid=scott/tiger@test tables=(emp) file=d:/tmp.dmp rows=n;

使用直接导出方式,用于处理大表,速度较快
exp userid=scott/tiger@test tables=(emp) file=d:/tmp.dmp direct=y;

导出方案:
导出自已的方案:
exp scott/tiger@test owner=scott file=d:/scott.dmp;

导出别人的方案,需要相应的权限:
exp system/manager@test owner=(system,scott) file=d:/tmp.dmp;

导出数据库,花的时间可能会比较长,必须要有相应的权限:
exp userid=system/manager@test full=y inctype=complete file=d:/tmp.dmp;
-----------------------------------------------
导入
导入自已的表(由谁导出的就得由谁导入,不然会发出警告,注意外键关系
如果是空表的话, 任意用户都可导入):
imp userid=scott/tiger@test tables=(emp) file=d:/xx.dmp;

导入表到其它用户:
imp userid=system/manager@test tables=(emp) file=d:/xx.dmp touser=scott;

导入表结构:
imp userid= tables=() file= rows=n;

导入数据:
imp userid=scott/tiger@test tables=(emp) file=d:/tmp.dmp ignore=y;

导入方案:
导入自已的方案
import userid=scott/tiger@test file=d:/tmp.dm;

导入别人的方案:
imp userid=system/manager file=xx fromuser=system touser=scott;

导入数据库:
imp userid=system/manager full=y file=d:/tmp.dmp;

=====================================================
数据字典与动态性能视图
数据字典是数据库中最重要的部分,动态性能视图是启动后的信息.
数据字典记录数据库的系统信息.用户只能在数据字典上进行查询操作,
它的维护和修改是由系统自动完成的.
数据字典视图包括:user_xx,all_xx,dba_xx三种类型.
用法如下:

显示当前用户所拥有的所有的表
select table_name from user_tables;

显示当前用户可以访问到的表
select table_name from all_tables;

显示所有方案中的所有表:
select table_name from dba_tables;

=================================
用户名,权限,角色
可以通过查询dba_users可以显示所有数据库用户的详细信息.
select username, password from dba_users;

查看scott拥有的角色
select * from dba_role_privs where grantee='SCOTT';

查看Oracle中所有角色
select * from dba_roles;

查看角色中的权限
select * from dba_role_privs where grantee='用户名';

查看所有的系统权限
select * from system_privilege_map order by name;

查看所有的对象权限
select distinct privilege from dba_tab_privs;

Oracle中的权限分为系统权限和对象权限.

创建用户
create user ken identified by 123446;

为用户授于相应的系统权限.
grant create session,create table to ken with admin option;
grant create view to ken;

回收系统权限
revoke create session from ken;

* 请注意系统权限不是级联回收.

授于对象权限一般是由对象的所有者进行的,但是在9I后dba用户可以授权,授权时如带with grant option,表示授权授权权力.
create user monkey identified by s123;
grant create session to monkey; // 系统权限,create session 表示可登录权限.

我们利用scott用户为monkey用户授权
grant select on emp to monkey; // 查询对象权限
grant update on emp to monkey; // 修改
grant delete on emp to monkey; // 删除

显然上面的方法比较麻烦,因此我们可如下操作:
grant all on emp to monkey; // 表示对象上的所有权限.

同时,我们也可对表中的某列进行授权
grant update on emp(sal) to monkey; // 只能修改emp表上的sal这个字段
grant select on emp(ename,sal) to monkey;
grant alter on emp to monkey;
grant index on scott.emp to monkey [with grant option]; // 授于建立索引权限

回收对象权限,可以由授于者收回,也可由dba用户收回,同时,对象权限是会级联回收的, 这一点与系统权限是不一样的.
create user u1 identified by u1;
create user u2 identified by u2;
grant connect,resource to u1/u2;
grant update on scott.emp to u1 with grant option;
conn u1/u1;
grant update on scott.emp to u2;
conn / as sysdba;
revoke update on scott.emp from u1;
此时u2的相应的更新权限也被回收了,进一步说明了对象权限与系统权限是不同的,前者是级联回收的,而后者却不是.

而为了简化管理在此要引入角色的概念,角色是相关权限的命令集合.

常见预定义角色connect,resource,dba

对于一般应用的开发人员需要的大部分权限都包含在了connect,resource中了.而dba角色爱上你的眼睛有所有的系统权限,而dba角色不具备sysdba和sysoper的特权.不能关闭打开数据库.

自定义角色首先需要相应的权限,不然是创建不了的.
create role 角色名 not identified; // 修改这个角色时不需要输入密码
create role 角色名 indetified by manager; // 当修改时需要密码,为manager

为角色授权
grant create session to 角色名 with admin option;
conn scott/tiger@test;
grant slect on scott.emp to 角色名
grant insert,update,delete on scott.emp to 角色名

角色有了,要分配给用户才会有意义,一般是由dba来完成的.
grant 角色名 to user_xx [with admin option]; // with admin option表示可继续将此角色授下去.

删除角色,一旦删除,那么拥有此角色的用户会失去相应的权限
conn system/manager;
drop role 角色名;

显示所有角色: select * from dba_roles;

动态性能视图
系统在启动时会建立,而在退出时会删除

---------------------------------------
管理表空间和数据文件
表空间是数据库的逻辑组成部分.

数据库的逻辑结构:表空间,段,区,块

利用表空间我们可以把不同类型不同作用的数据文件放到不同的磁盘,从而提高了IO效率与并发性能,并且利于备份和恢复.

建立表空间(需要相应的权限: create tablespace ):
create tablespace data01 datafile 'd:/xx.dbf' size 20M uniform size 128k

有了表空间后,我们可以使用表空间:
create table xxx ... tablespace data01;

表空间脱机
alter tablespace users offline;

表空间联机
alter tablespce users online;

只读表空间
alter tablespace 表空间名 read only;

删除表空间
drop tablespace 表空间名 including contents and datafiles;

扩展表空间
增加数据文件
alter tablespace ts01 add datafile 'xxx' size 20M;

增加数据文件的大小
alter tablespace 表空间名 'd:/xx.dbf' resize 20M;

设置文件的自动增长
alter tablespace 表空间名 'd:/xx.dbf' autoextend on next 10M maxsize 500M;

==============================
维护数据完整性
数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则.
我们可以通过约束,触发器,应用程序(过程,函数)三种方法来实现,而约束易于维护,性能高,所以是首选.
约束包括:not null, unique, primary key, foreign key, check;
unique定义后允许为空.
一张表最多只能有一个主键,但是可以有多个unique约束.

增加指定列不允许为空
alter table goods modify goodsName not null;

增加unique约束
alter table customer add constraint unique_idcard unique(cardId);
alter table customer add constraint add_check check(addr in(xx,xx,xx));

删除约束
alter table customer drop constraint 约束名称;

特别说明:在删除主键约束时,可能会碰到错误,因为存在外键引用的况 ,在这种情况下我们可以这样做:
alter table xx drop primary key cascade;

查看约束信息可通过数据字典user_constraints;

-------------------
索引,对于我们要经常查询而又不常更新的列,我们常常会建立相应的索引.

创建单列索引
create index name_index on customer(name);

复合索引
create index 索引名 on 表名(字段1,字段2);

使用原则
1,在大表上建立索引才会有意义.
2,在where子句或是连接条件上经常引用的列上建立索引.
3,索引层次不超过4层.

索引缺点分析
1,建立索引,系统要占用为表的1.2倍的空间
2,更新时,索引也要用时间来对其更新

实践表明,不好的索引不但于事无补,反而会降低系统性能.

在如下情况建立索引是不恰当的
1,很少用的.
2,逻辑性字段.

显示索引信息数据字典:dab_indexs, user_indexs

Oracle会为unique字段加上索引.

0
0
分享到:
评论

相关推荐

    电子教程/数据库类:轻松掌握Oracle 8数据库开发

    电子教程/数据库类:轻松掌握Oracle 8数据库开发

    轻松掌握oracle数据库开发中序列的使用

    序列是一数据库对象,利用它可生成唯一的整数。Oracle序列允许同时生成多个序列号,而每一个序列号是唯一的。当一个序列号生成时,序列是递增,独立于事务的提交或回滚。本文介绍了Oracle中建立、更改、删除序列的...

    计算机软件-编程源码-轻松掌握Oracle 8数据库开发.zip

    计算机软件-编程源码-轻松掌握Oracle 8数据库开发.zip

    计算机软件-商业源码-轻松掌握Oracle 8数据库开发.zip

    计算机软件-商业源码-轻松掌握Oracle 8数据库开发.zip

    轻松掌握Oracle 8数据库开发

    清晰版本,PDG格式,使用ssreader阅读!

    Oracle数据库从入门到实用教程详解

    通过学习本课程,能够让学员轻松掌握oracle数据库的相关操作。轻松掌握plsql的编程。 课程对象: 零基础的学员,程序开发人员,数据库运维人员,所有人员 课程简介: 本课程中重点讲解了关于oracle数据库的相关知识...

    Oracle数据库重要知识笔记

    Oracle数据库为现在主流数据库之一,这是第二天,一共 四天,希望继续看下面三天的可以关注我哦,每一到二天就 会发java各个技术笔记,让你快速掌握java重要知识点, 轻松就业

    零基础学习oracle数据库

    本教程是我当年学习的时候我们老师发的,绝对是经典中的经典,保证零基础的也可以轻松掌握这门课!

    oracle DB

    ORACLE数据库培训手册轻松掌握oracle

    Oracle学习资料

    两周学会使用Oracle,由浅入深让你轻松掌握Oracle数据库的使用。

    Oracle9iDBA基础教程

    本书内容全面、浅显易懂,作者在介绍每个基本概念之前均以生活中的一个实例进行比喻,使读者在一种轻松、自然的情境下掌握Oracle9i数据库的基本概念,了解数据库管理员的职责和日常工作,数据库的组成、结构和系统的...

    Windows下Oracle11g数据泵操作步骤详解图文

    数据泵是Oracle数据库本身提供的“基于服务器的工具”,用于在加载和卸载数据时获得高性能。因为他是基于服务器的,所以所有操作一定要在服务器端进行。 本文不想介绍太多的理论知识和参数,主要介绍数据泵“导入/...

    收获,不止Oracle01

    在这《收获,不止oracle》里读者将会跟随作者一同对oracle数据库的相关知识进行梳理,最终共同提炼出必须最先掌握的那部分知识,无论你是数据库开发、管理、优化、设计人员,还是从事java、c的开发人员。接下来作者再...

    Redhat Enterprise 5.5下安装Oracle9i

    学习Oracle,大家都知道在Linux下玩比较有意思,因此鉴于初学者对在Linux下安装Oracle数据库有种莫名的恐惧,本人特用了一天的时间,完成了在Redhat Enterprise Linux 5.5下安装Oracle9i的完整步骤,这个文档对安装...

    Oracle ADF Survival Guide

    迅速掌握Oracle的应用程序开发框架(ADF)。快速构建易于重用,扩展和维护的现代化,用户友好的应用程序。 Oracle ADF生存指南涵盖了最新的12c版本,并解释了所有重要的概念和部分,包括ADF Faces,ADF任务流程,ADF...

    HP-UX平台利用Bakbone NetVault 7.5.4 Update4 备份和恢复文件系统

    HP-UX平台利用Bakbone NetVault 7.5.4 Update4 备份和恢复文件系统!轻松掌握oracle数据库RAC技术。

    学习Oracle必备

    初学Oracle数据库的你一定遇到过很多编写PL-SQL语句的头痛问题,没关系,有了Oracle帮助文档,里面有很全面的各种Oracle函数示例及教程。轻松学会,可以让初学者的你快速掌握Oracl数据库技术。

    ORACLE基础知识

    oracle数据库的基础知识,比较有用的,让你轻松掌握!

    数据库系统的核心.doc

    数据库系统一般由数据库、数据库管理系统( DBMS)、应用系统、数据库管理员和用户构成。DBMS是数据库系统的基础和核心。 它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBM S访问数据库...

    PL_SQL总结-1.rar

    plsql学习教程,只要认真学习,便可轻松掌握plsql语法,便可轻松熟练的掌握oracle数据库的操作,熟练编写数据库脚本语言

Global site tag (gtag.js) - Google Analytics