當前位置:首頁 » 服務存儲 » oracle怎麼查庫中存在的存儲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle怎麼查庫中存在的存儲

發布時間: 2022-07-05 12:37:30

sql命令查詢Oracle存儲過程信息

oracle資料庫中,已建立好的存儲過程信息存儲在系統表ALL_SOURCE 中,需要用sysdba身份登錄資料庫,進行查詢操作,SQL命令如下:

SELECTline,textFROMALL_SOURCE
WHERETYPE='PROCEDURE'
ANDNAME='過程名稱'
ANDOWNER='用戶名'
ORDERBYline;

存儲過程分成多行,每一行會存儲為一條數據,所以,查詢出來的會是多行,line表示行號。


ALL_SOURCE 表中還存儲了以下類型信息:

SQL>selectdistincttypefromall_source;
TYPE
------------
TYPE(對象)類型
TYPEBODY類型體
PROCEDURE存儲過程
FUNCTION函數
TRIGGER觸發器
PACKAGE包
PACKAGEBODY包體

② 如何查看ORACLE包體內的存儲過程

1、打開PL/SQL,新建sql窗口

③ 如何查詢oracle庫中已經存在的存儲過程

命令行:

sqlplus / as sysdba
select name from user_source where type='PROCEDURE';
可查看sys用戶下所有存儲過程名字
select text from user_source where name='XXX'
可查看該存儲過程的內容

plSQLdevloper工具:
左側找到『Proceres』,點開之後即可查看當前用戶的所有存儲過程。
右鍵點擊存儲過程,選擇『view』可查看詳細信息

④ 如何查看ORACLE資料庫剩餘空間

1. 查看所有表空間大小
SQL> select tablespace_name,sum(bytes)/1024/1024 || 'M' from dba_data_files
group by tablespace_name;
2. 已經使用的表空間大小
SQL> select tablespace_name,sum(bytes)/1024/1024 || 'M'
from dba_free_space
group by tablespace_name;
3. 所以使用空間可以這樣計算
select a.tablespace_name,total,free,total-free used from
( select tablespace_name,sum(bytes)/1024/1024 || 'M'
total from dba_data_files
group by tablespace_name) a,
( select tablespace_name,sum(bytes)/1024/1024|| 'M' free from dba_free_space
group by tablespace_name) b
where a.tablespace_name=b.tablespace_name;

4. 下面這條語句查看所有segment的大小。
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name
5. 還有在命令行情況下如何將結果放到一個文件里。
SQL> spool out.txt
SQL> select * from v$database;
SQL> spool off

⑤ 怎麼查看oracle里有哪些資料庫,以及資料庫里有哪些表

通過以下方式可以查看oracle里有哪些資料庫,以及資料庫里有哪些表:

1、SELECT * FROM ALL_TABLES;系統里有許可權的表。

2、SELECT * FROM DBA_TABLES; 系統表。

3、SELECT * FROM USER_TABLES; 當前用戶下的表。

⑥ 如何查看Oracle表以及索引的存儲空間

查看錶佔用空間
SELECT SEGMENT_NAME TABLE_NAME
,SUM(BLOCKS) BLOCKS
,SUM(BYTES)/(1024*1024) "TABLE_SIZE[MB]"
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE='TABLE'
AND SEGMENT_NAME=&TABLE_NAME
GROUP BY SEGMENT_NAME;

索引佔用空間
SELECT SEGMENT_NAME TABLE_NAME
,SUM(BLOCKS) BLOCKS
,SUM(BYTES)/(1024*1024) "TABLE_SIZE[MB]"
FROM DBA_SEGMENTS
WHERE SEGMENT_TYPE='INDEX'
AND SEGMENT_NAME=&TABLE_NAME
GROUP BY SEGMENT_NAME;

⑦ 如何查看oracle的存儲過程

使用tode或者Navicat 或者navigtor等連接oracle的工具

找到procere的選項即可查看所有的存儲過程,點擊某個名字可以看到其中的定義

⑧ oracle資料庫數據存儲與數據查詢

單次更新的 SQL 語句:
(只更新 B1 部分)
UPDATE
A
SET
b1 = CASE
WHEN (a16='x' OR a17='x' OR a18='x' OR a19='x') THEN 'x'
WHEN (a16='o' OR a17='o' OR a18='o' OR a19='o')
AND a16!='x' AND a17!='x' AND a18!='x' AND a19!='x' THEN 'o'
WHEN (a16='√' AND a17='√' AND a18='√' AND a19='√') THEN '√'
ELSE '?'
END;

如果上述表建好後,有其它記錄值數據插入到表A的a1,a2,a16,a17,a18,a19,a20,a24,a26,a46欄位中後,要求表A的欄位b1和b2也按照上述規則存儲相應的值,這用sql語句又該怎麼實現呢?

使用觸發器(只更新 B1 部分)

CREATE OR REPLACE TRIGGER TRBeforeInsertA
BEFORE INSERT ON A
FOR EACH ROW
BEGIN
IF :new.a16='x' OR :new.a17='x'
OR :new.a18='x' OR :new.a19='x' THEN
:new.b1 := 'x';
ELSIF (:new.a16='o' OR :new.a17='o'
OR :new.a18='o' OR :new.a19='o')
AND :new.a16!='x' AND :new.a17!='x'
AND :new.a18!='x' AND :new.a19!='x' THEN
:new.b1 := 'o';
ELSIF :new.a16='√' AND :new.a17='√'
AND :new.a18='√' AND :new.a19='√' THEN
:new.b1 := '√';
ELSE
:new.b1 := '?';
END IF;
END;

測試數據.

INSERT INTO A (a16, a17, a18, a19) VALUES ('x','o','o','o');
INSERT INTO A (a16, a17, a18, a19) VALUES ('o','x','o','o');
INSERT INTO A (a16, a17, a18, a19) VALUES ('o','o','x','o');
INSERT INTO A (a16, a17, a18, a19) VALUES ('o','o','o','x');
INSERT INTO A (a16, a17, a18, a19) VALUES ('o','o','o','√');
INSERT INTO A (a16, a17, a18, a19) VALUES ('o','o','√','√');
INSERT INTO A (a16, a17, a18, a19) VALUES ('o','√','√','√');
INSERT INTO A (a16, a17, a18, a19) VALUES ('√','√','√','√');

查詢觸發器正確性
SQL> SELECT
2 a16, a17, a18, a19, b1
3 FROM
4 A;

A16 A17 A18 A19 B1
---- ---- ---- ---- ----
x o o o x
o x o o x
o o x o x
o o o x x
o o o v o
o o v v o
o v v v o
v v v v v

8 rows selected.