Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库。
对于初学者来说,为了避免麻烦,可以用'Database Configuration Assistant'向导来创建数据库。
创建完数据库后,并不能立即在数据库中建表,必须先创建该数据库的用户,并且为该用户指定表空间。
关系:一个大的数据中分为几个表空间,创建几个用户然后指定对应的表空间并授权,这样用户就独立操作自己的资源了,每每用户登录进入后,在自己的表空间中新建表啊等等对象,互不干扰。
下面是创建数据库用户的具体过程:
1.假如现在已经建好名为'news'的数据库,此时在E:\app\Administrator\oradata\目录下已经存在db2目录(注意:我的Oracle11g安装在E:\app下)。
2.在创建用户之前,先要创建表空间
其格式为:格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小;
如:
SQL> create tablespace db2tabs
datafile 'E:\app\Administrator\oradata\db2\db2tabs.dbf'
size 500M;
其中'db2tabs'是你自定义的表空间名称,可以任意取名;'E:\app\Administrator\oradata\db2\db2tabs.dbf'是数据文件的存放位置,一般存放在你的实例(数据库)目录下,'db2tabs.dbf'文件名也是任意取;'size 500M'是指定该数据文件的大小,也就是表空间的大小。
3.现在建好了名为'db2tabs'的表空间,下面就可以创建用户了
其格式为:格式: create user 用户名 identified by 密码 default tablespace 表空间表;
如:
SQL> create user user2 identified by user2 default tablespace db2tabs;
--这里创建了user2用户,密码为user2,默认表空间'default tablespace'使用上面创建的表空间,若不指定,则默认表空间为users,临时表空间为temp。
--修改用户默认表空间:alter user news default tablespace xxx;
--修改用户密码:alter user news identified by xxx;
--锁定账户:alter user news account lock; --对应的还有解锁,就是unlock
4.接着授权给新建的用户
SQL> grant connect,resource to user2; --表示把 connect,resource权限授予news用户
SQL> grant dba to user2; --表示把 dba权限授予给news用户
授权成功。
--把某个对象授权:grant select on scott.dept to news --把scott用户的dept表的select权限授予news用户
--连带授权:grant select on scott.dept to news with grant option --这时news用户也有了可以把scott.dept对象的select权限授予其他用户的权限,上面的那个授权是在超级管理员下授权的,而在这里,news也有权授权了
--授权所有:grant all on scott.dept to news --scott.dept对象的所有权限都授予news用户了
--解除权限:revoke select on scott.dept to news
注意,官方推荐,因为角色少,用户多,所以我们一般是创建一种角色,并授予相应的权限,然后把要创建的用户隶属与此角色,这样用户就拥有了角色所拥有的权限,而不是直接对用户授权,这样便于管理,如下:
--创建myrole角色:create role myrole;
--授予其dba和create tablespace权限:grant unlimited tablespace,dba to myrole;
--隶属于角色:grant myrole to news
5、新建对象
授权成功后就可以新建各种对象了,这里举例新建表:
首先以上面创建的news用户登录,然后创建表:
create table tt(t varchar2(10));
--这样新建的表tt的默认表空间是在news用户的默认表空间,如果你想把表建在其他表空间,这样:
create talbe tt(t varchar2(10)) tablespace othertabs;
------------------------------------------------------------------------------------------------------------------
另外,在团队协作的时候,一般呢我们是给每个人一个账户来进行远程登录到自己的服务器中操作的,比如,对于scott用户的所有资源,我想新建一个kute用户,但是拥有scott用户所有的资源,也就是每个用户的资源都是一样的。就可以这样做:
新建用户,分配给其他人使用登录到我的服务器
1.备份scott用户
首先新建要存储备份的文件夹:e:\oracle_new_scott\
在dos窗口中进入此文件夹,然后输入:exp
目的就是将scott用户的所有资料导出到此文件夹,exp也就是export,导出。
输入回车后,提示输入用户名和密码,这里输入要导出的用户scott和密码。
2.创建用户
首先应该以超级管理员的身份进入你的数据库
sqlplus sys/kute@db2 as sysdba;
--然后再创建用户,可以的话就先创建自己的表空间,这样最好了,如果不创建那么就使用默认的users表空间
create user user2 identified by user2 default tablespace users quota 10M on users
--这里的quota是把users表空间的10M空间给了user2用户
3、授权
grant create session,create table,create view,connect to kute
--这里如果出现导入不成功的话,那么授权的时候还要将unlimited tablespace权限授予
4.导入
同样在那个文件夹中输入:imp
出现一大堆东西,一直回车即可,注意,总共有两次要你输入用户名称:第一次,输入谁要导入的用户,这里是user2@db2,这里user2是我的用户,db2是全局数据库名称,必须这样写,否则报错用户名/口令不正确,它找不到用户,因为你的用户是在db2下新建的;第二次,输入要把谁导入,这里是scott。然后一直回车即可,完成。
这样,就创建了一个拥有scott用户所有资源的可以用于远程登录的user2用户。
下面贴出我创建用户的过程:首先我新建了一个db2的数据库,然后:
这样用户就创建完成了。下面是我的测试代码:
注意:如果你通过角色给用户授权,那么在将db2role角色授予用户user2之后,还要授予user2用户users表空间的权限,即: