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