1、首先查看當前使用的數據庫實例:
select name from V$database;
2、切換兩個數據庫實例
在sqlplus裏敲connect username/password@sid
當然,本人習慣偷懶:conn username/password@sid也未嘗不可
3、將顯示的內容輸出到指定文件
SQL> SPOOL file_name
在屏幕上的所有內容都包含在該文件中,包括你輸入的sql語句。
關閉spool輸出
SQL> SPOOL OFF
只有關閉spool輸出,纔會在輸出文件中看到輸出的內容。
4、顯示一個表的結構
SQL> desc table_name
5、設置當前session是否對修改的數據進行自動提交
SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}
6、是否顯示當前sql語句查詢或修改的行數
SQL> SET FEED[BACK] {6|n|ON|OFF}
默認只有結果大於6行時才顯示結果的行數。如果set feedback 1 ,則不管查詢到多少行都返回。當爲off 時,一律不顯示查詢的行數
7、將SPOOL輸出中每行後面多餘的空格去掉
SQL> SET TRIMS[OUT] {ON|OFF}
8、顯示每個sql語句花費的執行時間
SQL>set TIMING {ON|OFF}
9、將sql buffer中的sql語句保存到一個文件中
SAVE file_name
10、將一個文件中的sql語句導入到sql buffer中
GET file_name
11、將一個數據庫中的一些數據拷貝到另外一個數據庫(如將一個表的數據拷貝到另一個數據庫)
COPY {FROM database | TO database | FROM database TO database}
{APPEND|CREATE|INSERT|REPLACE} destination_table
[(column, column, column, ...)] USING query
sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST
create emp_temp
USING SELECT * FROM EMP
12、不退出sql*plus,在sql*plus中執行一個操作系統命令:
HOST
Sql> host hostname
該命令在windows下可能不支持。
13、在sql*plus中,切換到操作系統命令提示符下,運行操作系統命令後,可以再次切換回sql*plus:
!
sql>!
$hostname
$exit
sql>
該命令在windows下不支持。
----------------------------------------------------------------------------------------------------------------------
oracle數據庫時常用的操作命令最近遇到一個使用了oracle數據庫的服務器,在狂學oracle+請教高手後終於搞到了網站後臺管理界面的所有用戶密碼,我發現oracle操作起來真是太麻煩,爲了兄弟們以後少走些彎路,我把入侵當中必需的命令整理出來,一個星期的心血,版權所有,轉載請註明作者.
1、su – oracle 不是必需,適合於沒有DBA密碼時使用,可以不用密碼來進入qlplus界面。
2、sqlplus /nolog 或sqlplus system/manager 或./sqlplus ystem/manager@ora9i;
3、SQL>connect / as sysdba ;(as sysoper)或connect internal/oracle AS SYSDBA;scott/tiger)
conn sys/change_on_install as sysdba;
4、SQL>startup; 啓動數據庫實例
5、 查看當前的所有數據庫: select * from v$database;
select name from v$database;
desc v$databases; 查看數據庫結構字段
7、怎樣查看哪些用戶擁有SYSDBA、SYSOPER權限:
SQL>select * from V_$PWFILE_USERS;
Show user;查看當前數據庫連接用戶
8、進入test數據庫:database test;
9、查看所有的數據庫實例:select * from v$instance;
如:ora9i
10、查看當前庫的所有數據表:
SQL> select TABLE_NAME from all_tables;
select * from all_tables;
SQL> select table_name from all_tables where table_name like ‘u’;
TABLE_NAME———————————————default_auditing_options
11、查看錶結構:desc all_tables;
12、顯示CQI.T_BBS_XUSER的所有字段結構:
desc CQI.T_BBS_XUSER;
13、獲得CQI.T_BBS_XUSER表中的記錄:
select * from CQI.T_BBS_XUSER;
14、增加數據庫用戶:(test11/test)
create user test11 identified by test default tablespace users Temporary TABLESPACE Temp;
15、用戶授權:
grant connect,resource,dba to test11;
grant sysdba to test11;
commit;
16、更改數據庫用戶的密碼:(將sys與system的密碼改爲test.)
alter user sys indentified by test;
alter user system indentified by test;
1、得到數據庫名和創建日期
SELECT name, created, log_mode, open_mode FROM v$database;
2、ORACLE數據庫的計算機的主機名,ORACLE數據庫的實例名及ORACLE數據庫管理系統的版本信息
SELECT host_name, instance_name, version FROMv$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:\Disk3\CONTROL01.CTL',
'D:\Disk6\CONTROL02.CTL',
'D:\Disk9\CONTROL03.CTL' SCOPE=SPFILE;
18、由於控制文件是一個極其種要的文件,除了以上所說的將控制文件的多個副本存在不同的硬盤上的保護措施外,在數據庫的結構變化之後,您應立即對控制文件進行備份。可以用Oracle命令來對控制文件進行備份:
alter database backup controlfile to 'D:\backup\control.bak';
19、您也可將備份到一個追蹤文件中。該追蹤文件包含有重建控制文件所需的SQL語句。可使用以下SQL語句來產生這一追蹤文件:
alter database backup controlfile to trace;
20、正常關閉oracle命令
shutdown immediate
show和set命令是兩條用於維護SQL*Plus系統變量的命令
SQL> show all --查看所有68個系統變量值
SQL> show user --顯示當前連接用戶
SQL> show error --顯示錯誤
SQL> set heading off --禁止輸出列標題,默認值爲ON
SQL> set feedback off --禁止顯示最後一行的計數反饋信息,默認值爲"對6個或更多的記錄,回送ON"
SQL> set timing on --默認爲OFF,設置查詢耗時,可用來估計SQL語句的執行時間,測試性能
SQL> set sqlprompt "SQL> " --設置默認提示符,默認值就是"SQL> "
SQL> set linesize 1000 --設置屏幕顯示行寬,默認100
SQL> set autocommit ON --設置是否自動提交,默認爲OFF
SQL> set pause on --默認爲OFF,設置暫停,會使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁
SQL> set arraysize 1 --默認爲15
SQL> set long 1000 --默認爲80
說明:
long值默認爲80,設置1000是爲了顯示更多的內容,因爲很多數據字典視圖中用到了long數據類型,如:
SQL> desc user_views
列名 可空值否 類型
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
SQL> define a = '''20000101 12:01:01''' --定義局部變量,如果想用一個類似在各種顯示中所包括的回車那樣的常量,
--可以用define命令來設置
SQL> select &a from dual;
原值 1: select &a from dual
新值 1: select '20000101 12:01:01' from dual
'2000010112:01:01
-----------------
20000101 12:01:01
問題提出:
1、用戶需要對數據庫用戶下的每一張表都執行一個相同的SQL操作,這時,一遍、一遍的鍵入SQL語句是很麻煩的
實現方法:
SQL> set heading off --禁止輸出列標題
SQL> set feedback off --禁止顯示最後一行的計數反饋信息
列出當前用戶下所有同義詞的定義,可用來測試同義詞的真實存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查詢當前用戶下所有表的記錄數
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合條件的表的select權限授予爲public
select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
刪除用戶下各種對象
select 'drop '||tabtype||' '||tname from tab;
刪除符合條件用戶
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速編譯所有視圖
----當在把數據庫倒入到新的服務器上後(數據庫重建),需要將視圖重新編譯一遍,
----因爲該表空間視圖到其它表空間的表的連接會出現問題,可以利用PL/SQL的語言特性,快速編譯。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然後執行ON.SQL即可。
SQL> @ON.SQL
當然,授權和創建同義詞也可以快速進行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB;
命令列表:
假設當前執行命令爲:select * from tab;
(a)ppend 添加文本到緩衝區當前行尾 a order by tname 結果:select * from tab order by tname; (注:a後面跟2個空格)
(c)hange/old/new 在當前行用新的文本替換舊的文本 c
SQL> show parameter process;
SQL> select * from v$parameter where name like '%session%';
生成pfile和spfile:
SQL> create pfile from spfile;
SQL> create spfile from pfile;
按步驟啓動數據庫:
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database open [read only]
啓動時指定參數文件:
SQL> startup pfile='/database/initSID2.ora';
以受限方式啓動:
SQL> startup restrict;
把數據庫設置爲受限模式:
SQL> alter system enable restricted;
修改參數文件內容:
SQL> alter system set control_files='/control01.ctl' scope=spfile;
關於Oracle的故障查找:
1、發生故障時的第一步要做的是備份當前的數據,這叫保留事故現場,以免處理故障失敗時無法再現初始故障。
2、分步驟啓動,確定故障所在:如果第1步失敗,則要先檢查共享內存、參數文件配置等;如果在第2步失敗,則說明極有可能是控制文件出錯,要先檢查警告文件中的警告信息,恢復控制文件再說;如果在第3步失敗,則要檢查數據文件和日誌文件是否完整可用,也可根據警告文件中的警告信息來排查故障。
3、確認三大核心文件(控制文件、數據文件、日誌文件)的檢查點是否一致,這是數據庫能啓動的唯一標誌。
手工切換重做日誌文件組:
SQL> alter system switch logfile;
添加聯機重做日誌文件組:
SQL> alter database add logfile group 4 ('/oradata/log4a.log','/oradata/log4b.log') size 10M;
添加聯機重做日誌文件組成員:
SQL> alter database add logfile member '/oradata/log4c.log' to group 4, '/oradata/log3c.log' to group 3;
刪除聯機重做日誌文件組(當前組不能刪除,至少保留兩組):
SQL> alter database drop logfile group 4;
刪除聯機重做日誌文件組成員(只有一個成員時不能刪除):
SQL> alter database drop logfile member '/oradata/log4a.log';
清除日誌文件內容:
SQL> alter database clear logfile '/oradata/log3c.log';
關於三大核心文件的幾點注意事項:
1、控制文件最多可以有8個,多個控制文件最好放在不同的物理磁盤上,有一個出錯時可以從其他文件恢復。
2、重做日誌文件組是按順序寫、循環寫。至少需要兩個組,可以有多個組,每個組可以有多個成員,每個成員文件最好也放在不同的物理磁盤上。當歸檔模式下日誌文件佔用空間過大時,可以刪除部分組來節省空間,但記住從控制文件中刪除之後還必須刪除物理文件才能騰出空間。
3、不可以刪除當前正在使用的重做日誌文件組,所以要刪除時可手動切換(switch)當前日誌文件組後再刪除。
4、不可以刪除重做日誌文件組的最後一個成員,若要刪除,可直接刪除該組。
5、必須要保留兩個重做日誌文件組支持正常運行,如果要想刪除其中一組是不可能的,但可以清除(clear)其中的數據。