日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE经常使用的命令

發布時間:2025/3/14 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE经常使用的命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個、ORACLE啟動和關機
1、在獨立環境中
要啟用或禁用ORACLE該系統必須切換到ORACLE用戶,例如以下
su-oracle

a、啟動ORACLE系統
oracle>svrmgrl
SVRMGR>connectinternal
SVRMGR>startup
SVRMGR>quit

b、關閉ORACLE系統
oracle>svrmgrl
SVRMGR>connectinternal
SVRMGR>shutdown
SVRMGR>quit

啟動oracle9i數據庫命令:
$sqlplus/nolog

SQL*Plus:Release9.2.0.1.0-ProductiononFriOct3113:53:532003

Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.

SQL>connect/assysdba
Connectedtoanidleinstance.
SQL>startup^C

SQL>startup
ORACLEinstancestarted.


2、在雙機環境下
要想啟動或關閉ORACLE系統必須首先切換到root用戶,例如以下
su-root

a、啟動ORACLE系統
hareg-yoracle

b、關閉ORACLE系統
hareg-noracle

Oracle數據庫有哪幾種啟動方式


說明:

有下面幾種啟動方式:
1、startupnomount
非安裝啟動,這樣的方式啟動下可運行:重建控制文件、重建數據庫

讀取init.ora文件。啟動instance。即啟動SGA和后臺進程。這樣的啟動僅僅須要init.ora文件。


2、startupmountdbname
安裝啟動,這樣的方式啟動下可運行:
數據庫日志歸檔、
數據庫介質恢復、
使數據文件聯機或脫機,
又一次定位數據文件、重做日志文件。

運行“nomount”,然后打開控制文件,確認數據文件和聯機日志文件的位置,
但此時不正確數據文件和日志文件進行校驗檢查。


3、startupopendbname
先運行“nomount”。然后運行“mount”。再打開包含Redolog文件在內的全部數據庫文件,
這樣的方式下可訪問數據庫中的數據。


4、startup,等于下面三個命令
startupnomount
alterdatabasemount
alterdatabaseopen


5、startuprestrict
約束方式啟動
這樣的方式可以啟動數據庫。但僅僅同意具有一定特權的用戶訪問
非特權用戶訪問時。會出現下面提示:
ERROR:
ORA-01035:ORACLE僅僅同意具有RESTRICTEDSESSION權限的用戶使用


6、startupforce
強制啟動方式
當不能關閉數據庫時,能夠用startupforce來完畢數據庫的關閉
先關閉數據庫,再運行正常啟動數據庫命令


7、startuppfile=參數文件名稱
帶初始化參數文件的啟動方式
先讀取參數文件,再按參數文件里的設置啟動數據庫
例:startuppfile=E:Oracleadminoradbpfileinit.ora


8、startupEXCLUSIVE
二、用戶怎樣有效地利用數據字典
 ORACLE的數據字典是數據庫的重要組成部分之中的一個,它隨著數據庫的產生而產生,隨著數據庫的變化而變化,
體現為sys用戶下的一些表和視圖。

數據字典名稱是大寫的英文字符。

數據字典里存實用戶信息、用戶的權限信息、全部數據對象信息、表的約束條件、統計分析數據庫的視圖等。
我們不能手工改動數據字典里的信息。

  非常多時候,一般的ORACLE用戶不知道怎樣有效地利用它。

  dictionary   所有數據字典表的名稱和解釋,它有一個同義詞dict
dict_column  所有數據字典表里字段名稱和解釋

假設我們想查詢跟索引有關的數據字典時,能夠用以下這條SQL語句:

SQL>select*fromdictionarywhereinstr(comments,'index')>0;

假設我們想知道user_indexes表各字段名稱的具體含義,能夠用以下這條SQL語句:

SQL>selectcolumn_name,commentsfromdict_columnswheretable_name='USER_INDEXES';

依此類推,就能夠輕松知道數據字典的具體名稱和解釋,不用查看ORACLE的其他文檔資料了。

以下按類別列出一些ORACLE用戶經常使用數據字典的查詢用法。

1、用戶

查看當前用戶的缺省表空間
SQL>selectusername,default_tablespacefromuser_users;

查看當前用戶的角色
SQL>select*fromuser_role_privs;

查看當前用戶的系統權限和表級權限
SQL>select*fromuser_sys_privs;
SQL>select*fromuser_tab_privs;

2、表

查看用戶下全部的表
SQL>select*fromuser_tables;

