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