轻松掌握oracle 10g数据库:如何查看数据库信息 (oracle 10g 查看数据库)
轻松掌握Oracle 10g数据库:如何查看数据库信息
Oracle 10g数据库是一种流行的关系型数据库管理系统,广泛应用于企业和组织的数据存储、数据管理、数据分析等领域。了解数据库信息是管理Oracle 10g数据库的基本要求之一。本文将介绍如何轻松掌握Oracle 10g数据库的查看数据库信息方法。
1. 登录Oracle数据库
在开始查看数据库信息之前,首先需要登录Oracle 10g数据库。可以通过SQL*Plus工具或Oracle SQL Developer等基于GUI的工具进行登录。通过SQL*Plus工具登录Oracle数据库的步骤如下:
– 打开命令行界面(Windows系统可以使用“开始”菜单中的“运行”命令,输入“cmd”)。
– 输入以下命令,按Enter键,以系统管理员身份运行SQL*Plus工具:
sqlplus /nolog
– 输入以下命令,按Enter键,连接到Oracle数据库:
conn username/password@database
其中,username和password分别是连接Oracle数据库的用户名和密码;database是Oracle数据库的实例名。
2. 查看数据库版本
查看Oracle数据库的版本信息可以使用以下SQL命令:
SELECT * FROM v$version;
此命令会列出Oracle数据库服务器的版本信息,包括数据库名称、Oracle主机信息、Oracle产品版本、Oracle RDBMS版本、Oracle RDBMS组件版本等。
3. 查看数据库实例信息
在Oracle 10g数据库中,每个数据库都有一个唯一的实例名。可以使用以下SQL命令查看Oracle数据库实例信息:
SELECT * FROM v$instance;
此命令会列出Oracle数据库实例的信息,包括实例名、主机名称、Oracle版本、启动时间、会话ID等。
4. 查看数据库对象
在Oracle数据库中,有多种类型的对象,如表、视图、索引、存储过程等。可以使用以下SQL命令查看数据库中所有的对象:
SELECT object_name, object_type FROM user_objects;
此命令会列出数据库用户拥有的所有对象的名称和类型。
5. 查看表结构
在Oracle数据库中,表是最基本的数据存储结构。可以使用以下SQL命令查看表的结构:
DESCRIBE table_name;
此命令会列出指定表的所有列的名称、数据类型、长度以及是否可以为空等信息。
6. 查看数据库大小
查看Oracle数据库的大小可以使用以下SQL命令:
SELECT sum(bytes)/1024/1024/1024 AS gb FROM dba_segments;
此命令会统计该Oracle数据库中所有数据块的大小,并将其转换为GB单位来显示。
7. 查看数据库监控信息
Oracle 10g数据库提供了很多用于监控和优化数据库性能的工具,如AWR、ASH、ADDM等。可以使用以下SQL命令查看AWR的监控信息:
SELECT * FROM dba_hist_snapshot;
此命令会列出自Oracle数据库启动以来所有的AWR快照信息,包括快照ID、开始时间、结束时间等。
:
通过上述介绍,相信读者已经了解了如何通过SQL命令轻松掌握Oracle 10g数据库的各种信息。当然,此处仅是介绍了一些基本的操作,Oracle数据库还有很多高级技术和优化方法,需要进一步深入学习和研究。
相关问题拓展阅读:
- Oracle10g数据库中闪回表特性剖析
- OracleDatabase10g:闪回版本查询
- 归档模式下怎么查询oracle g归档日志存放的路径?
Oracle10g数据库中闪回表特性剖析
Oracle i Database 推出了闪回查询选项的概念 以便检索过去某个时间点的数据 但它不能闪回 DDL 操作 如删除表的操作 唯一的恢复方法是在另一个数据库中使用表空间的时间点恢复 然后使用导出/导派基入或其他方法 在当前数据库中重新创建表 这一过程需要 DBA 进行大量工作并且耗费宝贵的时间 更不用说还要使用另一个数据库进行克隆 使用 Oracle Database g 中的闪回表特性 它使得被删除表的恢复过程如同执行几条语句一样简单 让我们来看该特性是如何工作的
删除那个表!
首先 让我们查看当前模式中的表
SQL> select * from tab;TNAMETAYPE CLUSTERID
RECYCLETEST TABLE
现在 我们意外地删除了该表
SQL> drop table recycletest;Table dropped
现在让我们来查看该表的状态
SQL> select * from tab;TNAME TAYPE CLUSTERID BIN$ LhcpndanfgMAAAAAANPw==$ TABLE
表RECYCLETEST 已不存在 但是请注意出现新表BIN$ LhcpndanfgMAAAAAANPw==$ 这就是所发生的事情 被删除的表 RECYCLETEST 并没有完全消失 而是重命名为一个由系统定义的名称 它存在于同一个表空间中 具有与原始表相同的结构 如果在该表上定义了索引或触发器 则它们也被重命尘灶谨名 使用与表相同的命名规则 任何相关源(如过程)都失效 原始表的触发器和索引被改为放置在重命名的表 BIN$ LhcpndanfgMAAAAAANPw==$ 上 保持被删除表的完整对象结构
表及其相关对象被放置在一个称为 回收站 的逻辑容器中 它类似于您 PC 机中的回收站 但是 对象并没有从它们原先所在的表空间中删除 它们仍然占用那里的空间 回收站只是一个列出被删除对象目录辩闷的逻辑结构 在 SQL*Plus 提示符处使用以下命令来查看其内容(您需要使用 SQL*Plus 来进行此操作)
SQL> show recyclebinORIGINAL NAME RECYCLEBIN NAMEOBJECT TYPE DROP TIME RECYCLETESTBIN$ LhcpndanfgMAAAAAANPw==$ TABLE : : :
结果显示了表的原始名称 RECYCLETEST 并显示了回收站中的新名称 该名称与我们看到的删除后所创建的新表名称相同 (注意 确切的名称可能因平台不同而不同 )为恢复该表 您所需要做的就是使用 FLASHBACK TABLE 命令
SQL> FLASHBACK TABLE RECYCLETEST TO BEFORE DROP;FLASHBACK PLETE SQL> SELECT * FROM TAB;TNAME TAYPE CLUSTERID RECYCLETESTTABLE
瞧!表毫不费力地恢复了 如果现在查看回收站 它将是空的 记住 将表放在回收站里并不在原始表空间中释放空间 要释放空间 您需要使用以下命令清空回收站
PURGE RECYCLEBIN;
但是如果您希望完全删除该表而不需要使用闪回特性 该怎么办?在这种情况下 可以使用以下命令永久删除该表
DROP TABLE RECYCLETEST PURGE;
此命令不会将表重命名为回收站中的名称 而是永久删除该表 就象 g 之前的版本一样
管理回收站
如果在该过程中没有实际删除表 — 因而没有释放表空间 — 那么当被删除的对象占用了所有空间时 会发生什么事?
答案很简单 这种情况根本不会出现 当表空间被回收站数据完全占满 以至于必须扩展数据文件来容纳更多数据时 可以说表空间处于 空间压力 情况下 此时 对象以先进先出的方式从回收站中自动清除 在删除表之前 相关对象(如索引)被删除
同样 空间压力可能由特定表空间定义的用户限额而引起 表空间可能有足够的空余空间 但用户可能将其在该表空间中所分配的部分用完了 在这种情况下 Oracle 自动清除该表空间中属于该用户的对象
此外 有几种方法可以手动控制回收站 如果在删除名为 TEST 的特定表之后需要从回收站中清除它 可以执行
PURGE TABLE TEST;
或者使用其回收站中的名称
PURGE TABLE BIN$ LhcpndanfgMAAAAAANPw==$ ;
此命令将从回收站中删除表 TEST 及所有相关对象 如索引 约束等 从而节省了空间 但是 如果要从回收站中永久删除索引 则可以使用以下命令来完成工作
purge index in_test _ ;
此命令将仅仅删除索引 而将表的拷贝留在回收站中 有时在更高级别上进行清除可能会有用 例如 您可能希望清除表空间 USERS 的回收站中的所有对象 可以执行
PURGE TABLESPACE USERS;
您也许希望只为该表空间中特定用户清空回收站 在数据仓库类型的环境中 用户创建和删除许多临时表 此时这种方法可能会有用 您可以更改上述命令 限定只清除特定的用户
PURGE TABLESPACE USERS USER SCOTT;
诸如 SCOTT 等用户可以使用以下命令来清空自己的回收站
PURGE RECYCLEBIN;
DBA 可以使用以下命令清除任何表空间中的所有对象
PURGE DBA_RECYCLEBIN;
可以看到 可以通过多种不同方法来管理回收站 以满足特定的需要
表版本和闪回功能
用户可能会经常多次创建和删除同一个表 如
CREATE TABLE TEST (COL NUMBER);INSERT INTO TEST VALUES ( );mit;DROP TABLE TEST;CREATE TABLE TEST (COL NUMBER);INSERT INTO TEST VALUES ( );mit;DROP TABLE TEST;CREATE TABLE TEST (COL NUMBER);INSERT INTO TEST VALUES ( );mit;DROP TABLE TEST;
此时 如果您要对表 TEST 执行闪回操作 那么列 COL 的值应该是什么?常规想法可能认为从回收站取回表的之一个版本 列 COL 的值是 实际上 取回的是表的第三个版本 而不是之一个 因此列 COL 的值为 而不是
此时您还可以取回被删除表的其他版本 但是 表 TEST 的存在不允许出现这种情况 您有两种选择
使用重命名选项
FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST ;FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST ;
这些语句将表的之一个版本恢复到 TEST 将第二个版本恢复到 TEST TEST 和 TEST 中的列 COL 的值将分别是 和 或者 使用表的特定回收站名称进行恢复 为此 首先要识别表的回收站名称 然后执行
FLASHBACK TABLE BIN$ LhcpnoanfgMAAAAAANPw==$ TO BEFORE DROP RENAME TO TEST ;FLASHBACK TABLE BIN$ LhcpnqanfgMAAAAAANPw==$ TO BEFORE DROP RENAME TO TEST ;
这些语句将恢复被删除表的两个版本
警告
取消删除特性使表恢复其原始名称 但是索引和触发器等相关对象并没有恢复原始名称 它们仍然使用回收站的名称 在表上定义的源(如视图和过程)没有重新编译 仍然保持无效状态 必须手动得到这些原有名称并应用到闪回表
信息保留在名为 USER_RECYCLEBIN 的视图中 在对表进行闪回操作前 请使用以下查询来检索原有名称
SELECT OBJECT_NAME ORIGINAL_NAME TYPEFROM USER_RECYCLEBINWHERE BASE_OBJECT = (SELECT BASE_OBJECT FROM USER_RECYCLEBINWHERE ORIGINAL_NAME = RECYCLETEST )AND ORIGINAL_NAME != RECYCLETEST ;
OBJECT_NAMEORIGINAL_N TYPE BIN$ LhcpnianfgMAAAAAANPw==$ IN_RT_ INDEXBIN$ LhcpnganfgMAAAAAANPw==$ TR_RT TRIGGER
在表进行闪回操作后 表 RECYCLETEST 上的索引和触发器将按照 OBJECT_NAME 列中所示进行命名 根据以上查询 可以使用原始名称重新命名对象 如下所示
ALTER INDEX BIN$ LhcpnianfgMAAAAAANPw==$ RENAME TO IN_RT_ ;ALTER TRIGGER BIN$ LhcpnganfgMAAAAAANPw==$ RENAME TO TR_RT;
lishixinzhi/Article/program/Oracle/202311/17794
OracleDatabase10g:闪回版本查询
不需要设置 立即识别对行的所有更改
在 Oracle i Database 中 我们看到它推出了以闪回查询形式表示的 时间机器 该特性允许 DBA 看到特定时间的列值 只要在还原段中提供该数据块此前镜像的拷贝即可 但是 闪回查询只提供某时刻数据的固定快照 而不是在两个时间点之间被更改数据的运行状态表示 某些应用程序 如涉及到外币管理的应用程序 可能需要了解一段时期内数值数据的变化 而不仅仅是两个时间点的数值 由于闪回版本查询特性 Oracle Database g 能够更方便高效地执行该任务
查询对表的更改
在本示例中 我使用了一个银行外币管理应用程序 其数据库含有一个名称为 RATES 的表 用于记录特亏漏行定时间的汇率
SQL> desc rates NameNull?TypeCURRENCY VARCHAR ( ) RATENUMBER( )
该表显示 US$ 与各种其他货币的汇率 在 CURRENCY 列中显示 在金融服务行业中 汇率不但在变更时进行更新 而且被记录在历史中 需要这种方式的原因是银行交易可能在 过去时间 生效 以便适应由于汇款而耗费的时间 例如 对于一项在上午 : 发生但在上午 : 生效的交易 其有效汇率是上午 : 的汇率 而不是现在的汇率
直到现在 唯一的选择是创建一个汇率历史表来存储汇率的变更 然后查询该表是否提供历史记录 另一种选择是在 RATES 表本身中记录特定汇率适用性的开始和结束时间 当发生变更时 现有行中的 END_TIME 列被更新为 SYSDATE 并插入一个具有新汇率的新行 其 END_TIME 为 NULL
但是在 Oracle Database g 中 闪回版本查询特性不需要维护历史表或存储开始和结束时间 使用该特性 您不必进行额外的设置 即可获得某行在过去特定时间的值
例如 假定该 DBA 在销哗正常业务过程中数次更新汇率 ― 甚至删除了某行并重新插入该行
insert into rates values ( EURO ); mit; update rates set rate = ; mit; update rates set rate = ; mit; delete rates; mit; insert into rates values ( EURO ); mit; update rates set rate = ; mit;
在进行了这一系列操作后 DBA 将通过以下命令获得 RATE 列的当前提交值
SQL> select * from rates;
CURRRATEEURO
此搜笑输出显示 RATE 的当前值 没有显示从之一次创建该行以来发生的所有变更 这时使用闪回查询 您可以找出给定时间点的值 但我们对构建变更的审计线索更感兴趣 ― 有些类似于通过便携式摄像机来记录变更 而不只是在特定点拍摄一系列快照
以下查询显示了对表所做的更改
select versions_starttime versions_endtime versions_xid versions_operation rate from rates versions beeen timestamp minvalue and maxvalue order by VERSIONS_STARTTIME /
VERSIONS_STARTTIME VERSIONS_ENDTIMEVERSIONS_XID VRATEDEC PM DEC PM C IDEC PM DEC PM A A UDEC PM DEC PM A B UDEC PMA C DDEC PM DEC PM A D IDEC PMA E U
注意 此处显示了对该行所作的所有更改 甚至包括该行被删除和重新插入的情况 VERSION_OPERATION 列显示对该行执行了什么操作 (Insert/Update/Delete) 所做的这些工作不需要历史表或额外的列
在上述查询中 列 versions_starttime versions_endtime versions_xid versions_operation 是伪列 与 ROWNUM LEVEL 等其他熟悉的伪列相类似 其他伪列 ― 如 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN ― 显示了该时刻的系统更改号 列 versions_xid 显示了更改该行的事务标识符 有关该事务的更多详细信息可在视图 FLASHBACK_TRANSACTION_QUERY 中找到 其中列 XID 显示事务 id 例如 使用上述的 VERSIONS_XID 值 A D UNDO_SQL 值显示了实际的语句
SELECT UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY WHERE XID = A D ;
UNDO_SQLinsert into ANANDA RATES ( CURRENCY RATE ) values ( EURO );
除了实际语句之外 该视图还显示提交操作的时间标记和 SCN 查询开始时的 SCN 和时间标记以及其他信息
找出一段时期中的变更
现在 让我们来看如何有效地使用这些信息 假设我们需要找出下午 : : 时 RATE 列的值 我们可以执行
select rate versions_starttime versions_endtime from rates versions beeen timestamp to_date( / / : : mm/dd/yyyy hh :mi:ss ) and to_date( / / : : mm/dd/yyyy hh :mi:ss ) /
RATE VERSIONS_STARTTIME VERSIONS_ENDTIME
此查询与闪回查询类似 在以上的示例中 开始和结束时间为空 表示汇率在该时间段中没有更改 而是包含一个时间段 还可以使用 SCN 来找出过去的版本值 可以从伪列 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN 中获得 SCN 号 以下是一个示例
select rate versions_starttime versions_endtime from rates versions beeen scn and /
使用关键词 MINVALUE 和 MAXVALUE 可以显示还原段中提供的所有变更 您甚至可以提供一个特定的日期或 SCN 值作为范围的一个端点 而另一个端点是文字 MAXVALUE 或 MINVALUE 例如 以下查询提供那些只从下午 : : 开始的变更 而不是全部范围的变更
select versions_starttime versions_endtime versions_xid versions_operation rate from rates versions beeen timestamp to_date( / / : : mm/dd/yyyy hh :mi:ss ) and maxvalue order by VERSIONS_STARTTIME /
VERSIONS_STARTTIME VERSIONS_ENDTIMEVERSIONS_XID VRATEDEC PMA C DDEC PM DEC PM A D IDEC PMA E U
最终的分析
闪回版本查询随取随用地复制表变更的短期易变数值审计 这一优点使得 DBA 能够获得过去时间段中的所有变更而不是特定值 只要还原段中提供数据 就可以尽情使用 因此 更大的可用版本依赖于 UNDO_RETENTION 参数
lishixinzhi/Article/program/Oracle/202311/17217
归档模式下怎么查询oracle g归档日志存放的路径?
用以下语句就行:
SQL> show parameter db_recovery;
方法1: 以 sysdba 登陆数据库 (一般为数据库所在服务器姿厅判,如果进行了伏如必要的配置,也可以远程)
sqlplus /nolog
connect / as sysdba
archive log list;
便会列出所需的信息
或
show parameter log_archive_dest
方法2: 以可查询 v$parameter 的用户登陆数据库(可远程)
select name, value from v$parameter where name like ‘log_archive_dest_%’ and value is not null and value ‘enable’;
方法3: 以可查询 v$archive_dest 的用户登陆数据库(可远程)
select dest_name, DESTINATION from v$archive_dest where destination is not null;
方法4: 以可查询 v$archived_log 的用户登陆数据库(可远程)
select name from v$archived_log where name is not null and rownum select name from v$archived_log;
NAME
/u01/oracle/flash_recovery_area/ORA10G/archivelog/
2023_02_18/o1_mf_1_15_7myb1ftq_.arc
/u01/派扒禅oracle/尘尘arch/1_16_.dbf
如果没有的话切换一下日志:alter system switch logfile;
其他此启方法:
show parameter log_archive_dest;
show parameter dest
show parameter dest
11g是archivelog list
关于oracle 10g 查看数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器首选后浪云,2H2G首月10元开通。
后浪云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。