查看名稱包括log字符的表
SQL>selectobject_name,object_idfromuser_objects
whereinstr(object_name,'LOG')>0;

查看某表的創建時間
SQL>selectobject_name,createdfromuser_objectswhereobject_name=upper('&table_name');

查看某表的大小
SQL>selectsum(bytes)/(1024*1024)as"size(M)"fromuser_segments
wheresegment_name=upper('&table_name');

查看放在ORACLE的內存區里的表
SQL>selecttable_name,cachefromuser_tableswhereinstr(cache,'Y')>0;

3、索引

查看索引個數和類別
SQL>selectindex_name,index_type,table_namefromuser_indexesorderbytable_name;

查看索引被索引的字段
SQL>select*fromuser_ind_columnswhereindex_name=upper('&index_name');

查看索引的大小
SQL>selectsum(bytes)/(1024*1024)as"size(M)"fromuser_segments
wheresegment_name=upper('&index_name');

4、序列號

查看序列號。last_number是當前值
SQL>select*fromuser_sequences;

5、視圖

查看視圖的名稱
SQL>selectview_namefromuser_views;

查看創建視圖的select語句
SQL>setview_name,text_lengthfromuser_views;
SQL>setlong2000;說明:能夠依據視圖的text_length值設定setlong的大小
SQL>selecttextfromuser_viewswhereview_name=upper('&view_name');

6、同義詞

查看同義詞的名稱
SQL>select*fromuser_synonyms;

7、約束條件

查看某表的約束條件
SQL>selectconstraint_name,constraint_type,search_condition,r_constraint_name
fromuser_constraintswheretable_name=upper('&table_name');

SQL>selectc.constraint_name,c.constraint_type,cc.column_name
fromuser_constraintsc,user_cons_columnscc
wherec.owner=upper('&table_owner')andc.table_name=upper('&table_name')
andc.owner=cc.ownerandc.constraint_name=cc.constraint_name
orderbycc.position;

8、存儲函數和過程

查看函數和過程的狀態
SQL>selectobject_name,statusfromuser_objectswhereobject_type='FUNCTION';
SQL>selectobject_name,statusfromuser_objectswhereobject_type='PROCEDURE';

查看函數和過程的源碼
SQL>selecttextfromall_sourcewhereowner=userandname=upper('&plsql_name');


三、查看數據庫的SQL
1、查看表空間的名稱及大小

selectt.tablespace_name,round(sum(bytes/(1024*1024)),0)ts_size
fromdba_tablespacest,dba_data_filesd
wheret.tablespace_name=d.tablespace_name
groupbyt.tablespace_name;

2、查看表空間物理文件的名稱及大小

selecttablespace_name,file_id,file_name,
round(bytes/(1024*1024),0)total_space
fromdba_data_files
orderbytablespace_name;

3、查看回滾段名稱及大小

selectsegment_name,tablespace_name,r.status,
(initial_extent/1024)InitialExtent,(next_extent/1024)NextExtent,
max_extents,v.curextCurExtent
Fromdba_rollback_segsr,v$rollstatv
Wherer.segment_id=v.usn(+)
orderbysegment_name;

4、查看控制文件

selectnamefromv$controlfile;

5、查看日志文件

selectmemberfromv$logfile;

6、查看表空間的使用情況

selectsum(bytes)/(1024*1024)asfree_space,tablespace_name
fromdba_free_space
groupbytablespace_name;

SELECTA.TABLESPACE_NAME,A.BYTESTOTAL,B.BYTESUSED,C.BYTESFREE,
(B.BYTES*100)/A.BYTES"%USED",(C.BYTES*100)/A.BYTES"%FREE"
FROMSYS.SM$TS_AVAILA,SYS.SM$TS_USEDB,SYS.SM$TS_FREEC
WHEREA.TABLESPACE_NAME=B.TABLESPACE_NAMEANDA.TABLESPACE_NAME=C.TABLESPACE_NAME;

7、查看數據庫庫對象

selectowner,object_type,status,count(*)count#fromall_objectsgroupbyowner,object_type,status;

8、查看數據庫的版本號

SelectversionFROMProduct_component_version
WhereSUBSTR(PRODUCT,1,6)='Oracle';

9、查看數據庫的創建日期和歸檔方式

SelectCreated,Log_Mode,Log_ModeFromV$Database;
四、ORACLE用戶連接的管理

用系統管理員。查看當前數據庫有幾個用戶連接:

