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

更新于:2020年12月4日

510 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告