當前位置:首頁 » 操作系統 » 查看資料庫進程oracle

查看資料庫進程oracle

發布時間: 2022-09-22 08:51:13

㈠ 怎麼查看oracle資料庫是否已啟動

linux下可以用ipcs查看,windows下可以查看服務,也可以進到資料庫裡面看資料庫當前狀態 select status from v$instance,如果status = open 就說明oracle服務正常。

㈡ 如何查看oracle當前資料庫

建用戶和授權要用dba
最簡單得建用戶:
create
user
用戶名
identified
by
密碼
用戶解鎖
alter
user
用戶名
account
unlock(不解鎖無法登陸)
授權用
grant
建完用戶首先要授權登陸許可權
grant
create
session
to
用戶名
授權可以授權給角色和用戶
也可以把角色授權給角色和用戶
其他得類似
創建表得許可權類似如下格式:
grant
create
table
to
用戶

㈢ 如何查看oracle資料庫是否啟動

select
status
from
v$instance;
如果報錯不能執行(用dba用戶,或者有查看$視圖許可權的用戶),那麼就是沒啟動。
如果結果為nomount,那麼就是僅僅搭載了初始文件,分配了內存,但是還沒有載入控制文件。
mount就是載入了控制文件。
open就是完全啟動了。
除了open意外,其他狀態都不算完全啟動資料庫。

㈣ oracle資料庫怎麼查看進程數

查看ORACLE最大進程數:
sql> select count(*) from v$session #連接數
SQL> Select count(*) from v$session where status='ACTIVE'#並發連接數
SQL> show parameter processes #最大連接
SQL> alter system set processes = value scope = spfile;重啟資料庫 #修改連接
unix 1個用戶session 對應一個操作系統 process
而 windows體現在線程
------------------------------------------------------------------------------
修改ORACLE最大進程數:
使用sys,以sysdba許可權登錄:
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> alter system set processes=300 scope = spfile;
系統已更改。
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> create pfile from spfile;
文件已創建。
重啟資料庫,
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 300

㈤ 怎麼檢查oracle資料庫服務有沒有啟動

Oracle資料庫實例啟動時,分成nomount、mount和open的三個階段,下面的實例分析來展示不同階段時,系統到底做了哪些工作

1、nomout階段,該階段啟動的前提是有參數文件,若沒有參數文件,系統無法啟動,在該過程中,系統分配內存、開啟後台進程,同時更新alter日誌文件

實例nomount之前的狀態:

--無實例進程
[oracle@secdb1 admin]$ echo $ORACLE_SID
PROD
[oracle@secdb1 admin]$ ps -ef|grep PROD
oracle 14890 6310 0 21:12 pts/1 00:00:00 grep PROD
--alter日誌信息
[oracle@secdb1 bmp]$ ls -lrt
total 48
-rw-r----- 1 oracle oinstall 1113 Mar 4 23:15 prod_lgwr_7319.trc
-rw-r----- 1 oracle oinstall 779 Mar 5 19:42 prod_mmnl_7329.trc
-rw-r--r-- 1 oracle oinstall 40910 Mar 5 21:08 alert_PROD.log

