`

使用Oracle建库的一般流程[转]

 
阅读更多

使用Oracle建库的一般流程

 

原文:http://www.blog.namind.com/using-the-general-process-of-building-a-database-oracle.html

 

   一、背景

一般在实现一个软件工程项目时,用户习惯于把数据存储在一个集中的对象中。
比如:在SQL Server中,针对一个项目,我们一般创建一个数据库
但是在Oracle中一般只有一个
数据库,那么在一个数据库中实现不同的项目就非常不方便。Oracle在组织不同项目中的数据库对象时,使用方案进行区分。

也就是说,创建一个软件项目,在Oracle中不是针对这个项目,创建独立的数据库,
而是为此项目创建一个方案

二、方案

什么是方案:某用户拥有的所有的数据库对象逻辑集合,就叫方案
方案在名称上和用户名是相同的

比如有一个Oracle“用户”叫scott,那么,我们一般称Scott用户所拥有的所有数据库
对象的集合叫“方案”

比如表emp,它的所有者是scott,我们引用的方法是:scott.emp
     scott.emp:可以称之为:scott方案中的emp表
     也可以称之为scott用户所拥有的emp表,以上两种说法是等价的,一般不进行区分。   

比如数据库DB中有三个方案:a、b、c,每一个方案中都有一个表emp
格式:[[数据库名.]方案名.]对象名
db.a.emp   
db.b.emp
db.c.emp

在SQL Server中引用方式:因为在SQL Server中有不同的数据库名a,b,c,
每一个数据库中都有emp表
格式:[[数据库名.]所有者的用户名.]对象名 == [[数据库名.]方案名.]对象名
a.dbo.emp
b.dbo.emp
c.dbo.emp

Oracle中创建方案的方法就是创建用户

三、实现方案

Oracle中如何实现方案:
1、(可选)创建表空间
2、创建用户
2、给用户授予合适的权限
3、创建数据库对象(表、视图、索引等)
4、创建数据库应用程序(PL/SQL编程)

四、表空间
    用于存储数据库对象的存储空间

SQL Server中数据存储在一个逻辑对象中——文件组
     文件组是数据库中的逻辑对象,实现把不同的物理数据文件组织在一个对象中,方便引用。可以把整个表的数据的存储定义到不同的文件组
create table abc.dbo.test
(id int primary key)
on ‘mygroup’
指定到文件组,实际上是定位到文件组所对应的多个物理文件

Oracle中,组织不同的物理文件的逻辑对象不叫文件组,叫表空间
表空间是用于在Oracle中组织不同的数据文件的逻辑数据库对象

表空间是有物理数据文件构成的

1.创建表空间

创建具有一个数据文件的表空间
create tablespace tp_name
datafile
‘路径和文件名’ size 大小(文件不能乱删—如果直接删了需重装Oracle)

创建具有一个数据文件的表空间
create tablespace tp_name
datafile
‘路径和文件名’ size 大小,
‘路径和文件名’ size 大小,
‘路径和文件名’ size 大小,…

create tablespace test1
datafile
‘c:\test1′ size 5m,
‘c:\test2.ora’ size 5m

在实现项目方案时,表空间是可选的对象,如果用户不创建表空间
那么,系统会给新创建的用户分配系统默认表空间(system)
但是,为了保证项目数据能够高效存储、方便的备份,推荐创建表空间
2.删除表空间
Drop tablespace tablespace_name [including contents [and datafiles]];

五、方案(用户)
如果有可以使用的表空间了,那么就意味着,可以有空间存储用户数据了
下面创建用户:(创建方案)
语法:
create user 用户名 identified by 密码
[default tablespace 表空间名]
[quota 大小 on 表空间名]
[password expire](密码过期)


    如果[default tablespace 表空间名]不定义,就使用系统默认表空间
    quota 大小 on 表空间名:在指定在”表空间名”所指定的表空间上,用户可以用多少空间
    [password expire]:用户在第一次登录时,可以自己更改密码
   
创建用户:hy密码是password,表空间默认
create user hy identified by password;

创建用户:hy密码是password,表空间为test
create user hy identified by password
default tablespace test

创建用户:hy密码是password,表空间为test
在test上可以用5M空间,密码立即过期
create user hy identified by password
default tablespace test
quota 5m on test
password expire

六、权限
Oracle中新创建的用户,是没有任何权限的,即使是登陆也不行需要给Oracle用户明确授权才能使用
Oracle权限的分类:
    系统权限:执行特定的SQL语句的权利
    对象权限:访问其他方案对象的权利
   
        系统权限:(由特权用户管理)
        create table        权限代表用户可以在自己的方案中创建表(create table)
        create any table 权限代表用户可以在任意方案中创建表(create any table)

        对象权限:(自己拥有的对象的对象权限不需要授权)(对象的所有者管理)
        select :对象的拥有者把对自己的对象的select权限授予其他用户

权限的授予和撤销(grant和revoke):
1、系统权限的授予和撤销:
    GRANT 权限1,权限2,… TO
    user | role | public [,user | role | public] …[with admin option]
        user:用户名
        public:是一个Oracle组,代表所有的Oracle用户 (Windows中的everyone)不推荐使用
    –1、授予用户在自己的方案中建立表、视图、过程和函数的权限
        GRANT create table,create view,create procedure
        TO hy
    –2、授予用户scott、hy、hr在任意的方案中建立表、视图、过程和函数的权限
        GRANT create any table,
        create any view,
        create any procedure
        TO scott,hy,hr
      with admin option:委派授权选项:
        如果在授权时使用此选项,说明此用户可以管理此权限,
        也就是此用户在自己得到此权限的同时,也可以把此权限授权其他用户
    –3、授予用户在自己的方案中建立表、视图、过程和函数的权限,并且可以将权限授予别的用户
        GRANT create table,create view,create procedure
        TO hy with admin option
    如果授权者权限撤销了,那么不会影响其授与的其他用户的权限   
    A——>B——>C——>D
    A权限撤销,B、C、D不会受到影响
Revoke sys_priv [, sys_priv]…
from {user | role | public},[, {user | role | public}]…


2、对象权限的授予和撤销:
    GRANT 对象权限1,…,对象权限n
    ON 对象名1,…,对象名n
    TO user | role | public [,user | role | public] …
    with grant option
   
    对象权限1,…,对象权限n ON 对象名1,…,对象名n
    对象权限:根据对象类型不同权限名也不一样
        grant select on emp to hy
        grant select on proc_name to hy –错误的,因为过程是不能够select操作
        grant execute on proc_name to hy –正确的,过程可以具有”执行”权限
给用户hr,在SCOTT方案中对emp表执行select的能力
grant select on scott.emp to hr;
    with grant option:对象权限的委派
    委派后,权限是级联收回的
    A——>B——>C
    如果A的权限被撤销,则B、C都会被撤销
    Revoke {obj_priv [(column_list)] [,obj_priv [(column_list)] ] … | all [privileges]}
on [schema.]object
from {user | role | public} [, {user | role | public} ]…


七、Oracle角色:
    ——权限的集合就是角色
    ——类似于Windows的组
一般情况,Oracle新的用户没有任何权限(系统、对象),
要给新用户授予系统权限、对象权限,且授权的个数不定
–创建新用户
create user test identified by password
default tablespace hy
quota 10m on hy
–授予登录系统
grant create session to test
–授予表、视图、索引、序列生成器等创建、修改、删除等权限
grant create table,create view,create sequence to test;
。。。
过多的权限设置,增加了新用户设置的复杂性
——使用角色:
——Oracle内置的3个角色:
    1、connect:针对Oracle一般用户,诸如登录、创建表等基本权限
    2、resource:针对Oracle开发用户,诸如编程、对表空间的无限制使用
    3、dba:数据库管理员,对数据库具有最高的管理权限(sysdba)
    一般一个新建立用户,只需要授予connect+resource角色即可   
Oracle用户自定义角色:
        1、公共角色:重点
            create role role_name not identified;
        2、私有角色:可选的
        如果一个私有角色不是用户的默认角色,则用户获得此角色的权限
        必须通过输入密码验证后获得。
角色的使用方法:
            1、建立角色
            create role myrole not identified;
            2、给角色授权(向权限的集合中添加权限)
            grant create session,create table to myrole;
            3、通过角色给用户授权
            grant myrole to hr;
——角色的主要作用:简化授权
角色的嵌套:
create role a not identified;
create role b not identified;
create role c not identified;

grant create session to a;
grant create table to b;
grant a,b to c;

grant c to scott;

在Oracle中新建用户最简单的方法:
1、建立用户
2、授予角色(connect,resource)

例:1.create user test identified by password
       2.grant connect,resource,create view to test ;

 

分享到:
评论

相关推荐

    使用Oracle建库的一般流程

    总结来说,使用Oracle建库的一般流程包括以下步骤: 1. 根据需要创建表空间,用于存储数据库对象。 2. 创建用户(方案),并指定默认表空间和存储配额。 3. 授予用户必要的权限。 4. 在创建的方案下创建数据库对象,...

    oracle建库

    "Oracle建库"是指在Oracle环境中创建一个新的数据库实例的过程。这个过程包括多个步骤,涉及到数据库的初始化、配置、用户管理以及权限分配等核心环节。下面将详细阐述这些知识点。 首先,创建Oracle数据库通常需要...

    oracle手工建库

    ### Oracle手工建库流程 #### 一、准备工作:目录结构搭建 首先,创建必要的目录结构是手工建库的第一步。这包括: 1. **数据文件目录**:如`F:\oracle\product\10.2.0\oradata\`用于存放数据库的数据文件。 2. **...

    CASS转换及建库流程.rar

    本资料“CASS转换及建库流程”聚焦于如何利用CASS进行数据转换以及建立数据库的过程。下面将详细介绍这一流程的关键步骤。 1. **数据导入** 在开始CASS转换前,通常需要有原始的地形图或地籍图数据,这些数据可能...

    Oracle 10g的ASM裸设备建库 For Linux

    ### Oracle 10g的ASM裸设备建库For Linux知识点详解 #### 一、概述 在Oracle 10g环境下,使用ASM(Automatic Storage Management)进行数据库管理是一种常见且高效的方式。尤其对于Linux操作系统而言,利用裸设备...

    苍穹规划方案数据库建库作业流程.doc

    - **第三方软件**:除了核心GIS平台外,可能还需要使用到数据库管理系统(如Oracle、SQL Server)、图像处理软件、数据转换工具等第三方软件,以支持数据的导入、处理和管理。 2. **技术路线** - **技术路线**:...

    arcgis建库

    #### 一、ArcGIS建库流程概览 在IT行业中,尤其是GIS领域,ArcGIS作为一款广泛使用的地理信息系统软件,其建库过程是实现土地利用规划信息化的关键步骤。本文以成都市龙泉驿区为例,深入探讨了基于ArcGIS的县市级...

    苍穹建库流程

    苍穹建库流程是针对地理信息系统(GIS)中数据库构建的一种特定方法,主要涉及土地利用数据的采集和处理。在这一流程中,有几个关键步骤和技术要点值得深入探讨。 首先,"QSDWDM"和"ZLDWDM"可能是特定项目或领域的...

    Oracle排错 DBCA建库诡异问题处理--rac环境不能创建rac库

    ### Oracle排错 DBCA建库诡异问题处理--rac环境不能创建rac库 #### 故障处理概述 本文主要探讨了在Oracle RAC环境中利用DBCA(Database Configuration Assistant)工具进行数据库创建时遇到的一个特殊问题——无法...

    uperMap城镇土地调查数据库建库系统--建库流程

    ### SuperMap城镇土地调查数据库建库系统:建库流程与技术要点 #### 一、建库模式概述 SuperMap城镇土地调查数据库建库系统旨在构建并维护城镇土地调查数据库,其核心任务在于记录每宗土地的地类、面积、权属等...

    自动创建数据库工具

    在IT行业中,数据库管理是至关重要的任务之一,尤其是在大型企业或复杂的系统中。"自动创建数据库工具"是一种软件解决方案,旨在简化和自动化...在SQL和Oracle相关的项目中,这类工具的使用无疑会带来显著的效益。

    oracle10g翻译手动建库

    1. **手动建库流程**: - 首先,根据规划阶段的准备工作,确定数据库的命名、存储位置、文件布局等。 - 使用SQL*Plus或其他工具执行`CREATE DATABASE`命令创建数据库。 - 配置必要的初始化参数。 - 完成数据库...

    Oracle11g静默安装以及手工建库文档

    ### Oracle 11g 静默安装及手工建库详解 #### 一、概述 本文档详尽地记录了Oracle 11g数据库在Linux环境下进行静默安装及手工建库的过程。静默安装是一种无需图形界面交互,通过预先定义的响应文件自动完成安装...

    基于AutoCad和Oracle Spatial建立地形图数据建库.pdf

    《基于AutoCad和Oracle Spatial建立地形图数据建库》 在信息技术日新月异的今天,地理信息系统(GIS)在各个领域中发挥着至关重要的作用。对于基础地理信息数据建库,传统方法往往依赖于GIS数据,但在实际操作中,...

    oracle 12c rac的安装记录

    以上是Oracle 12c RAC在ESXi平台上的基本安装流程。每个步骤都至关重要,需要仔细规划和执行,以确保系统的高可用性和性能。在实际操作中,可能还会遇到其他复杂情况,如许可证管理、性能优化和安全配置,这些都是...

    oracle10g手动建库方法.docx

    Oracle 10g 手动建库方法是一个详细的步骤指南,涵盖了从创建数据库目录到启动数据库实例、构建数据库结构以及初始化参数设置等多个方面。以下是对这些步骤的详细解释: 1. **创建目录与设定字符集**: - 目录如`a...

    苍穹集体土地使用权管理系统建库操作手册02.doc

    数据建库支持多种数据库格式,包括ACCESS、SQL Server、Oracle数据库。数据库创建流程包括选择数据库类型、选择或填写相应参数、创建数据库等步骤。 三、数据转换处理 数据转换处理包括将MAPGIS格式数据转换为SHP...

    集体土地所有权建库软件学习办法

    本文介绍了集体土地所有权建库软件学习办法,涵盖了软件安装、环境配置、图形库创建、数据库备份、数据入库及维护流程等方面。 SOFTWARE INSTALLATION 1.1 操作环境 WINDOWS 98/2000/XP/WINDOWS 7(客户端)WINDOWS ...

Global site tag (gtag.js) - Google Analytics