如何查看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