oracle常用操作方法
---oracle創建數據庫,基於plsqldev工具
1、創建表空間,創建空內容的物理文件
create tablespace db_test --表空間名 datafile ‘D:\test.dbf‘ --物理文件 表空間數據文件存放路徑 size 50m --大小初始值 autoextend on --自動擴展 next 50m maxsize 20480m --每次擴展50m,最大為20480m extent management local;
2、創建用戶 create user testdev --創建用戶名 testdev identified by"test1234" --創建密碼 test1234 default tablespace db_test --表空間 db_test temporary tablespace TEMP --臨時表空間(默認的) profile DEFAULT --默認權限(下面給分配) quota unlimited on db_test; --該用戶在 db_test 表空間裏的配額不限
3、用創建的用戶登錄,登錄後即可新建表等操作
---創建索引
create index index_name on table_name(col_name)
---添加字段
alert table add(col_name col_type default ‘‘ not null);\
---查詢空表
select distinct table_name from user_tables where num_rows = 0
---查詢某個表中的重復數據
select * from table_name where col_name in (select col_name from table_name group by col_name having (col_name) > 1)
--查詢被鎖的表
SELECT sn.username, m.SID,sn.SERIAL#, m.TYPE,
0, ‘None‘,
1, ‘Null‘,
2, ‘Row Share‘,
3, ‘Row Excl.‘,
4, ‘Share‘,
5, ‘S/Row Excl.‘,
6, ‘Exclusive‘,
lmode, LTRIM (TO_CHAR (lmode, ‘990‘))
) lmode,
DECODE (m.request,
0, ‘None‘,
1, ‘Null‘,
2, ‘Row Share‘,
3, ‘Row Excl.‘,
4, ‘Share‘,
5, ‘S/Row Excl.‘,
6, ‘Exclusive‘,
request, LTRIM (TO_CHAR (m.request, ‘990‘))
) request,
m.id1,
m.id2
FROM v$session sn, v$lock m
WHERE (sn.SID = m.SID AND m.request != 0) --存在鎖請求,即被阻塞
OR ( sn.SID = m.SID --不存在鎖請求,但是鎖定的對象被其他會話請求鎖定
AND m.request = 0
AND lmode != 4
AND (id1, id2) IN (
SELECT s.id1, s.id2
FROM v$lock s
WHERE request != 0 AND s.id1 = m.id1
AND s.id2 = m.id2)
)
ORDER BY id1, id2, m.request;
---執行解鎖
alter system kill session ‘sid,SERIAL#‘;
---delete update 執行很慢的時候,先查詢鎖定記錄,然後刪除鎖定記錄 。再刪除
SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;
ALTER system KILL session ‘101,44149‘;
---樹結構查詢按層級排序
select t.* from table_name t
start with t.id = 1
connect by t.part_id = prior t.id
order siblings by t.id;
---查看數據庫字符集
select * from nls_database_parameters where parameter =‘NLS_CHARACTERSET‘
---創建觸發器將序列中的值賦給插入employee表的行
create replace trigger insert_employee_autoinc
before insert on employee
for each row
begin
select employee_autoinc.nextval into :new.Id from dual;
end insert_employee_autoinc;
oracle常用操作方法