1. 程式人生 > >資料庫維護與管理—2018-09-19

資料庫維護與管理—2018-09-19

資料庫管理員介紹
1.dba的主要工作
1)安裝和升級oracle資料庫
2)建庫,表空間,表,檢視,索引
3)指定並實施備份與恢復計劃
4)資料庫許可權管理,調優,故障排除
5)對於高階dba,要求參與專案開發,會編寫sql語句,儲存過程,觸發器,規則,約束,包
2、sys和system
system是資料庫內建的一個普通管理員,你手工建立的任何使用者在被授予dba角色後都跟這個使用者差不多。
sys用資料庫的超級使用者,資料庫內很多重要的東西(資料字典表、內建包、靜態資料字典檢視等)都屬於這個使用者,sys使用者必須以sysdba身份登入。
1)最重要的區別,儲存的資料的重要性不同
sys:所有oracle的資料字典的基表和檢視都存放在sys使用者中,這些基表和檢視對於orcale的執行是至關重要的,由資料庫自己維護,任何使用者都不能手動更改。sys擁有dba、sysdba、sysoper角色或許可權,是orcale許可權最高的使用者。
system:用於存放次一級的內部資料,如orcale的一些特性或工具的管理資訊。system使用者擁有dba,sysdba角色或系統許可權。
2)其次的區別,許可權不同
sys使用者必須以sysdba或sysoper形式登入,不能以normal方式登入;
conn sys/change_on_install;


system如果正常登入,其實是一個普通的dba使用者,但是如果以sysdba登入,其結果實際上是作為sys使用者登入的。
conn system/manger as sysdba
show user
user為"SYS"

3)sysdba和sysoper的區別
sysdba擁有以下許可權:啟動資料庫(startup)、關閉資料庫(shutdown)、alter database open/mount/backup、改變字符集、建立資料庫(create database)、刪除資料庫(drop database)、create spfile、alter database archivelog(歸檔日誌)、擁有restricted session(會話限制)許可權、可以讓使用者作為sys使用者連線、登入之後是sys。
conn system/manger as sysdba
shutdown
startup

sysoper:基本許可權跟sysdba差不多,但是不能改變字符集、不能建立和刪除資料庫、登入之後是public。
3.管理初始化引數
初始化引數用於設定例項或是資料庫的特徵。
顯示初始化引數:show parameter命令
SQL plus的簡單使用
前期配置:保證以上兩個服務開啟。執行 regedit,檢視HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb11g_home1中的ORACLE_SID的值是否為當前資料庫例項的名字(ORCL),如果不是則右擊修改,登出重啟電腦。
1.conn[ect]連線命令
用法:conn使用者名稱/密碼@網路服務名[as sysdba/sysoper]
注意:當用特殊使用者身份連線時,必須帶上as sysdba或as sysoper
例:
show user;
conn system/manger
show user;

2.disc[onnect]斷開連線
passw[ord]修改密碼
如果想修改其他使用者的密碼,則需要用sys/system賬戶
例:修改本身的密碼
pass
更改SCOTT的口令
舊口令:
新口令:
重新鍵入新口令:
口令已更改

4.show user顯示當前使用者名稱
5.exit斷開資料庫連線並退出sqlplus
6.start和@執行sql指令碼
例:start d:\aa.sql
7.edit編輯指定的sql指令碼
8.spool擷取sql
plus螢幕上的內容輸出到指定檔案中去
例:
spool d:\b.sql
select * from emp;
spool off

9.&互動替代變數,需要使用者輸入
例:
select * from emp where job=’&job’
輸入job的值:CLERK
原值 1:select * from emp where job=’&job’
新值 1:select * from emp where job='CLERK’

10.set linesize 120 設定顯示行的寬度,預設80個字元
11.set pagersize 8 設定每頁顯示的行數目,預設是14
oracle使用者的管理
1.建立使用者
conn system/manger;
create user xiaowang identified by m123;

注意:普通使用者不行
2.修改別人密碼
如果是sysdba角色,可以使用password命令
password xiaoming
更改xiaoming的口令
新口令:
重新鍵入新口令:
口令已更改

3.刪除賬戶
必須是dba,在刪除使用者的時候注意如果要刪除的使用者已經建立了表,就需要在刪 除的時候帶一個引數cascade(級聯刪除)
用法:drop user 使用者名稱 [cascade]
4.grant授權
新建立的使用者,預設沒有連線資料庫的許可權,需要使用sys或system來給普通使用者 賦予許可權。
這裡許可權分為:系統許可權(使用者對資料庫的相關許可權,例如連結資料庫、建立表等), 物件許可權(使用者對其它使用者的資料物件操作的許可權)
例:
grant connect to xiaowang
授權成功
conn xiaowang/m123

常用的角色還有dba和resource(可以在表空間建表)
grant resource to xiaoming;授權xiaoming可以創表;
希望xiaoming使用者可以去查詢emp表:
grant select on emp to xiaoming;
注意:授權帳號只能是scott(表的擁有者),sys,system.所授許可權有:select,update,insert,delete,all.
select * from scott.emp
5.revoke收回許可權
revoke select on emp from xiaoming;
注意:哪個帳號授的權,哪個帳號才能撤銷許可權。
6.許可權的維護
許可權的轉發
如果是物件許可權,就加入with grant option
例:
grant select on emp to xiaoming with grant option,
conn xiaoming/m123
grant select on scott.emp to xiaoming;

