如何檢視Oracle資料庫的儲存配置?
問題
你想了解一些關於資料庫的入門資訊。
解決方案
每個Oracle程式設計師/DBA在職業生涯中都會在某個時候繼承其他人已經設定好的資料庫。你需要找到一些關於資料庫的入門資訊來了解更多資訊。
識別主機詳細資訊和資料庫版本
示例
SELECT instance_name,host_name,version,startup_time FROM v$instance
輸出
INSTANCE_NAME HOST_NAME VERSION STARTUP_TIME TESTDB ip-000-00-0-000 19.0.0.0.0 12/AUG/20
接下來,我們將確定構成資料庫的表空間。
示例
SELECT tablespace_name FROM dba_tablespaces ORDER BY tablespace_name;
輸出
TABLESPACE_NAME ------------------------------ RDSADMIN SYSAUX SYSTEM TEAM_DATA TEAM_TEMP TEAM_UNDO TEMP UNDOT1 USERS
接下來,我們將瞭解表空間資料檔案位於磁碟儲存的哪個位置。除了資料檔案外,我們還將瞭解臨時檔案、控制檔案和聯機重做日誌的位置。所有這些資訊都儲存在不同的資料字典檢視中,但我們可以執行UNION操作將它們放在一起。
示例
SELECT 'DATA' as type,file_name,bytes FROM dba_data_files UNION ALL SELECT 'TEMP',file_name,bytes FROM dba_temp_files UNION ALL SELECT 'REDO',lf.member,l.bytes FROM v$logfile lf join v$log l on lf.group#=l.group# UNION ALL SELECT 'CTL',value,NULL FROM v$parameter2 where name='control_files';
型別 | 檔名 | 位元組數 |
資料 | /dbdata/db1/TES/datafile/o1_mf_system_hbl2yz2b_.dbf | 629145600 |
資料 | /dbdata/db1/TES/datafile/o1_mf_sysaux_hbl2z3b9_.dbf | 2918580224 |
資料 | /dbdata/db1/TES/datafile/o1_mf_undo_t1_hbl2z6f0_.dbf | 1038090240 |
資料 | /dbdata/db1/TES/datafile/o1_mf_users_hbl2z70m_.dbf | 15714156544 |
資料 | /dbdata/db1/TES/datafile/o1_mf_admin_hbl4792q_.dbf | 7340032 |
資料 | /dbdata/db1/TES/datafile/o1_mf_team_htpjyqk7_.dbf | 1073741824 |
資料 | /dbdata/db1/TES/datafile/o1_mf_team_htpk0o95_.dbf | 1073741824 |
臨時 | /dbdata/db1/TES/datafile/o1_mf_team_htpjyqbz_.tmp | 1073741824 |
臨時 | /dbdata/db1/TES/datafile/o1_mf_temp_hh2nl8c4_.tmp | 4823449600 |
重做 | /dbdata/db1/TES/onlinelog/o1_mf_4_hh2ng9p5_.log | 134217728 |
重做 | /dbdata/db1/TES/onlinelog/o1_mf_3_hh2ng8rl_.log | 134217728 |
重做 | /dbdata/db1/TES/onlinelog/o1_mf_2_hh2ng875_.log | 134217728 |
重做 | /dbdata/db1/TES/onlinelog/o1_mf_1_hh2ng7o5_.log | 134217728 |
控制 | /dbdata/db1/TES/controlfile/control-01.ctl | |
我們將使用下面的SQL查看錶空間儲存。
示例
SELECT f.tablespace_name, TO_CHAR(f.bytes,'99,999,999,999,999') AS allocated_bytes, NVL(TO_CHAR(se.bytes,'99,999,999,999,999'),LPAD('Empty',19)) AS used_bytes, TO_CHAR(NVL(TRUNC((se.bytes/f.bytes)*100,2),0),'990.00') AS percent_used FROM (SELECT df.tablespace_name, SUM(bytes) AS bytes FROM dba_data_files df GROUP BY df.tablespace_name ) f, (SELECT s.tablespace_name, SUM(bytes) AS bytes FROM dba_segments s GROUP BY s.tablespace_name ) se WHERE f.tablespace_name=se.tablespace_name (+) ORDER BY f.tablespace_name;
輸出
ADMIN 7,340,032 131,072 1.78 SYSAUX 2,918,580,224 2,640,117,760 90.45 SYSTEM 629,145,600 565,772,288 89.92 TEAM_DATA 1,073,741,824 Empty 0.00 TEAM_UNDO 1,073,741,824 1,310,720 0.12 UNDOT1 1,038,090,240 74,186,752 7.14 USERS 15,714,156,544 10,962,141,184 69.75
最後,我們將識別使用者——Oracle建立的使用者和非Oracle建立的使用者。
列出非Oracle使用者的SQL
SELECT username, account_status, profile AS security_profile FROM dba_users WHERE oracle_maintained='N' ORDER BY username;
瞭解概要檔案的SQL
SELECT resource_name,limit FROM dba_profiles WHERE profile='DEFAULT';
輸出
CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED IDLE_TIME UNLIMITED CONNECT_TIME UNLIMITED PRIVATE_SGA UNLIMITED FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION NULL PASSWORD_LOCK_TIME 1 PASSWORD_GRACE_TIME 7 INACTIVE_ACCOUNT_TIME UNLIMITED