1. 程式人生 > >oracle常用操作方法

oracle常用操作方法

自動 工具 復數 part dev row 序列 esp lin

---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,

  DECODE (m.lmode,
      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常用操作方法