如果是系統許可權,就加入with admin option
例:
grant connect to xiaoming with admin option;
注意:許可權撤銷時,遞迴撤銷
7.賬戶鎖定
指定該帳戶登入時最多可以輸入密碼的次數,也可以指定使用者鎖定的時間(天)一 般用dba的身份去執行該命令。
例:
create profile loc_account limit failed_login_attempts 3 password_lock_time2;
alter user xiaoming profile lock_account;

8.使用者解鎖
alter user xiaoming profile look_account;
9.終止口令
為了讓使用者定期修改密碼可以使用終止口令的指令來完成,同樣這個命令也需要用 dba身份操作。例如給使用者xiaoming建立一個profile檔案,要求該使用者每隔10天 要修改自己的登入密碼,寬限為2天:
create profile myprofile limit password_life_time 10 password_grace_time 2;
alter user xiaoming profile myprofile

10.口令歷史
如果希望使用者在修改密碼時,不能使用以前使用過的密碼,可以使用口令歷史。
例 如:
create profile password history limit password_life_time 10 password_grace_tie 2
password_reuse_time 10;
alter user xiaoming profile password_history

11.刪除profile
drop profile password_history [cascade]
角色
1.預定於角色
指oracle所提供的角色,每種角色都用於執行一些特定的管理任務,常用的預定義角色有connect,resource,dba。
2.自定義角色
自己定義的角色,一般是dba來建立,如果是別的使用者來建立,則需要具有create role的系統許可權。
1)建立角色(不驗證)
create role myrole1 not identfified -->不驗證
此時角色沒有任何許可權,還需進行授權。
2)建立角色(資料庫驗證)
create role 角色名 identified by password;
採用這樣的方式時,角色名、口令存放在資料庫中。當啟用該角色時,必須提供口令。
3)角色授權
conn system/manger
grant create session to myrole1 with admin option;
conn scott/[email protected];
grant select on emp to myrole1;
grant update on emp to myrole1;
grant insert,delete on emp to myrole1;

通過上面步驟,就給角色授權了。
conn system/manger;
grant myrole1 to user1 with admin option;

通過上面步驟,就把角色分配給指定使用者了。帶上with引數表示user1可以把這個角色繼續傳給別人。
4)刪除角色
conn system/manger
drop role myrole1;

注意:角色被刪後,被分配的使用者就沒有相應的許可權了。
資料庫的備份與恢復
1.邏輯備份與恢復,只能在資料庫open的狀態下進行
1)匯出、備份
匯出分為:匯出表,匯出方案,匯出資料庫三種方式。
匯出使用exp命令來完成的,該命令常用的選項有:
userid:用於指定執行匯出操作的使用者名稱,口令,連線字串
tables:用於指定執行匯出操作的表
owner:用於指定執行匯出操作的方案
full=y:用於指定執行匯出操作的資料庫
inctype:用於指定執行匯出操作的增量型別
rows:用於指定執行匯出操作是否要匯出表的資料
file:用於指定匯出檔名
2)匯出表
a).匯出自己的表
exp userid=scott/[email protected] tables=(emp,dept) file=d:\e1.dmp
注意:需要在oracle的安裝路徑的bin目錄下開啟cmd,並執行該句命令。而不是在SQLPlus下。
b).匯出其它方案的表,需要指定方案的名字
exp userid=sys/[email protected] tables=(scott.emp,scott.dept) file=d:\e2.dmp
c).匯出表的結構
exp userid=scott/tiger tables=(emp,dept) file=d:\e3.dmp rows=n -->n表示no
d).使用直接匯出方式
exp userid=scott/[email protected] tables=(emp,dept) file=d:\e3.dmp direct=y
這種方式比預設的常規方式速度要快,當資料量大時,可以考慮使用這樣的方法。
3)匯出方案
a).匯出自己的方案
exp userid=scott/[email protected] owner=scott file=d:\e5.dmp
b).匯出其它方案
只需要dba的許可權或是exp_full_database的許可權,例如可以使用system同時匯出自身的和scott方案:exp userid=system/[email protected] owner=(system,scott) file=d:\e5.dmp
4) 匯出資料庫
匯出資料庫指到處所有資料庫中的物件及資料,要求該使用者具有dba的許可權或是exp_full_database許可權
epx userid=system/[email protected] full=y inctype=complete file=d:\e6.dmp
主語:full=y指匯出整個資料庫,inctype表示增量備份。
5)匯入表
a)匯入自己的表
imp userid=scott/[email protected] tables=(emp) file=d:\emp.dmp
b).匯入表到其它使用者
imp userid=system/[email protected] tables=(emp) file=d:\xx.dmp touser=scott
c)匯入表的結構
imp userid=scott/[email protected] tables=(emp) file=d:\xx.demp rows=n
d)匯入資料,如果物件已經存在可以匯入表的資料
imp userid=scott/[email protected] tables=(emp) file=d:\xxx.dmp ignore=y
e)匯入自身的方案
imp userid=scott/tiger file=d:\xxx.dmp
f)匯入其它方案,要求該使用者具有dba許可權
imp userid=system/manager file=d:\xxx.dmp fromuser=system touser=scott
g).匯入資料庫
imp userid=system/manager full=y file=d:\xxx.dmp