SQL>selectusername,sid,serial#fromv$session;

假設要停某個連接用

SQL>altersystemkillsession'sid,serial#';

假設這命令不行,找它UNIX的進程數

SQL>selectpro.spidfromv$sessionses,v$processprowhereses.sid=21andses.paddr=pro.addr;

說明:21是某個連接的sid數

然后用kill命令殺此進程號。


五、SQL*PLUS使用
a、近入SQL*Plus
$sqlplususername/password

退出SQL*Plus
SQL>exit

b、在sqlplus下得到幫助信息
列出所有SQL命令和SQL*Plus命令
SQL>help
列出某個特定的命令的信息
SQL>help命令名

c、顯示表結構命令DESCRIBE
SQL>DESC表名

d、SQL*Plus中的編輯命令
顯示SQL緩沖區命令
SQL>L

改動SQL命令
首先要將待改正行變為當前行
SQL>n
用CHANGE命令改動內容
SQL>c/舊/新
又一次確認是否已正確
SQL>L

使用INPUT命令能夠在SQL緩沖區中添加一行或多行
SQL>i
SQL>輸入內容

e、調用外部系統編輯器
SQL>edit文件名稱
能夠使用DEFINE命令設置系統變量EDITOR來改變文本編輯器的類型,在login.sql文件里定義例如以下一行
DEFINE_EDITOR=vi

f、執行命令文件
SQL>STARTtest
SQL>@test

經常使用SQL*Plus語句
a、表的創建、改動、刪除
創建表的命令格式例如以下:
createtable表名(列說明列表)。

為基表添加新列命令例如以下:
ALTERTABLE表名ADD(列說明列表)
例:為test表添加一列Age,用來存放年齡
sql>altertabletest
add(Agenumber(3));

改動基表列定義命令例如以下:
ALTERTABLE表名
MODIFY(列名數據類型)
例:將test表中的Count列寬度加長為10個字符
sql>alteratbletest
modify(Countychar(10))。

b、將一張表刪除語句的格式例如以下:
DORPTABLE表名。
例:表刪除將同一時候刪除表的數據和表的定義
sql>droptabletest

c、表空間的創建、刪除


六、ORACLE邏輯備份的SH文件

全然備份的SH文件:exp_comp.sh

rq=`date+"%m%d"`

su-oracle-c"expsystem/managerfull=yinctype=completefile=/oracle/export/db_comp$rq.dmp"

累計備份的SH文件:exp_cumu.sh

rq=`date+"%m%d"`

su-oracle-c"expsystem/managerfull=yinctype=cumulativefile=/oracle/export/db_cumu$rq.dmp"

增量備份的SH文件:exp_incr.sh

rq=`date+"%m%d"`

su-oracle-c"expsystem/managerfull=yinctype=incrementalfile=/oracle/export/db_incr$rq.dmp"

root用戶crontab文件
/var/spool/cron/crontabs/root添加下面內容

021**/oracle/exp_comp.sh

302**0-5/oracle/exp_incr.sh

452**6/oracle/exp_cumu.sh

當然這個時間表能夠依據不同的需求來改變的,這僅僅是一個樣例。


七、ORACLE經常使用的SQL語法和數據對象

一.數據控制語句(DML)部分

1.INSERT(往數據表里插入記錄的語句)

INSERTINTO表名(字段名1,字段名2,……)VALUES(值1,值2,……);
INSERTINTO表名(字段名1,字段名2,……)SELECT(字段名1,字段名2,……)FROM另外的表名;

字符串類型的字段值必須用單引號括起來,比如:’GOODDAY’
假設字段值里包括單引號’須要進行字符串轉換,我們把它替換成兩個單引號''.
字符串類型的字段值超過定義的長度會出錯,最好在插入前進行長度校驗.

日期字段的字段值能夠用當前數據庫的系統時間SYSDATE,精確到秒
或者用字符串轉換成日期型函數TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)
TO_DATE()還有非常多種日期格式,能夠參看ORACLEDOC.
年-月-日小時:分鐘:秒的格式YYYY-MM-DDHH24:MI:SS

INSERT時最大可操作的字符串長度小于等于4000個單字節,假設要插入更長的字符串,請考慮字段用CLOB類型,
方法借用ORACLE里自帶的DBMS_LOB程序包.

