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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle建库建表的步骤如下: 1. 创建数据库 使用 Oracle SQL Developer 或 SQL Plus 工具,连接到 Oracle 数据库实例。在连接成功后,执行以下命令来创建新的数据库: ```sql CREATE DATABASE DATABASE_NAME ``` 2. 创建表空间 表空间是数据库逻辑存储单元,用于存储数据。在 Oracle 中,可以创建多个表空间,以便更好地管理和组织数据。使用以下命令创建表空间: ```sql CREATE TABLESPACE TABLESPACE_NAME DATAFILE 'file_name.dbf' SIZE size_in_mb ``` 其中,`file_name.dbf` 是表空间数据文件名,`size_in_mb` 是表空间大小,以 MB 为单位。 3. 创建用户 在 Oracle 中,每个用户都有自己的数据库对象,例如表、视图、索引等。因此,需要创建一个或多个用户来管理数据库对象。使用以下命令创建用户: ```sql CREATE USER USER_NAME IDENTIFIED BY PASSWORD DEFAULT TABLESPACE TABLESPACE_NAME QUOTA UNLIMITED ON TABLESPACE_NAME; ``` 其中,`USER_NAME` 是用户名称,`PASSWORD` 是用户密码,`TABLESPACE_NAME` 是用户默认表空间。 4. 授予权限 在 Oracle 中,用户需要授予相应的权限才能访问和操作数据库对象。使用以下命令为用户授予权限: ```sql GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO USER_NAME; ``` 其中,`USER_NAME` 是用户名称,`CREATE SESSION` 允许用户连接到数据库,`CREATE TABLE` 允许用户创建表,`CREATE VIEW` 允许用户创建视图。 5. 创建表 使用以下命令创建表: ```sql CREATE TABLE TABLE_NAME ( COLUMN_1 DATA_TYPE CONSTRAINT PK_TABLE_NAME PRIMARY KEY, COLUMN_2 DATA_TYPE, COLUMN_3 DATA_TYPE ); ``` 其中,`TABLE_NAME` 是表名,`COLUMN_1`、`COLUMN_2`、`COLUMN_3` 是表列名,`DATA_TYPE` 是列数据类型。`CONSTRAINT PK_TABLE_NAME PRIMARY KEY` 指定了主键。 以上是 Oracle 建库建表的基本步骤,可以根据实际需求进行更改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值