ORA-01220: file based sort illegal before database is open
Cause: A query issued against a fixed table or view required a temporary segment for sorting before the database was open. Only in-memory sorts are supported before the database is open.
Action: Re-phrase the query to avoid a large sort, increase the values of the SORT_AREA_SIZE and/or SORT_AREA_RETAINED_SIZE initialization parameters to enable the sort to be done in memory.
这是由ORACLE数据库引擎返回的一条错误消息,意思是对于必须在数据库打开之前才能完成的操作,在数据库打开之前尝试执行这项操作,以致导致ORACLE数据库引擎不知道它在做什么,因此无法继续处理。
正式的解释及原因是:ORA-01220:非ORACLE数据库打开时,无法使用基于文件的排序。
这种情况最常见的情况比如在Oracle 11g中使用SQL Developer连接数据库,获取相关信息前忘记打开数据库,而将数据库查询出来作为排序依据,此时,为了保证数据安全,ORACLE数据库限制此操作在打开数据库前,将不允许进行排序操作,从而引起此错误。
1.首先,检查当前是否打开ORACLE数据库,如果没有,则需要先打开ORACLE数据库;
2.确保要排序的字段在数据库中的完整性;
3.确保要排序的字段中没有空值;
4.执行排序前先记录当前系统运行的SQL语句,以备不时之需,确保不影响当前在数据库中正常运行的SQL语句;
5.如果依然无法解决,可选择将排序操作转移到另外一个客户机,确保不会影响当前运行的系统功能;
6.使用正常的排序语句进行排序,不要过度使用子查询。