-
數據庫的啟動與停止
- 在cmd中,以無登錄方式進入SQL*Plus控制臺,然后連接數據庫服務器
sqlplus /nolog
connect /as sysdba
image.png
- 啟動與停止命令
startup 啟動選項
shutdowm 停止選項
-
啟動選項
NOMOUNT:
只創建例程,不裝載數據庫,即不能使用數據庫中的任何文件,但重建控制文件或運行創建新數據庫的腳本時,必須使用此模式啟動.
MOUNT:
不僅創建例程,還裝載數據庫,在該模式下管理員可修改數據庫,用戶無法訪問數據庫.
常用于執行以下4類維護工作:
- 重命名數據文件;
- 添加,刪除,重命名,重做日志文件;
- 執行數據庫完全恢復操作;
- 改變數據庫的歸檔模式
OPEN:
正常啟動數據庫,不僅創建例程,還裝載數據庫,并打開數據庫,缺省啟動
FORCE:
強制重啟數據庫,與正常模式不同,無論數據庫處于什么模式,均可以強制啟動,且此啟動是先異常關閉數據庫(無需使用shutdown關閉),然后重新啟動
PESTRICT:
啟動數據庫,并置入OPEN模式,但只有擁有PESTRICTED SESSION權限的用戶才可以訪問數據庫
PFILE=filename:
指定一個參數化文件來啟動數據庫(.ora后綴文件)
-
停止選項
NORMAL:
正常關閉數據庫,此時Oracle執行如下操作:
- 阻止用戶新連接數據庫
- 等待所有連接用戶主動斷開(未主動斷開前可正常操作,提交事務等)
- 直到所有用戶都斷開連接,才進行關閉,卸載數據庫.并終止例程
TRANSACTIONAL:
與NORMAL模式相比,其過程如下:
- 阻止用戶新連接數據庫,同時阻止當前連接用戶開始新的事務
- 等待所有未提交事務提交完畢,然后立即端口用戶連接
- 一旦所有用戶都斷開連接,立即進行關閉,卸載數據庫,并終止例程
IMMEDIATE:
立即關閉,一般在斷電或異常時使用,其過程如下:
- 阻止用戶新連接數據庫,同時阻止當前連接用戶開始新的事務
- 所有當前未提交的事務均被退回
- Oracle不再等用戶斷開連接,而是直接關閉,卸載并終止例程
ABORT:
強制關閉數據庫,一般為發生嚴重錯誤,以上三種方式無法關閉時使用此方式,其過程如下:
- 阻止用戶新連接數據庫,同時阻止當前連接用戶開始新的事務
- 所有當前未提交的事務均不被退回
- 立即結束當前正則執行的SQL語句
- 立即斷開所有連接,直接關閉,卸載和終止例程
-
轉換啟動模式
alter database open或xxx
- 使用alter語句即可改變當前數據庫的模式
- Windows系統下,正常的啟動停止數據庫,可在服務控制面板中(services.msc)啟動和停止相關服務即可
-
端口偵聽操作命令
對偵聽端口的操作主要包括:查看狀態,啟動和停止三種,使用Windows命令lsnrctl實現(cmd中操作)
- lsnrctl start:啟動偵聽端口,與啟動服務OracleOraDb11g_home2TNSListener效果一樣
- lsnrctl stop:停止偵聽端口,與停止服務OracleOraDb11g_home2TNSListener效果一樣
- lsnrctl status:查看當前偵聽器的狀態是否正常
-
管理控制臺操作命令
DB Console 或者 Oracle Enterprise Manager 的啟動與停止(cmd中操作)
- 啟動:emctl start dbconsole
- 停止:emctl stop dbconsole
- 狀態:emctl status dbconsole
-
SQL*Plus常用命令
- SQL*Plus是Oracle自帶的交互操作程序
- SQL*Plus可運行各種SQL語句或腳本
- PLSQL Developer,TOAD等比SQL*Plus功能更強大,界面更友好
SQL*Plus常用功能:
命令 | 釋義 |
---|---|
@ filename.sql | 運行sql文件(批處理方式運行) |
spool filename | 將屏幕輸出保存到文件中,直至運行到spool off |
desc 用戶名.表名 | 描述表結構 |
help 命令名 | 查看某個命令的用法 |
column 列名 format A20 | 設置列名的顯示寬度為20 |
column 列名 heading 新列名 | 將列名的顯示名稱修改為新列名 |
set linesize 100 | 將sqlplus中每行的顯示寬度設置為100字符,默認為80 |
set autocommit on/off | 設置sql語句是否自動提交(若否,需要使用commit命令手動提交) |
show 參數名 | 顯示當前系統的各類參數值,包括系統初始化參數 |
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; | 修改時間格式 |
alter session set nls_date_language='american'; | 修改日期格式為美國格式 |
select sysdate from dual; | 顯示服務器當前時間 |
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; | 格式化顯示系統當前日期時間 |
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssXFF') from dual | 格式化顯示事件戳 |
select to_char('2018-11-2 14:15:9','yyyy-mm-dd hh24:mi:ss') from dual | 格式化顯示時間 |
select * from &tablename; | 參數化的使用,提示輸入tablename的值(表名) |
-
Dual表簡介
- Dual是一個系統表,只有一個Dummy Varchar2(1)字段
- 因Oracle語句要求必須完整,故在查詢非表數據是加上Dual表
- Dual表無具體數據,只是用來查詢無具體表數據時,用來完整sql語句的