此時啟動實例到nomount狀態
[oracle@secdb1 admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Proction on Wed Mar 5 21:15:50 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 1219184 bytes
Variable Size 100664720 bytes
Database Buffers 209715200 bytes
Redo Buffers 2973696 bytes
SQL>

此時查看進程和日誌信息
[oracle@secdb1 bmp]$ ls -lrt
total 52
-rw-r----- 1 oracle oinstall 1113 Mar 4 23:15 prod_lgwr_7319.trc
-rw-r----- 1 oracle oinstall 779 Mar 5 19:42 prod_mmnl_7329.trc
-rw-r--r-- 1 oracle oinstall 42513 Mar 5 21:15 alert_PROD.log ----------------日誌文件已經更新

[oracle@secdb1 bmp]$ ps -ef|grep PROD ----------------------------系統中出現後台進程
oracle 14946 1 0 21:15 ? 00:00:00 ora_pmon_PROD
oracle 14948 1 0 21:15 ? 00:00:00 ora_psp0_PROD
oracle 14950 1 0 21:15 ? 00:00:00 ora_mman_PROD
oracle 14952 1 0 21:15 ? 00:00:00 ora_dbw0_PROD
oracle 14954 1 0 21:15 ? 00:00:00 ora_lgwr_PROD
oracle 14956 1 0 21:15 ? 00:00:00 ora_ckpt_PROD
oracle 14958 1 0 21:15 ? 00:00:00 ora_smon_PROD
oracle 14960 1 0 21:15 ? 00:00:00 ora_reco_PROD
oracle 14962 1 0 21:15 ? 00:00:00 ora_mmon_PROD
oracle 14964 1 0 21:15 ? 00:00:00 ora_mmnl_PROD
oracle 14965 14942 0 21:15 ? 00:00:00 oraclePROD (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 14988 5989 0 21:17 pts/3 00:00:00 grep PROD
如果在$ORACLE_HOME/dbs目錄下無參數文件,啟動實例是現象如下:
[oracle@secdb1 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Proction on Wed Mar 5 21:21:19 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/proct/10.2.0/db_1/dbs/initPROD.ora'
SQL> quit

參數尋找的優先順序 spfileSID.ora----initSID.ora

在該階段,可以進行資料庫的創建、控制文件的創建

2、mount,在該階段,啟動條件是需要有控制文件,如果控制文件丟失或者損壞,啟動將會報錯。此時系統會打開控制文件、檢查數據文件、日誌文件的名稱和位置,
但此時不檢查文件到底是否存在不存在

mount之前:
SQL> select * from v$controlfile;
no rows selected

SQL> select * from v$datafile;
select * from v$datafile
*
ERROR at line 1:
ORA-01507: database not mounted
mount之後

SQL> alter database mount;
Database altered.
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD/disk1/control01.ctl
/u01/app/oracle/oradata/PROD/disk2/control02.ctl

SQL> select file#,name from v$datafile;

FILE# name
--------------------------------------------------------------------------------
1 /u01/app/oracle/oradata/PROD/disk1/system01.dbf
2 /u01/app/oracle/oradata/PROD/disk1/undotbs01.dbf
3 /u01/app/oracle/oradata/PROD/disk1/sysaux01.dbf
在該階段,可以進行資料庫的完全恢復、修改資料庫的歸檔模式、移動和重命令數據文件
SQL> archive log list ---查看資料庫歸檔模式
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/proct/10.2.0/db_1/dbs/arch
Oldest online log sequence 3
Current log sequence 5

SQL> alter database archivelog; ---修改成歸檔模式
SQL> alter database noarchivelog;---修改成非歸檔模式

如果控制文件丟失,系統報錯,現象如下:

SQL> startup mount
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 1219184 bytes
Variable Size 100664720 bytes
Database Buffers 209715200 bytes
Redo Buffers 2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info
3、open階段,該階段主要是打開數據文件、日誌文件,在打開的過程中對數據文件和日誌文件進行一致性檢查,如果不一致,則SMON進程繼續實例恢復,如果文件丟失,打開失敗。
SQL> alter database open;
Database altered.

--如何數據文件丟下,打開失敗
SQL> startup mount;
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed Size 1219184 bytes
Variable Size 79693200 bytes
Database Buffers 230686720 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/app/oracle/oradata/PROD/disk1/system01.dbf'

4、小結

啟動時分成三個步驟,1、nomount階段,該階段是實例啟動,根據參數文件進行系統分配內存,啟動後台進程。mount階段,根據控制文件來進行數據文件和日誌文件的名稱和位置檢查,把實例和資料庫連接起來。open階段,就是資料庫打開階段,打開是就需要檢查文件是否正常,有沒有發生文件丟失或者不一致的情況,丟失則報錯,不一致則進行實例恢復。

㈥ 如何查找oracle進程

Oracle資料庫查看一個進程是如何執行相關的實際SQL語句

SELECT b.sql_text, sid, serial#, osuser, machine
FROM v$session a, v$sqlarea b
WHERE a.sql_address = b.address;
查詢前台發出的SQL語句.

select user_name,sql_text
from v$open_cursor
where sid in
(select sid from (select sid,serial#,username,program from v$session where status='ACTIVE'));

根據SPID查詢session
SELECT * FROM v$session WHERE paddr IN
(SELECT addr FROM v$process WHERE spid=&spid);

根據SID查詢process
SELECT * FROM v$process WHERE addr IN
(SELECT paddr FROM v$session WHERE sid=&sid);

DBA如何查詢其他用戶所進行的操作
SELECT sql_text
FROM v$sql t1, v$session t2
WHERE t1.address = t2.sql_address
AND t2.sid = &sid;

根據process查詢sql語句

SELECT sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN (
SELECT DECODE (sql_hash_value,0, prev_hash_value,sql_hash_value ),
DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '$processID'))
ORDER BY piece ASC;

其他
執行下列命令語句
sqlplus / as sysdba <<EOF
create tablespace test datafile '/data/test01.dbf' size 10240M;
quit;
EOF

通過ps -ef|grep sqlplus命令得到上面所執行的命令的進程id為:12345
(1)關於v$process
執行下面的SQL是查不到相關的信息:
select * from v$process where spid='12345';
因為這個spid欄位對應的並不是我們用ps命令從系統中查詢到的進程id,而是這個進程執行的當前SQL的進程id,
也就是上面命令中的「create tablespace test datafile '/data/test01.dbf' size 10240M;」所對應的進程id,如果想
通過用ps命令從系統中查詢到的進程id查看對應的信息,那麼必須使用下面語句:
select spid,sid,process,sql_address from v$session where process='12345'
上面sql中的process就是通過ps查看的進程id,而spid就是裡面的sql語句所對應的進程id。
還可以通過上面的sql_address 查看正在執行的SQL語句內容:
select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';

(2)關於v$session
在查詢 v$session 視圖的時候,我們根據command欄位內部表示解碼每一個欄位,當我們需要快速找出他們的 Oracle 系統的內部情況時非常有用。
select
substr(s.username,1,18) username,substr(s.program,1,15) program,p.spid,s.process,
decode(s.command,
0,'No Command',
1,'Create Table',
2,'Insert',
3,'Select',
6,'Update',
7,'Delete',
9,'Create Index',
15,'Alter Table',
21,'Create View',
23,'Validate Index',
35,'Alter Database',
39,'Create Tablespace',
41,'Drop Tablespace',
40,'Alter Tablespace',
53,'Drop User',
62,'Analyze Table',
63,'Analyze Index',
s.command||': Other') command
from
v$session s,
v$process p,
v$transaction t,
v$rollstat r,
v$rollname n
where s.paddr = p.addr
and s.taddr = t.addr (+)
and t.xisn = r.usn (+)
and r.usn = n.usn (+)
order by username

(3)幾個相關的SQL
--查看系統進程對應的信息
select se.saddr,se.sid,se.serial#,p.pid,se.paddr,s.sql_id,s.sql_text
from v$session se ,v$process p, v$sqlarea s
where se.paddr=p.addr and se.sql_address=s.address and se.process='&1'
and se.username is not null

--查看所有的會話
select se.username,se.saddr,se.sid,se.serial#,se.process,s.sql_id
from v$session se,v$sqlarea s
where se.sql_address=s.address

--查看會話對應的sql內容
select se.username,se.process,s.sql_text
from v$session se,v$sqlarea s
where se.sql_address=s.address and s.sql_id='&1'

㈦ linux 下怎麼查看資料庫oracle的具體的配置

1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。

㈧ 如何監控Oracle資料庫中長時間運行的進程

監控Oracle 資料庫中長時間運行進程的兩種方式,通過這些方 法,我們可以監控單條語句的 長時間操作,監控存儲過程的運行進度,甚至自己'生成'進度信息. 關鍵詞:監控進度V$SESSION_LONGOPS 當Oracle 存儲過程運行時間較長時,我們希望客 戶端能了解到它在後台執行的狀況或者進度信息(類 似WINDOWS 安裝軟體時的進度條信息),這樣可以知 道運行在後台的應用進程是否終止或者休眠,更近一 步要求,最好能知道進行到哪一步驟,還有多少時間才 能完成. 簡單到一條SQL 語句的情況,如果執行時間較長, 我們如何得到它的運行狀況?是否後台還在運行?雖 然可以查看SQL 的執行計劃了解它的執行步驟,但如 何知道它運行到哪一個步驟了呢?如何才能估計出它 的合理的較為精確的執行時間呢? Oracle 資料庫前端發出執行命令後,進程在後台 執行,普通開發人員一般無法了解到後台在做什麼,一 般採用的方法是用DBMSOUTPUT.PUT_LINE 來列印出 來,但DBMS—OUTPUT.PUT—LINE 列印的信息受緩沖區 大小限制,如果信息較多就容易溢出,而且如果存儲過 程執行時間較長,只有在其執行完後,這些信息才會打 印出來,這就增加了調試周期,影響了調試效果.有的 開發人員在存儲過程中通過寫日誌表的形式來記錄進 度,但需要COMMIT 後其他進程才能看到這些日誌信 息,而在某些控制結構中(如游標CURSOR 循環)COM— MIT,則很容易引起ORA 一01555 錯誤,造成程序出錯. 下面介紹兩種監控方法. 如何監控單條長語句從ORACLE8 開始,出現一個新的動態視圖:V $SESSION_LONGOPS,從這個視圖可以獲知一些操作 (如全表掃描,並行查詢,RMAN,排序等)的執行進度, 我們先來了解一下V$SESSION—LONGOPS 視圖的一些 重要欄位: 列說明 sID 會話標識 5ERIAL#會話序列號 OPfE 操作的簡短描述 TARG 盯操作的對象,如xx TAR~_DESC目標描述 SOFAR 目前已執行單位數目 ToTAIWORK 總單位數目 UNlTS 單位 START_TIME 開始執行時間 LAST_ UPDATE_TIME 統計數據最後更新時間 TIME_ REMAINING 估計剩餘時間c ELAPSED_SECONDS 已執行時間(秒) MEsSAGE 統計數據匯總信息 USERA^^E 用戶名 ~L_ADDRES5 語句的地址,,用於和V$sql_text 等關聯 語句的hash 地址,用於和V$sql_texlSQLHASH VALUE等關聯 這個動態視圖顯示各個運行時間超過6 程.這些進程包含許多備份和恢復功能,統計數據收集,查詢等. 執行以下語句就可以得到資料庫中各個長時間操 作的進程信息: select'Icfromv$sesslon_ longopswheretime_ re- malnlng>0 我們也可以用圖形化工具查看,如TOAD,OEM中 均可查看長操作進程進度信息. Oracle 自帶的管理工具OracleEnterpriseManager (OEM)提供了圖形化查看長操作的功能,如: 計算機系統應用2007 Quest公司的資料庫管理工具TOAD 也可以看到 長操作信息,如: 表的統計信息. 長時問運行的SQL 語句可以用V$SESSION—LON? 為了能監控到查詢進程執行的進度,必需使用 CBO 優化器並且: 設置TlMED—STATISTICS或者SQL—TRACE 用ANALYZE語句或者DBMS—STAT 包收集相關 108 實踐經驗P 帕cficalExpen GOPS來監控.實際上,長時間運行的存儲過程也可以 監控.那是否任何操作都可以通過這個視圖來監控進 度呢?很遺憾,V$SESSION—LONGOPS 只會報告它認為 耗時長的操作.對於NEsTEDLOOP/UNIQUEINDEX READS/INDEXRANGEScANS 等執行速度很快的操作, 2007 期計算機系統應用由於它們執行一般不超過6 秒,因此將不會出現在V $SESSION—LONGOPS 如何監控自定義存儲過程單條長語句可以用上面的方法監控,Oracle 動生成V$SE.SSION— LONGOPS 記錄.那麼存儲過程中 有許多小操作,如何監控進度呢?其實,我們也可以手 工生成V$SESSION—LONGOPS 記錄,方法是調用DBMS APPLICATION—INFO 包來生成自定義進度信息. 從Oracle7.2 開始,提供了DBMS—APPLICATION— INFo 包,通過調用這個包,應用可以將自己的名字和 動作填寫到V$SESSION 和V$SQLAREA 的MODULE ACTION列中.V$SESSION 列出每個會話的用戶名,操 作系統機器名,終端名,程序名等. 應用可以在執行模塊時設置模塊名和動作名,模 塊名一般是甩戶自定義的.而動作名一般描述模塊中 的當前執行的事務的名字. DBMSAPPLICATION_INFO 包包含以下過程 SET_ MODULE 設置當前運行程序的模塊名 SET__AEl'ION 設置當前模塊的當前動作名 SESSION—LON-在V$SESSIONLONGOPS視圖中 GoPS 插入一行進度信息 SETMODULE過程設置模塊名和動作名: createorreplaceproceredel—cust(v_cust—Id varchar2) begindbms—— application—— info.set— mole(mole—— name=>"delcust". actlon_name=>"deletetablecust)i deletefromcustwherecustld=v_ cusLId; dbms_appllcatlon— Info.seLmole(,); end;以上設置的模塊名和動作名可以通過查詢V $sqlarea 獲取. 如:selectsql—text,mole,actionfromv $sqlareawheremole="del_cust: sql_textmoleadion Deletefr0mcustdel_ custdeletetableoust 1rowselected. SET_SESSION—LONGOPS 過程用於在V$session— longops 中插入一行,開發人員可以調用此過程設置長 時間操作的狀態信息,這樣,任何其他其他會話都可以 看到這個進度信息.如下例所示: declare _info.set_ session— Iongops_ nohint; IdndexnumberdefaultInohlnt: slnonumber;begin forlIn1..8888888888 loop update....; dbms_ appllcaflon— Info.setsesslon_ longops (rlndex=>l_rlndex, slno=>I_slno. op_name=>"updateahugetable. target=>126, target_desc=>'.msgdescription context=>0.sOfar=>j. totalwork=>8888888888. units=>loops endloop;end; 然後,從另一個會話來執行以下語句selectfromv$sesslon_ longopswheretlmere? malnlng>0; 也可以用圖形化工具TOAD 或OEM來查看. 因此,採用本文說明的方法,Oracle 開發人員可以 比較方便的監控長操作進程的進度信息,也可以自己 設置監控信息,來了解後台存儲過程的運行效率.甚 至,可以在存儲過程或SQL 語句提交執行後馬上觀察 其執行進度,如果比較緩慢,則可以中斷其執行,進行 調優,從而縮短調試周期,提高開發效率.

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:742
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372