1. 執行一個SQL腳本文件
代碼如下 復制代碼
sqlplus user/pass@servicename<file_name.sql
或
SQL>start file_names
或
SQL>@ file_name
我們可以將多條sql語句保存在一個文本文件中,這樣當要執行這個文件中的所有的sql語句時,用上面的任一命令即可,這類似於dos中的批處理。
@與@@的區別是什麼?
@等於start命令,用來運行一個sql腳本文件。
@命令調用當前目錄下的,或指定全路徑,或可以通過SQLPATH環境變量搜尋到的腳本文件。該命令使用是一般要指定要執行的文件的全路徑,否則從缺省路徑(可用SQLPATH變量指定)下讀取指定的文件 www.111Cn.net。
@@用在sql腳本文件中,用來說明用@@執行的sql腳本文件與@@所在的文件在同一目錄下,而不用指定要執行sql腳本文件的全路徑,也不是從SQLPATH環境變量指定的路徑中尋找sql腳本文件,該命令一般用在腳本文件中。
如:在c:temp目錄下有文件start.sql和nest_start.sql,start.sql腳本文件的內容為:
@@nest_start.sql – - 相當於@ c:tempnest_start.sql
則我們在sql*plus中,這樣執行:
代碼如下 復制代碼
SQL> @ c:tempstart.sql
2. 重新運行上一次運行的sql語句
SQL>/
3. 將顯示的內容輸出到指定文件
代碼如下 復制代碼
SQL> SPOOL file_name
在屏幕上的所有內容都輸入到該文件中,包括你輸入的sql語句。
通常情況下,我們使用SPOOL方法,將數據庫中的表導出為文本文件的時候會采用兩種方法,如下述:
方法一:采用以下格式腳本
代碼如下 復制代碼
set colsep ‘|’; –設置|為列分隔符
set trimspool on;
set linesize 120;
set pagesize 2000;
set newpage 1;
set heading off;
set term off;
set num 18;
set feedback off;
spool 路徑+文件名;
select * from tablename;
spool off;
方法二:采用以下腳本
代碼如下 復制代碼
set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool 路徑+文件名
select col1||’,'||col2||’,'||col3||’,'||col4||’..’ from tablename;
spool off
附一些基本命令
1、得到數據庫名和創建日期
SELECT name, created, log_mode, open_mode FROM v$database;
2、ORACLE數據庫的計算機的主機名,ORACLE數據庫的實例名及ORACLE數據庫管理系統的版本信息
SELECT host_name, instance_name, version FROM v$instance;
3、為了知道oracle數據庫版本的一些特殊信息
select * from v$version;
4、獲取控制文件名字
select * from v$controlfile;
5、得到Oracle數據庫的重做日志配置信息
SELECT group#, members, bytes, status, archived FROM v$log;
select GROUP#,MEMBER from v$logfile;
6、獲取oracle的每個重做日志(成員)文件所存放的具體位置
select * from v$logfile;
7、知道ORACLE數據庫的備份和恢復策略和歸檔文件的具體位置
archive log list
8、知道ORACLE數據庫中到底有多少表空間以及每個表空間的狀態
select tablespace_name, block_size, status, contents, logging from dba_tablespaces;
select tablespace_name, status from dba_tablespaces;
9、知道每個表空間存在哪個磁盤上以及文件的名字等信息
SELECT file_id, file_name, tablespace_name, status, bytes from dba_data_files;
select file_name, tablespace_name from dba_data_files;
10、知道Oracle數據庫系統上到底有多少用戶和都是什麼時候創建的
select username,created from dba_users;
select username, DEFAULT_TABLESPACE from dba_users;
11、從控制文件中取出信息涉及到以下一些相關的命令
select * from v$archived
select * from v$archived_log
select * from v$backup
select * from v$database
select * from v$datafile
select * from v$log
select * from v$logfile
select * from v$loghist
select * from v$tablespace
select * from v$tempfile
12、控制文件由兩大部份組成:可重用的部份和不可重用的部分。可重用的部分的大小可用CONTROL_FILE_RECORD_KEEP_TIME參數來控制,該參數的默認值為7天,即可重用的部份的內容保留7天,一周之後這部份的內容可能被覆蓋。可重用的部份是供恢復管理器來使用的,這部份的內容可以自動擴展。Oracle數據庫管理員可以使用CREAT DATABASE或 CREAT CONTROLFILE語句中的下列關鍵字(參數)來間接影響不可重用的部份的大小:
MAXDATAFILES
MAXINSTANCES
MAXLOGFILES
MAXLOGHISTORY
MAXLOGMEMBERS
13、查看控制文件的配置
SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section;
14、如果您的顯示被分成了兩部分,您需要使用類似於set pagesize 100的SQL*Plus命令先格式化輸出。有關的格式化輸出命令有以下這些:
record_size: 為每個記錄的字節數。
records_total:為該段所分配的記錄個數。
records_used:為該段所使用的記錄個數。
15、知道控制文件中的所有數據文件(DATAFILE),表空間(TABLESPACE),和重做日志(REDO LOG)所使用的記錄情況
SELECT type, record_size, records_total, records_used
FROM v$controlfile_record_section
WHERE type IN ( ‘DATAFILE', ‘TABLESPACE', ‘REDO LOG');
16、獲取控制文件名字
select value from v$parameter where name ='control_files';
或者:select * from v$controlfile
17、如何在一個已經安裝的Oracle數據庫中添加或移動控制文件呢?
以下是在一個已經安裝的Oracle數據庫中添加或移動控制文件的具體步驟:
a、利用數據字典v$controlfile來獲取現有控制文件名字。
b、正常關閉Oracle數據庫。
c、將新的控制文件名添加到參數文件的CONTROL_FILES參數中。
d、使用操作系統的復制命令將現有控制文件復制到指定位置。
e、重新啟動Oracle數據庫。
f、利用數據字典v$controlfile來驗證新的控制文件名字是否正確。
g、如果有誤重做上述操作,如果無誤刪除無用的舊控制文件。
注: 如果您使用了服務器初始化參數文件(SPFILE),您不能關閉Oracle數據庫而且應該在第3步使用alter system set control_files的Oracle命令來改變控制文件的位置。
SQL> alter system set control_files =
‘D:Disk3CONTROL01.CTL',
‘D:Disk6CONTROL02.CTL',
‘D:Disk9CONTROL03.CTL' SCOPE=SPFILE;
18、由於控制文件是一個極其種要的文件,除了以上所說的將控制文件的多個副本存在不同的硬盤上的保護措施外,在數據庫的結構變化之後,您應立即對控制文件進行備份。可以用Oracle命令來對控制文件進行備份:
alter database backup controlfile to ‘D:backupcontrol.bak';
19、您也可將備份到一個追蹤文件中。該追蹤文件包含有重建控制文件所需的SQL語句。可使用以下SQL語句來產生這一追蹤文件:
alter database backup controlfile to trace;
20、正常關閉oracle命令
shutdown immeditae