oracle日常運維

1.解鎖用戶
select username,account_status from dba_users b where b.username=upper('<username>');

alter user <username> account unlock;  --解鎖
alter user <username> identified by sh;--解開EXPIRED
alter user <username> identified by '&pw';


2.授權
alter user <username1> grant connect through <username2>; 

3.create package 報錯,追蹤sql
ORA-04021:等待鎖定對象時發生超時

select object_name,s.sid,s.serial#,p.spid from v$locked_object l, dba_objects o , v$session s , v$process p 
where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;

ddl鎖???????????????
最先持有這個鎖的人???????

獲取spid
 > ps -ef|grep 18399 後臺kill可能會down
 > kill 18399
 
 
4. SQL卡死,追蹤sql
select q.SQL_TEXT,q.SQL_ID,s.SID,s.SERIAL# from v$session s ,v$locked_object o,v$sql q 
where o.SESSION_ID=s.SID and s.SQL_ID=q.SQL_ID and q.SQL_ID='3pa2v9fvthfc5' ;

select q.SQL_TEXT,q.SQL_ID,s.SID,s.SERIAL#,do.object_name,s.USERNAME,s.SQL_EXEC_START from v$session s ,v$locked_object o,v$sql q,dba_objects do
where o.SESSION_ID=s.SID and s.SQL_ID=q.SQL_ID and do.object_id=o.OBJECT_ID; 

alter system kill session 'sid.serial#';

5. 數據庫連接問題
域----vip----主機
lsnrctl 實例名
nslookup 域名
show parameter local
srvctl (RAC)

監聽是否打開:
lsnrctl status 實例名
lsnrctl start 實例名

數據庫是否啓動:
ps -ef|grep pmon
若沒有,startup

6.查看剩餘表空間的大小:

普通表空間 
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS "FREE SPACE(M)" FROM DBA_FREE_SPACE WHERE TABLESPACE_NAME = 'USERS' GROUP BY TABLESPACE_NAME;
查看臨時表空間使用量/空餘量:
select TABLESPACE_NAME, BYTES_USED/1024/1024 used_MB,BYTES_FREE/1024/1024 free_MB from V$TEMP_SPACE_HEADER;

7.查看是哪個磁盤組: 
普通表空間:select * from dba_data_files  where tablespace_name='<tablespace_name>';
添加表空間:
select 'create tablespace ' ||TABLESPACE_NAME|| ' datafile ''<DATA_DG>'' size 500m autoextend on;' from dba_tablespaces;

8.如果是asm管理查看磁盤剩餘空間
select name,free_mb/1024/1024,total_mb from v$asm_diskgroup_stat where name='<DATA_DG>';
select * from v$asm_diskgroup;

9.如果磁盤組夠用,增加數據文件
ALTER TABLESPACE &tablespace_name ADD DATAFILE '<DATA_DG>' SIZE 500m AUTOEXTEND ON ;
alter tablespace temp add tempfile '<DATA_DG>' size 500m autoextend on ;

10. 如果是文件系統,則使用下面的語句:
ALTER TABLESPACE &tablespace_name ADD DATAFILE '&datafile_name' size 100m autoextend on next 100m MAXSIZE 10000M;

11.查看回滾時間
select usn, state, undoblocksdone, undoblockstotal, CPUTIME, pid,xid, rcvservers from v$fast_start_transactions;

12. 查看連接數
select count(*) from v$session;

13.抓10046
SQL> oradebug setospid 5489
Oracle pid: 56, Unix process pid: 5489, image: oracle@主機名 (TNS V1-V3)
SQL> oradebug event 10046 trace name context forever , level 12
Statement processed.
SQL> oradebug event 10046 trace name context off;
Statement processed.
SQL> oradebug tracefile_name
&trace_dir/paolap_ora_5489.trc
SQL> host;

14. 重啓服務名,查看活動的服務名
select name from dba_services;
exec dbms_service.start_service('<dba_services_name>');

15.awr報告
SELECT * FROM dba_hist_snapshot t ORDER BY t.begin_interval_time DESC;

SELECT OUTPUT
  FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(704877203,1,17568,17570));
  
16. 編譯packagepackage
select * from v$access m where m.TYPE='PACKAGE' and m.OBJECT='<package_name>';

 

發佈了29 篇原創文章 · 獲贊 10 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章