INSERT時假設要用到從1開始自己主動增長的序列號,應該先建立一個序列號
CREATESEQUENCE序列號的名稱(最好是表名+序列號標記)INCREMENTBY1STARTWITH1
MAXVALUE99999CYCLENOCACHE;
當中最大的值按字段的長度來定,假設定義的自己主動增長的序列號NUMBER(6),最大值為999999
INSERT語句插入這個字段值為:序列號的名稱.NEXTVAL

2.DELETE(刪除數據表里記錄的語句)

DELETEFROM表名WHERE條件;

注意:刪除記錄并不能釋放ORACLE里被占用的數據塊表空間.它僅僅把那些被刪除的數據塊標成unused.

假設確實要刪除一個大表里的所有記錄,能夠用TRUNCATE命令,它能夠釋放占用的數據塊表空間
TRUNCATETABLE表名;
此操作不可回退.

3.UPDATE(改動數據表里記錄的語句)

UPDATE表名SET字段名1=值1,字段名2=值2,……WHERE條件;

假設改動的值N沒有賦值或定義時,將把原來的記錄內容清為NULL,最好在改動前進行非空校驗;
值N超過定義的長度會出錯,最好在插入前進行長度校驗..

注意事項:
A.以上SQL語句對表都加上了行級鎖,
確認完畢后,必須加上事物處理結束的命令COMMIT才干正式生效,
否則改變不一定寫入數據庫里.
假設想撤回這些操作,能夠用命令ROLLBACK復原.

B.在執行INSERT,DELETE和UPDATE語句前最好估算一下可能操作的記錄范圍,
應該把它限定在較小(一萬條記錄)范圍內,.否則ORACLE處理這個事物用到非常大的回退段.
程序響應慢甚至失去響應.假設記錄數上十萬以上這些操作,能夠把這些SQL語句分段分次完畢,
其間加上COMMIT確認事物處理.
二.數據定義(DDL)部分

1.CREATE(創建表,索引,視圖,同義詞,過程,函數,數據庫鏈接等)

ORACLE經常使用的字段類型有
CHAR固定長度的字符串
VARCHAR2可變長度的字符串
NUMBER(M,N)數字型M是位數總長度,N是小數的長度
DATE日期類型

創建表時要把較小的不為空的字段放在前面,可能為空的字段放在后面

創建表時能夠用中文的字段名,但不妨用英文的字段名

創建表時能夠給字段加上默認值,比如DEFAULTSYSDATE
這樣每次插入和改動時,不用程序操作這個字段都能得到動作的時間

創建表時能夠給字段加上約束條件
比如不同意反復UNIQUE,keywordPRIMARYKEY

2.ALTER(改變表,索引,視圖等)

改變表的名稱
ALTERTABLE表名1TO表名2;

在表的后面添加一個字段
ALTERTABLE表名ADD字段名字段名描寫敘述;

改動表里字段的定義描寫敘述
ALTERTABLE表名MODIFY字段名字段名描寫敘述;

給表里的字段加上約束條件
ALTERTABLE表名ADDCONSTRAINT約束名PRIMARYKEY(字段名);
ALTERTABLE表名ADDCONSTRAINT約束名UNIQUE(字段名);

把表放在或取出數據庫的內存區
ALTERTABLE表名CACHE;
ALTERTABLE表名NOCACHE;

3.DROP(刪除表,索引,視圖,同義詞,過程,函數,數據庫鏈接等)

刪除表和它全部的約束條件
DROPTABLE表名CASCADECONSTRAINTS;

4.TRUNCATE(清空表里的全部記錄,保留表的結構)

TRUNCATE表名;

三.查詢語句(SELECT)部分

SELECT字段名1,字段名2,……FROM表名1,[表名2,……]WHERE條件;

字段名能夠帶入函數
比如:COUNT(*),MIN(字段名),MAX(字段名),AVG(字段名),DISTINCT(字段名),
TO_CHAR(DATE字段名,'YYYY-MM-DDHH24:MI:SS')

NVL(EXPR1,EXPR2)函數
解釋:
IFEXPR1=NULL
RETURNEXPR2
ELSE
RETURNEXPR1

DECODE(AA,V1。R1。V2,R2....)函數
解釋:
IFAA=V1THENRETURNR1
IFAA=V2THENRETURNR2
..…
ELSE
RETURNNULL

LPAD(char1,n,char2)函數
解釋:
字符char1按制定的位數n顯示。不足的位數用char2字符串替換左邊的空位

字段名之間能夠進行算術運算
比如:(字段名1*字段名1)/3

