如何按修改时间对Oracle表进行排序

时间:2019-03-21 07:27:22

标签: oracle

我对oracle非常陌生,我需要按上次修改时间对表进行排序。我猜它叫做DML,但我不确定。抱歉,是之前问过的还是无法做到的。

编辑: 我正在尝试从停产的应用程序中获取一些数据。但是此数据库中有600多个表。应用程序仍使用此数据库。因此,如果我在应用程序中进行一些更改。例如,我可以授予用户一些权限。然后,我将运行要查找的SQL,并在结果顶部看到一个被修改的表(内部数据)。因此,我将了解哪个表包含哪些数据。对不起,我的英语。

2 个答案:

答案 0 :(得分:1)

如果要查找DML修改:

select * from SYS.ALL_TAB_MODIFICATIONS where TABLE_OWNER = 'YOUR_SCHEMA_NAME' order by TIMESTAMP;


如果您正在寻找DDL修改:

select * from SYS.ALL_OBJECTS where OWNER = 'YOUR_SCHEMA_NAME' and OBJECT_TYPE = 'TABLE' order by LAST_DDL_TIME;


如果您只想对表格中的数据进行排序:

select * from YOUR_TABLE order by COLUMN_NAME; -- or multiple column names

答案 1 :(得分:1)

您能解释一下您的真正意思吗?

什么是“排序表”?您对表中的数据进行排序,而不对表本身进行排序,除非您要查询(例如)USER_OBJECTS,并且希望按LAST_DDL_TIME(该表最后一次被修改(更改)的时间)对架构中的表进行排序。例如:

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';

Session altered.

SQL> select object_name, last_ddl_time
  2  from user_objects
  3  where object_type = 'TABLE'
  4  order by last_ddl_time;

OBJECT_NAME                    LAST_DDL_TIME
------------------------------ -------------------
SALGRADE                       19.04.2018 08:15:27
DEPT                           10.12.2018 08:58:24
EMP                            10.12.2018 08:58:25
BONUS                          17.12.2018 07:11:10
EMPLOYEES                      20.12.2018 08:32:22

如果要对表中的行进行排序,则:

SQL> select empno, ename, hiredate
  2  from emp
  3  order by hiredate;

     EMPNO ENAME      HIREDATE
---------- ---------- -------------------
      7369 SMITH      17.12.1980 00:00:00
      7499 ALLEN      20.02.1981 00:00:00
      7521 WARD       22.02.1981 00:00:00
      7566 JONES      02.04.1981 00:00:00

如果还有其他东西,那是什么?