ORACLE数据库常用命令总结
查看死鎖
1)用dba用戶執行以下語句
select username,lockwait,status,machine,program from v$session where sid in(select session_id from v$locked_object)如果有輸出的結果,則說明有死鎖,且能看到死鎖的機器是哪一臺。字段說明:
Username:死鎖語句所用的數據庫用戶; Lockwait:死鎖的狀態,如果有內容表示被死鎖。 Status: 狀態,active表示被死鎖 Machine: 死鎖語句所在的機器。 Program: 產生死鎖的語句主要來自哪個應用程序2)用dba用戶執行以下語句,可以查看到被死鎖的語句。
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)查找死鎖的進程:
2)kill掉這個死鎖的進程:
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中,表中是以非指定順序存儲行數據記錄的,它不管行插入數據庫的順序如何。要按列以升序或降序查詢行記錄,必須明確指示Oracle數據庫要如何去排序。
例如,您可能希望按名稱的字母順序列出所有客戶,或者按照從最低到最高信用限額的順序顯示所有客戶。
要對數據進行排序,我們可以將ORDER BY子句添加到SELECT語句中,參考以下語法:
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],要按列排序結果集,可以在ORDER BY子句之后列出該列。
按照列名是一個排序順序,可以是:
ASC表示按升序排序
DESC表示按降序排序
默認情況下,無論是否指定ASC,ORDER BY子句都按升序對行進行排序。如果要按降序對行進行排序,請明確使用DESC。
NULLS FIRST在非NULL值之前放置NULL值,NULLS LAST在非NULL值之后放置NULL值。
ORDER BY子句可以按多列對數據進行排序,每列可能有不同的排序順序。
請注意,ORDER BY子句總是SELECT語句中的最后一個子句。
按列位置排序行示例
SELECT name, credit_limit,address FROM customers ORDER BY 2 DESC, 1;UPPER()函數
ORDER BY子句可在一列上應用一個函數,例如字符串函數,數學函數等,并按函數的結果對數據進行排序。
例如,以下語句使用ORDER BY子句中的UPPER()函數來區分客戶名稱的大小寫:
SELECT customer_id, name FROM customers ORDER BY UPPER( name );Oracle AND與OR運算符結合示例
可以將AND運算符與其他邏輯運算符(如OR和NOT)組合,以形成一個條件。
例如,以下查詢查找客戶ID為44的訂單,并且狀態已取消(Canceled) 或 待定(Pending)。參考以下實現語句:
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);修改字段長度
ALTER table schema.TableName MODIFY (字段名 字段類型(長度)); eg: alter table dpsm_dm_drugslog modify(person VARCHAR2(30));加入注釋
COMMENT ON COLUMN schema.TableName ADD columnName IS '注釋';創建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;創建mysql的schema
--創建數據庫 create schema iiiis default character set utf8 collate utf8_general_ci; --立即啟用配置 flush privileges;查詢某一列只包含數字的數據,并且值最大
select MAX(columnName) from schemaName.tableName where regexp_like(columnName,'^[0-9]+[0-9]$');修改列值的長度
alter table schemaName.tableName modify (columnName,VARCHAR2(256));刪除某列
alter table schemaName.tableName drop column columnName;備份表
create table tableNewName as select * from schemaName.tableName;查看表結構
DESCRIBE schemaName.tableName;查看建表語句
select dbms_metadata.get_ddl('TABLE','a') from dual; //其中a為表名;將備份表的數據還原到原始表
insert into schemaName.tableName select * from BackupsTableName where columnName='';//BackupsTableName為備份表的表名,columnName列名數據庫被鎖的解決方法
--查看已錯誤輸入次數 select name, lcount from sys.user$ where name='TIGER'; --查看用戶的具體的被鎖時間 select username,account_status,lock_date from dba_users; --查看FAILED_LOGIN_ATTEMPTS的值,一般數據庫默認是10次嘗試失敗后鎖住用戶 select * from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS'; --修改為無限次(為安全起見,不建議使用) alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited; --數據庫解鎖 alter user myuser account unlock;將入唯一約束條件
ALTER TABLE schemaName.tableName ADD CONSTRAINT UNIIQUENAME UNIIQUE(columnName1,columnName2);刪除唯一約束條件
ALTER TABLE schemaName.tableName DROP CONSTRAINT UNIIQUENAME;查詢表中字段值相同的數據
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);總結
以上是生活随笔為你收集整理的ORACLE数据库常用命令总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果手机抖音怎么删除自己的作品
- 下一篇: 五用英语怎么说 五的英语是什么