ORACLE数据库常用命令总结
查看死鎖
1)用dba用戶執(zhí)行以下語(yǔ)句
select username,lockwait,status,machine,program from v$session where sid in(select session_id from v$locked_object)如果有輸出的結(jié)果,則說明有死鎖,且能看到死鎖的機(jī)器是哪一臺(tái)。字段說明:
Username:死鎖語(yǔ)句所用的數(shù)據(jù)庫(kù)用戶; Lockwait:死鎖的狀態(tài),如果有內(nèi)容表示被死鎖。 Status: 狀態(tài),active表示被死鎖 Machine: 死鎖語(yǔ)句所在的機(jī)器。 Program: 產(chǎn)生死鎖的語(yǔ)句主要來自哪個(gè)應(yīng)用程序2)用dba用戶執(zhí)行以下語(yǔ)句,可以查看到被死鎖的語(yǔ)句。
select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select session_id from v$locked_object))2、死鎖的解決方法
1)查找死鎖的進(jìn)程:
2)kill掉這個(gè)死鎖的進(jìn)程:
alter system kill session ‘sid,serial#’; (其中sid=l.session_id)3)如果還不能解決:
select pro.spid from v$session ses, v$process pro where ses.sid=XX and ses.paddr=pro.addr;參考:http://www.zuidaima.com/share/1607194957646848.htm
http://blog.itpub.net/30345407/viewspace-2122531/
Oracle ORDER BY子句基本用法
在Oracle中,表中是以非指定順序存儲(chǔ)行數(shù)據(jù)記錄的,它不管行插入數(shù)據(jù)庫(kù)的順序如何。要按列以升序或降序查詢行記錄,必須明確指示Oracle數(shù)據(jù)庫(kù)要如何去排序。
例如,您可能希望按名稱的字母順序列出所有客戶,或者按照從最低到最高信用限額的順序顯示所有客戶。
要對(duì)數(shù)據(jù)進(jìn)行排序,我們可以將ORDER BY子句添加到SELECT語(yǔ)句中,參考以下語(yǔ)法:
SELECTcolumn_1,column_2,column_3,... FROMtable_name ORDER BYcolumn_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],要按列排序結(jié)果集,可以在ORDER BY子句之后列出該列。
按照列名是一個(gè)排序順序,可以是:
ASC表示按升序排序
DESC表示按降序排序
默認(rèn)情況下,無論是否指定ASC,ORDER BY子句都按升序?qū)π羞M(jìn)行排序。如果要按降序?qū)π羞M(jìn)行排序,請(qǐng)明確使用DESC。
NULLS FIRST在非NULL值之前放置NULL值,NULLS LAST在非NULL值之后放置NULL值。
ORDER BY子句可以按多列對(duì)數(shù)據(jù)進(jìn)行排序,每列可能有不同的排序順序。
請(qǐng)注意,ORDER BY子句總是SELECT語(yǔ)句中的最后一個(gè)子句。
按列位置排序行示例
SELECT name, credit_limit,address FROM customers ORDER BY 2 DESC, 1;UPPER()函數(shù)
ORDER BY子句可在一列上應(yīng)用一個(gè)函數(shù),例如字符串函數(shù),數(shù)學(xué)函數(shù)等,并按函數(shù)的結(jié)果對(duì)數(shù)據(jù)進(jìn)行排序。
例如,以下語(yǔ)句使用ORDER BY子句中的UPPER()函數(shù)來區(qū)分客戶名稱的大小寫:
SELECT customer_id, name FROM customers ORDER BY UPPER( name );Oracle AND與OR運(yùn)算符結(jié)合示例
可以將AND運(yùn)算符與其他邏輯運(yùn)算符(如OR和NOT)組合,以形成一個(gè)條件。
例如,以下查詢查找客戶ID為44的訂單,并且狀態(tài)已取消(Canceled) 或 待定(Pending)。參考以下實(shí)現(xiàn)語(yǔ)句:
SELECTorder_id,customer_id,status,salesman_id,TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date FROMorders WHERE(status = 'Canceled' OR status = 'Pending')AND customer_id = 44 ORDER BYorder_date;查看Oracle 版本信息
select * from v$version; select banner from sys.v_$version;在表中新加字段
ALTER TABLE schema.TableName ADD columnName VARCHAR2(32);修改字段長(zhǎng)度
ALTER table schema.TableName MODIFY (字段名 字段類型(長(zhǎng)度)); eg: alter table dpsm_dm_drugslog modify(person VARCHAR2(30));加入注釋
COMMENT ON COLUMN schema.TableName ADD columnName IS '注釋';創(chuàng)建schema
create user schemaName identified by schemaName default tablespace users temporary tablespace temp; grant connect to schemaName; grant resource to schemaName; grant dba to schemaName; alter user schemaName quota unlimited on users;創(chuàng)建mysql的schema
--創(chuàng)建數(shù)據(jù)庫(kù) create schema iiiis default character set utf8 collate utf8_general_ci; --立即啟用配置 flush privileges;查詢某一列只包含數(shù)字的數(shù)據(jù),并且值最大
select MAX(columnName) from schemaName.tableName where regexp_like(columnName,'^[0-9]+[0-9]$');修改列值的長(zhǎng)度
alter table schemaName.tableName modify (columnName,VARCHAR2(256));刪除某列
alter table schemaName.tableName drop column columnName;備份表
create table tableNewName as select * from schemaName.tableName;查看表結(jié)構(gòu)
DESCRIBE schemaName.tableName;查看建表語(yǔ)句
select dbms_metadata.get_ddl('TABLE','a') from dual; //其中a為表名;將備份表的數(shù)據(jù)還原到原始表
insert into schemaName.tableName select * from BackupsTableName where columnName='';//BackupsTableName為備份表的表名,columnName列名數(shù)據(jù)庫(kù)被鎖的解決方法
--查看已錯(cuò)誤輸入次數(shù) select name, lcount from sys.user$ where name='TIGER'; --查看用戶的具體的被鎖時(shí)間 select username,account_status,lock_date from dba_users; --查看FAILED_LOGIN_ATTEMPTS的值,一般數(shù)據(jù)庫(kù)默認(rèn)是10次嘗試失敗后鎖住用戶 select * from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS'; --修改為無限次(為安全起見,不建議使用) alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited; --數(shù)據(jù)庫(kù)解鎖 alter user myuser account unlock;將入唯一約束條件
ALTER TABLE schemaName.tableName ADD CONSTRAINT UNIIQUENAME UNIIQUE(columnName1,columnName2);刪除唯一約束條件
ALTER TABLE schemaName.tableName DROP CONSTRAINT UNIIQUENAME;查詢表中字段值相同的數(shù)據(jù)
SELECT * FROM schemaName.tableName a WHERE (a.columnName1,a.columnName2) IN (SELECT b.columnName1,b.columnName2 FROM schemaName.tableName b GROUP BY b.columnName1,b.columnName2 HAVING COUNT(*)>1);總結(jié)
以上是生活随笔為你收集整理的ORACLE数据库常用命令总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果手机抖音怎么删除自己的作品
- 下一篇: mysql(待完善)