Oracle安裝完後,其中有一個缺省的數據庫,除了這個缺省的數據庫外,我們還可以創建自己的數據庫。
對於初學者來說,為了避免麻煩,可以用'Database Configuration Assistant'向導來創建數據庫。
創建完數據庫後,並不能立即在數據庫中建表,必須先創建該數據庫的用戶,並且為該用戶指定表空間。
關系:一個大的數據中分為幾個表空間,創建幾個用戶然後指定對應的表空間並授權,這樣用戶就獨立操作自己的資源了,每每用戶登錄進入後,在自己的表空間中新建表啊等等對象,互不干擾。
下面是創建數據庫用戶的具體過程:
1.假如現在已經建好名為'news'的數據庫,此時在E:appAdministratororadata目錄下已經存在db2目錄(注意:我的Oracle11g安裝在E:app下)。
2.在創建用戶之前,先要創建表空間
其格式為:格式: create tablespace 表間名 datafile '數據文件名' size 表空間大小;
如:
SQL> create tablespace db2tabs
datafile 'E:appAdministratororadatadb2db2tabs.dbf'
size 500M;
其中'db2tabs'是你自定義的表空間名稱,可以任意取名;'E:appAdministratororadatadb2db2tabs.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。然後一直回車即可,完成。