查詢語句能夠嵌套
比如:SELECT……FROM
(SELECT……FROM表名1,[表名2,……]WHERE條件)WHERE條件2;

兩個查詢語句的結果能夠做集合操作
比如:并集UNION(去掉反復記錄),并集UNIONALL(不去掉反復記錄),差集MINUS,交集INTERSECT

分組查詢
SELECT字段名1,字段名2,……FROM表名1,[表名2,……]GROUPBY字段名1
[HAVING條件];

兩個以上表之間的連接查詢

SELECT字段名1,字段名2,……FROM表名1,[表名2,……]WHERE
表名1.字段名=表名2.字段名[AND……];

SELECT字段名1,字段名2,……FROM表名1,[表名2,……]WHERE
表名1.字段名=表名2.字段名(+)[AND……];

有(+)號的字段位置自己主動補空值

查詢結果集的排序操作,默認的排序是升序ASC,降序是DESC

SELECT字段名1,字段名2,……FROM表名1,[表名2,……]
ORDERBY字段名1,字段名2DESC;

字符串模糊比較的方法

INSTR(字段名,‘字符串’)>0
字段名LIKE‘字符串%’[‘%字符串%’]

每一個表都有一個隱含的字段ROWID,它標記著記錄的唯一性.

四.ORACLE里經常使用的數據對象(SCHEMA)

1.索引(INDEX)

CREATEINDEX索引名ON表名(字段1,[字段2,……]);
ALTERINDEX索引名REBUILD;

一個表的索引最好不要超過三個(特殊的大表除外),最好用單字段索引,結合SQL語句的分析運行情況,
也能夠建立多字段的組合索引和基于函數的索引

ORACLE8.1.7字符串能夠索引的最大長度為1578單字節
ORACLE8.0.6字符串能夠索引的最大長度為758單字節

2.視圖(VIEW)

CREATEVIEW視圖名ASSELECT….FROM…..;
ALTERVIEW視圖名COMPILE;

視圖僅是一個SQL查詢語句,它能夠把表之間復雜的關系簡潔化.

3.同義詞(SYNONMY)
CREATESYNONYM同義詞名FOR表名;
CREATESYNONYM同義詞名FOR表名@數據庫鏈接名;

4.數據庫鏈接(DATABASELINK)
CREATEDATABASELINK數據庫鏈接名CONNECTTOusernameIDENTIFIEDBYpasswordUSING‘數據庫連接字符串’;

數據庫連接字符串能夠用NET8EASYCONFIG或者直接改動TNSNAMES.ORA里定義.

數據庫參數global_name=true時要求數據庫鏈接名稱跟遠端數據庫名稱一樣

數據庫全局名稱能夠用下面命令查出
SELECT*FROMGLOBAL_NAME;

查詢遠端數據庫里的表
SELECT……FROM表名@數據庫鏈接名;

五.權限管理(DCL)語句

1.GRANT賦于權限
經常使用的系統權限集合有下面三個:
CONNECT(主要的連接),RESOURCE(程序開發),DBA(數據庫管理)
經常使用的數據對象權限有下面五個:
ALLON數據對象名,SELECTON數據對象名,UPDATEON數據對象名,
DELETEON數據對象名,INSERTON數據對象名,ALTERON數據對象名

GRANTCONNECT,RESOURCETOusername;
GRANTSELECTON表名TOusername;
GRANTSELECT,INSERT,DELETEON表名TOusername1,username2;

2.REVOKE回收權限

REVOKECONNECT,RESOURCEFROMusername;
REVOKESELECTON表名FROMusername;
REVOKESELECT,INSERT,DELETEON表名FROMusername1,username2;


查詢數據庫中第63號錯誤:
selectorgaddr,destaddrfromsm_histable0116whereerror_code='63';

查詢數據庫中開戶用戶最大提交和最大下發數:selectMSISDN,TCOS,OCOSfromms_usertable。


查詢數據庫中各種錯誤代碼的總和:
selecterror_code,count(*)fromsm_histable0513groupbyerror_codeorder
byerror_code;

查詢報表數據庫中話單統計種類查詢。


selectsum(Successcount)fromtbl_MiddleMt0411whereServiceType2=111
selectsum(successcount),servicetypefromtbl_middlemt0411groupbyservicetype

版權聲明:本文博客原創文章。博客,未經同意,不得轉載。

轉載于:https://www.cnblogs.com/mengfanrong/p/4641414.html

總結

以上是生活随笔為你收集整理的ORACLE经常使用的命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。