如何查看 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';
TYPE | FILE_NAME | BYTES |
DATA | /dbdata/db1/TES/datafile/o1_mf_system_hbl2yz2b_.dbf | 629145600 |
DATA | /dbdata/db1/TES/datafile/o1_mf_sysaux_hbl2z3b9_.dbf | 2918580224 |
DATA | /dbdata/db1/TES/datafile/o1_mf_undo_t1_hbl2z6f0_.dbf | 1038090240 |
DATA | /dbdata/db1/TES/datafile/o1_mf_users_hbl2z70m_.dbf | 15714156544 |
DATA | /dbdata/db1/TES/datafile/o1_mf_admin_hbl4792q_.dbf | 7340032 |
DATA | /dbdata/db1/TES/datafile/o1_mf_team_htpjyqk7_.dbf | 1073741824 |
DATA | /dbdata/db1/TES/datafile/o1_mf_team_htpk0o95_.dbf | 1073741824 |
TEMP | /dbdata/db1/TES/datafile/o1_mf_team_htpjyqbz_.tmp | 1073741824 |
TEMP | /dbdata/db1/TES/datafile/o1_mf_temp_hh2nl8c4_.tmp | 4823449600 |
REDO | /dbdata/db1/TES/onlinelog/o1_mf_4_hh2ng9p5_.log | 134217728 |
REDO | /dbdata/db1/TES/onlinelog/o1_mf_3_hh2ng8rl_.log | 134217728 |
REDO | /dbdata/db1/TES/onlinelog/o1_mf_2_hh2ng875_.log | 134217728 |
REDO | /dbdata/db1/TES/onlinelog/o1_mf_1_hh2ng7o5_.log | 134217728 |
CTL | /dbdata/db1/TES/controlfile/control-01.ctl | |
We will look at the tablespace storage with below 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 创建的用户。
SQL 列出非 Oracle 用户
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