如何按Oracle表的修改时间对其排序

如何按Oracle表的修改时间对其排序,oracle,Oracle,我对oracle非常陌生,需要按表的上次修改时间对表进行排序。我想它叫DML,但我不确定。对不起,如果这是以前问过的或不可能做到的 编辑: 我正试图从一个中断的应用程序中获取一些数据。但这个数据库中有600多个表。应用程序仍然使用此数据库。因此,如果我在应用程序中做一些更改。例如,我可以给用户一些权限。然后,我将运行我正在寻找的SQL,并在结果的顶部看到一个被修改的表(其中的数据)。因此,我将了解哪个表包含哪些数据。对不起,我的英语不好。如果您正在查找DML修改: select * from S

我对oracle非常陌生,需要按表的上次修改时间对表进行排序。我想它叫DML,但我不确定。对不起,如果这是以前问过的或不可能做到的

编辑:
我正试图从一个中断的应用程序中获取一些数据。但这个数据库中有600多个表。应用程序仍然使用此数据库。因此,如果我在应用程序中做一些更改。例如,我可以给用户一些权限。然后,我将运行我正在寻找的SQL,并在结果的顶部看到一个被修改的表(其中的数据)。因此,我将了解哪个表包含哪些数据。对不起,我的英语不好。

如果您正在查找DML修改:

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

如果您正在查找DDL修改:

select * from SYS.ALL_TAB_MODIFICATIONS where TABLE_OWNER = 'YOUR_SCHEMA_NAME' order by TIMESTAMP;
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

如果您正在寻找DML修改:

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

如果您正在查找DDL修改:

select * from SYS.ALL_TAB_MODIFICATIONS where TABLE_OWNER = 'YOUR_SCHEMA_NAME' order by TIMESTAMP;
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

你能解释一下你的真正意思吗

什么是“排序表”?您可以对表中的数据进行排序,而不是对表本身进行排序,除非您正在查询(例如)USER_对象,并希望在最后一次_DDL_时间(即该表上次修改(更改)的时间)之前对架构中的表进行排序。例如:

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

如果是别的东西,那是什么?

你能解释一下你真正的意思吗

什么是“排序表”?您对表中的数据进行排序,而不是对表本身进行排序,除非您正在查询(例如)用户对象,并希望在最后一次\u DDL_时间(该表上次修改(更改)的时间)之前对架构中的表进行排序。例如:

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

如果是其他内容,那是什么?

嗯,是的。这不是一项简单的任务。您应该查询所有日期数据类型列的元数据,并检查所有这些列,例如,今天的日期。这是可以做到的,但我想如果您可以访问源代码,它会更简单。例如,如果是Oracle表单,请打开.fmb文件并检查内容表是基于的数据块。它将回答您的问题(即,您将知道哪个表得到更新).Huh,是的。这不是一项简单的任务。您应该查询所有日期数据类型列的元数据,并检查所有这些列,例如,今天的日期。这是可以做到的,但我想如果您可以访问源代码,它会更简单。例如,如果是Oracle Forms,请打开.fmb文件并检查该数据块基于哪个表。这将请回答您的问题(即,您将知道哪个表得到更新)。