`

使用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 ;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics