如何查看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
CTL
/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创建的用户。

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