|
一、連接你的oracle數(shù)據(jù)庫
SQL> sqlplus /nolog
SQL> connect /as sysdba
二、修改oracle賬戶信息
1、修改賬戶的口令,使用下面的語句:
SQL> ALTER USER username IDENTIFIED BY password
2、修改已鎖定的賬戶口令,使用下面的語句:
SQL> ALTER USER username IDENTIFIED BY password ACCOUNT UNLOCK
3、如果要鎖定賬戶,使用下面的語句:
SQL> ALTER USER username ACCOUNT LOCK
4、如果要解鎖賬戶,使用下面的語句:
SQL> ALTER USER username ACCOUNT UNLOCK
三、創(chuàng)建一個賬戶并且賦予SYSDBA權(quán)限
1、創(chuàng)建用戶(username=y(tǒng)zq,password=y(tǒng)ezhuangqiao),使用下面的語句:
SQL> CREATE USER yzq IDENTIFIED BY "yezhuangqiao" ACCOUNT UNLOCK
2、把SYSDBA和SYSOPER權(quán)限賦予yzq這個用戶:
SQL> GRANT SYSDBA TO yzq;
SQL> GRANT SYSDBA TO yzq;
3、利用下面的語句回收用戶的權(quán)限:
SQL> REVOKE SYSDBA FROM yzq;
SQL> REVOKE SYSOPER FROM yzq;
4、測試登陸的連通性:
SQL> CONNECT yzq/yezhuangqiao AS SYSDBA
四、oracle啟動或登陸方式
1、啟動實例不加載數(shù)據(jù)庫(NOMOUNT模式)
這種啟動模式只創(chuàng)建實例,并不加載數(shù)據(jù)庫,Oracle僅為實例創(chuàng)建各種內(nèi)存結(jié)構(gòu)和服務(wù)進程,不會打開任何數(shù)據(jù)庫文件。
如果要執(zhí)行下列維護工作,必須在NOMOUNT啟動模式下進行:
a、創(chuàng)建新數(shù)據(jù)庫
b、重建控制文件
下面顯示在SQL*Plus中啟動數(shù)據(jù)庫進入NOMOUNT模式的過程:
SQL> STARTUP NOMOUNT
2、啟動實例加載數(shù)據(jù)庫但不打開數(shù)據(jù)庫(MOUNT模式)
如果要執(zhí)行下列維護工作,必須在MOUNT啟動模式下進行:
a、重命名數(shù)據(jù)文件。
b、添加、刪除或重命名重做日志文件。
c、執(zhí)行數(shù)據(jù)庫完全恢復(fù)操作。
d、改變數(shù)據(jù)庫的歸檔模式。
下面顯示在SQL*Plus中啟動數(shù)據(jù)庫進入MOUNT模式的過程:
SQL> STARTUP MOUNT
3、啟動實例加載并打開數(shù)據(jù)庫(OPEN模式)
這是正常啟動模式。普通數(shù)據(jù)庫用戶要對數(shù)據(jù)庫進行操作,比如連接數(shù)據(jù)庫并進行查詢,數(shù)據(jù)庫必須處于OPEN啟動模式
下面顯示了在SQL*Plus中啟動數(shù)據(jù)庫進入OPEN模式的過程:
SQL> STARTUP
2、使用下面語句以DBA身份連接到Oracle:
(1) 操作系統(tǒng)認證方式
SQL> CONNECT / AS SYSDBA
(2) 口令文件認證方式
SQL> CONNECT username/password AS SYSDBA
其中username/password必須是一個具有SYSOPER或SYSDBA權(quán)限的數(shù)據(jù)庫用戶賬戶,比如SYS或SYSTEM。
五、轉(zhuǎn)換啟動模式
1、為實例加載數(shù)據(jù)庫
在執(zhí)行一些特殊的管理維護操作時,需要進入NOMOUNT啟動模式。在完成操作后,可以使用如下語句為實例加載數(shù)據(jù)庫,切換到MOUNT啟動模式:
ALTER DATABASE MOUNT;
2、從加載狀態(tài)進入打開狀態(tài)
為實例加載數(shù)據(jù)庫后,數(shù)據(jù)庫可能仍然處于關(guān)閉狀態(tài)。為了使用戶能夠訪問數(shù)據(jù)庫,可以使用如下語句打開數(shù)據(jù)庫,切換到OPEN啟動模式:
ALTER DATABASE OPEN;
4.1.7 切換受限和只讀狀態(tài)
1、受限狀態(tài)
在正常啟動模式下,即OPEN啟動模式下,可以選擇將數(shù)據(jù)庫設(shè)置為非受限狀態(tài)或受限狀態(tài)。
在受限狀態(tài)下,只有具有管理權(quán)限的用戶(DBA)才能夠訪問數(shù)據(jù)庫。當(dāng)需要進行如下數(shù)據(jù)庫維護操作時,必須將數(shù)據(jù)庫置于受限狀態(tài)下:
a、執(zhí)行數(shù)據(jù)導(dǎo)入或?qū)С霾僮鳌?/div>
b、使用SQL*Loader提取外部數(shù)據(jù)庫。
c、需要暫時拒絕普通用戶訪問數(shù)據(jù)庫。
d、進行數(shù)據(jù)庫移植或者升級操作。
使用下面的語句啟動數(shù)據(jù)庫,數(shù)據(jù)庫將進入受限狀態(tài)的OPEN模式:
STARTUP RESTRICT
如果在完成管理操作后需要將數(shù)據(jù)庫恢復(fù)為非受限狀態(tài),可以使用ALTER SYSTEM語句來改變數(shù)據(jù)庫的狀態(tài),執(zhí)行該語句的用戶必須具有ALTER SYSTEM系統(tǒng)權(quán)限。比如:
ALTER SYSTEM DISABLE RESTRICTED SESSION;
如果需要在數(shù)據(jù)庫運行過程中由非受限狀態(tài)切換到受限狀態(tài),同樣可以通過ALTER SYSTEM語句來實現(xiàn)。比如:
ALTER SYSTEM ENBALE RESTRICTED SESSION;
2、只讀狀態(tài)
當(dāng)數(shù)據(jù)庫處于只讀狀態(tài)時,用戶只能查詢數(shù)據(jù)庫,但是不能以任何方式對數(shù)據(jù)庫對象進行修改。
可以使用ALTER DATABASE語句在數(shù)據(jù)庫運行過程中切換為只讀模式,執(zhí)行該語句的用戶必須具有ALTER DATABASE系統(tǒng)權(quán)限。比如:
ALTER DATABASE OPEN READ ONLY;
同樣可以利用ALTER DATABASE語句重新將數(shù)據(jù)庫設(shè)置為讀寫狀態(tài),比如:
ALTER DATABASE OPEN READ WRITE;
4.1.8 強行啟動數(shù)據(jù)庫
在某些情況下,使用上述各種啟動模式可能都無法成功啟動數(shù)據(jù)庫,這時需要強行啟動數(shù)據(jù)庫。在如下幾種情況下需要強行啟動數(shù)據(jù)庫:
a、無法使用SHUTDOWN NORMAL、SHUTDOWN IMMEDIATE或者SHUTDOWN TRANSACTIONAL語句關(guān)閉數(shù)據(jù)庫實例。
b、在啟動實例時出現(xiàn)無法恢復(fù)的錯誤。
出現(xiàn)上述情況時,可以通過強行方式來重新啟動一個新的數(shù)據(jù)庫實例,以便進行故障查找和排除操作。強行啟動數(shù)據(jù)庫需要使用帶有FORCE子句的STARTUP語句,比如:
STARTUP FORCE;
4.2.2 正常關(guān)閉方式(NORMAL)
如果對關(guān)閉數(shù)據(jù)庫的時間沒有限制,通常會使用正常方式來關(guān)閉數(shù)據(jù)庫。使用帶有NORMAL子句的SHUTDOWN語句將以正常方式關(guān)閉數(shù)據(jù)庫。下面顯示了在SQL*Plus中以正常方式關(guān)閉過程:
SQL> SHUTDOWN NORMAL;
正常方式關(guān)閉數(shù)據(jù)庫時,Oracle將執(zhí)行如下操作:
a、阻止任何用戶建立新的連接。
b、等待當(dāng)前所有正在連接的用戶主動斷開連接。正在連接的用戶能夠繼續(xù)他們當(dāng)前的工作,甚至能夠提交新的事務(wù)。
c、一旦所有用戶都斷開連接,立刻關(guān)閉、卸載數(shù)據(jù)庫,并終止實例。
4.2.3 立即關(guān)閉方式(IMMEDIATE)
立即方式能夠在盡可能短的時間內(nèi)關(guān)閉數(shù)據(jù)庫。通常在如下幾種情況下需要使用立即方式來關(guān)閉數(shù)據(jù)庫:
a、即將啟動自動數(shù)據(jù)備份操作。
b、即將發(fā)生電力供應(yīng)中斷。
c、當(dāng)數(shù)據(jù)庫本身或某個數(shù)據(jù)庫應(yīng)用程序發(fā)生異常,并且這時無法通知用戶主動斷開連接,或者用戶根本無法執(zhí)行斷開操作。
使用帶有IMMEDIATE子句的SHUTDOWN語句將以立即方式關(guān)閉數(shù)據(jù)庫,比如:
SHUTDOWN IMMEDIATE
立即方式關(guān)閉數(shù)據(jù)庫時,Oracle將執(zhí)行如下操作:
a、阻止任何用戶建立新的連接,同時阻止當(dāng)前連接的用戶開始任何新的事務(wù)。
b、任何未提交的事務(wù)均被回退。
c、Oracle不再等待用戶主動斷開連接,直接關(guān)閉、卸載數(shù)據(jù)庫,并終止實例。
4.2.4 事務(wù)關(guān)閉方式(TRANSACTIONAL)
事務(wù)方式介于正常方式與立即方式之間,它能夠使用盡可能短的時間關(guān)閉數(shù)據(jù)庫,但是所有能保證當(dāng)前所有的活動事務(wù)都可以被提交。使用事務(wù)方式關(guān)閉數(shù)據(jù)庫時,Oracle將等待所有未提交的事務(wù)完成后再關(guān)閉數(shù)據(jù)庫。
使用帶有TRANSACTIONAL子句的SHUTDOWN語句將以事務(wù)方式關(guān)閉數(shù)據(jù)庫,比如:
SHUTDOWN TRANSACTIONAL
事務(wù)方式關(guān)閉數(shù)據(jù)庫時,Oracle將執(zhí)行如下操作:
a、阻止任何用戶建立新的連接,同時阻止當(dāng)前連接的用戶開始任何新的事務(wù)。
b、等待所有未提交的活動事務(wù)提交完畢,然后立即斷開用戶的連接。
c、關(guān)閉、卸載數(shù)據(jù)庫,并終止實例。
提示:事務(wù)關(guān)閉方式既能保證用戶不會丟失當(dāng)前工作的信息,又可以盡可能快地關(guān)閉數(shù)據(jù)庫。事務(wù)關(guān)閉方式也是最常用的數(shù)據(jù)庫關(guān)閉方式。如果以事務(wù)方式關(guān)閉數(shù)據(jù)庫,在下次啟動數(shù)據(jù)庫時不需要進行任何恢復(fù)操作。
4.2.5 終止關(guān)閉方式(ABORT)
如果上述三種關(guān)閉方式都無法成功關(guān)閉數(shù)據(jù)庫,說明數(shù)據(jù)庫產(chǎn)生了嚴重的錯誤。這時只能使用終止方式來關(guān)閉數(shù)據(jù)庫。終止關(guān)閉方式將丟失一部分數(shù)據(jù)信息,會對數(shù)據(jù)庫的完整性造成損害,需要在下一次啟動數(shù)據(jù)庫時進行恢復(fù),因此應(yīng)當(dāng)盡量避免使用終止方式來關(guān)閉數(shù)據(jù)庫。
在如下幾種特殊情況中,應(yīng)當(dāng)使用終止關(guān)閉方式:
a、數(shù)據(jù)庫本身或某個數(shù)據(jù)庫應(yīng)用程序發(fā)生異常,并且使用其他關(guān)閉方式均無效時。
b、出現(xiàn)緊急情況,需要立刻關(guān)閉數(shù)據(jù)庫(比如得到通知將在一分鐘內(nèi)發(fā)生電力供應(yīng)中斷)。
c、在啟動數(shù)據(jù)庫實例的過程中產(chǎn)生錯誤。
使用帶有ABORT子句的SHUTDOWN語句將以終止方式關(guān)閉數(shù)據(jù)庫,比如:
SHUTDOWN ABORT
終止方式關(guān)閉數(shù)據(jù)庫時,Oracle將執(zhí)行如下操作:
a、阻止任何用戶建立新的連接,同時阻止當(dāng)前連接的用戶開始任何新的事務(wù)。
b、立即終止當(dāng)前正在執(zhí)行的SQL語句。
c、任何未提交的事務(wù)均不被回退。
d、立即斷開所有用戶的連接,關(guān)閉、卸載數(shù)據(jù)庫,并終止實例。
如果以終止方式關(guān)閉數(shù)據(jù)庫,由于當(dāng)前未完成的事務(wù)并不會被回退,所以當(dāng)下次啟動數(shù)據(jù)庫時需要進行數(shù)據(jù)庫恢復(fù)。
4.3.1 靜默狀態(tài)
1、靜默狀態(tài)的特點
有時DBA會需要將數(shù)據(jù)庫置于靜默狀態(tài)。在靜默狀態(tài)下,只有具有DBA權(quán)限的用戶能夠在數(shù)據(jù)庫中執(zhí)行查詢、更新操作,運行PL/SQL程序,任何非DBA用戶都不能在數(shù)據(jù)庫中執(zhí)行任何操作。
DBA在執(zhí)行某些操作時,必須排除其他用戶的活動。這類操作包括如下兩類:
a、某些操作在執(zhí)行過程中,如果有其他用戶訪問操作的對象,該操作將會失敗。比如,當(dāng)DBA在某個表添加一個新的字段時,如果有用戶恰好正在使用這個表,添加字段的操作將失敗。
b、某些操作在執(zhí)行過程中產(chǎn)生的中間結(jié)果不應(yīng)當(dāng)被其他用戶看到。比如,假設(shè)DBA要執(zhí)行一項分為多個步驟的操作:首先要導(dǎo)出一個表的數(shù)據(jù),然后刪除這個表,最后再重新導(dǎo)入數(shù)據(jù)庫建立新的表,以達到重建該表的目的。而如果有某個用戶在刪除表之后,重建表之前訪問這個表,將會得到錯誤的結(jié)果。
如果沒有靜默功能,要保證成功完成上述類型的操作必須首先關(guān)閉數(shù)據(jù)庫,然后再使用受限模式打開數(shù)據(jù)庫。這樣做的代價是很大的,尤其是在必須保證數(shù)據(jù)庫不間斷運行的環(huán)境中(7×24系統(tǒng))。而使數(shù)據(jù)庫進入靜默狀態(tài)可以快速達到相同的目的,但是卻并不需要中斷數(shù)據(jù)庫的運行。
注意:在Oracle9i中,處于靜默狀態(tài)時只允許SYS和SYSTEM兩個DBA用戶執(zhí)行操作,其他用戶即使被授予DBA角色或SYSDBA權(quán)限,也不能夠在靜默狀態(tài)的數(shù)據(jù)庫中進行操作。因此,靜默狀態(tài)是比受限狀態(tài)更為“干凈”的狀態(tài)。
2、進入靜默狀態(tài)
在數(shù)據(jù)庫運行過程中,執(zhí)行如下語句將進入靜默狀態(tài):
ALTER SYSTEM QUIESCE RESTRICTED;
注意:只有SYS和SYSTEM用戶有權(quán)限執(zhí)行ALTER SYSTEM QUIESCE RESTRICTED語句,具有DBA權(quán)限的其他用戶不能將數(shù)據(jù)庫置為靜默狀態(tài)。
在靜默狀態(tài)中,即使某個非DBA用戶試圖執(zhí)行一條SQL語句強行激活某個會話,該SQL語句也會被掛起。當(dāng)數(shù)據(jù)庫從靜默狀態(tài)中恢復(fù)時,停止的會話將繼續(xù)執(zhí)行,前面被掛起的SQL語句也會繼續(xù)執(zhí)行。
由于等待所有的非DBA用戶會話都被終止可能會要很長一段時間,在這個過程中如果執(zhí)行ALTER SYSTEM語句的會話被意外終止,進入靜默狀態(tài)的操作將被撤銷,已經(jīng)暫停的會話將被恢復(fù)。
3、退出靜默狀態(tài)
如果數(shù)據(jù)庫正處于靜默狀態(tài),執(zhí)行如下語句將從靜默狀態(tài)恢復(fù)為正常狀態(tài):
ALTER SYSTEM UNQUIESCE;
4、查詢靜默狀態(tài)
可以通過使用動態(tài)性能試圖V$INSTANCE來查詢當(dāng)前數(shù)據(jù)庫是否處于靜默狀態(tài)。V$INSTANCE視圖中的ACTIVE_STATUS字段顯示了數(shù)據(jù)庫當(dāng)前的活動狀態(tài):
a、NORMAL 正常狀態(tài)(非靜默狀態(tài))。
b、QUIESCING 正在進入靜默狀態(tài)(仍然存在活動的非DBA用戶會話)。
c、QUIESCED 靜默狀態(tài)(已經(jīng)沒有活動的非DBA用戶會話)。
在下面的示例中顯示了如何改變和查詢數(shù)據(jù)庫的靜默狀態(tài):
SQL> ALTER SYSTEM QUIESCE RESTRICTED;
系統(tǒng)已更改。
SQL> SELECT ACTIVE_STATE FROM V$INSTANCE;
ACTIVE_ST
--------- QUIESCED SQL> ALTER SYSTEM UNQUIESCE;
系統(tǒng)已更改。
SQL> SELECT ACTIVE_STATE FROM V$INSTANCE;
ACTIVE_ST
--------- NORMAL 4.3.2 掛起狀態(tài)
1、掛起狀態(tài)的特點
當(dāng)數(shù)據(jù)庫處于掛起狀態(tài)時,數(shù)據(jù)庫所有的物理文件(控制文件、數(shù)據(jù)文件以及重做日志文件)的I/O操作都被暫停。這樣就能保證數(shù)據(jù)庫在沒有任何I/O操作的情況下進行物理備份。掛起狀態(tài)與靜默狀態(tài)的區(qū)別是:它并不禁止非DBA用戶進行數(shù)據(jù)庫操作,只是暫時停止所有用戶的I/O操作。
當(dāng)數(shù)據(jù)庫處于掛起狀態(tài)時,可以首先為數(shù)據(jù)庫創(chuàng)建硬盤鏡像,然后再從鏡像中分離出備份文件,這樣就提供了一種進行數(shù)據(jù)庫備份和恢復(fù)的替代辦法。比如,數(shù)據(jù)庫原本運行在一個具有硬盤鏡像的系統(tǒng)中,但是在存在硬盤I/O操作的情況下,無法將鏡像文件分離出來。這時可以先將數(shù)據(jù)庫置為掛起狀態(tài),然后在停止所有I/O操作的狀態(tài)下進行分離操作。
在數(shù)據(jù)庫進入掛起狀態(tài)時,當(dāng)前的所有I/O操作能夠繼續(xù)進行,但是所有新提交的I/O操作不會執(zhí)行,而是被放入一個等待隊列中。一旦數(shù)據(jù)庫恢復(fù)到正常狀態(tài),這些I/O操作將從隊列中取出并繼續(xù)執(zhí)行。
2、進入掛起狀態(tài)
掛起數(shù)據(jù)庫操作可以通過ALTER SYSTEM語句完成,執(zhí)行該語句的用戶必須具有ALTER SYSTEM系統(tǒng)權(quán)限。比如:
ALTER SYSTEM SUSPEND;
3、退出掛起狀態(tài)
如果要將數(shù)據(jù)庫從掛起狀態(tài)中恢復(fù),可以使用如下語句:
ALTER SYSTEM RESUME;
4、查詢掛起狀態(tài)
可以通過使用動態(tài)性能視圖V$INSTANCE來查詢當(dāng)前數(shù)據(jù)庫是否處于掛起狀態(tài)。V$INSTANCE視圖中的DATABASE_STATUS字段顯示了數(shù)據(jù)庫當(dāng)前的活動狀態(tài):
a、SUSPENDED 掛起狀態(tài)。
b、ACTIVED 正常狀態(tài)(非掛起狀態(tài))。
下面的示例顯示了如何改變和查詢數(shù)據(jù)庫的掛起狀態(tài):
SQL> ALTER SYSTEM SUSPEND;
系統(tǒng)已更改。
SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;
DATABASE_STATUS
----------------- SUSPENDED SQL> ALTER SYSTEM RESUME;
系統(tǒng)已更改。
SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;
DATABASE_STATUS
----------------- ACTIVE |
|
|