桌面oracle 11g导入多年库的dump备忘

接到客户6G的dump文件。先导入桌面orcale ,imp提示出错,执行impdp后如下

连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

已成功加载/卸载了主表 "test"."SYS_IMPORT_FULL_02"
启动 "test"."SYS_IMPORT_FULL_02": test/******** DIRECTORY=dpdir DUMPFILE=test_14.dmp FULL=y;
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
ORA-02374: conversion error loading table "test"."T_OUTBODY"
ORA-12899: value too large for column DESCRITION (actual: 44, maximum: 40)

ORA-02372: data for row: DESCRITION : 0X'BAF3CAD3BEB528D7F32CB5A5C7FAC2CA2CCAD6D5DBB5FE2CC0'


ORA-02374: conversion error loading table "test"."T_OUTBODY"
ORA-12899: value too large for column DESCRITION (actual: 41, maximum: 40)

ORA-02372: data for row: DESCRITION : 0X'BBFAD3CDC2CBD0BE28CEDE3CC3DCB7E2C8A6484230302D3134'

Import> exit

C:\Users\aibair>sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 星期三 10月 14 16:26:08 2015

Copyright (c) 1982, 2014, Oracle. All rights reserved.

SQL> conn /as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1068937216 bytes
Fixed Size 2260048 bytes
Variable Size 687866800 bytes
Database Buffers 373293056 bytes
Redo Buffers 5517312 bytes
数据库装载完毕。
SQL> alter system enable restricted session;

系统已更改。

SQL> alter system set job_queue_processes=0;

系统已更改。

SQL> alter system set aq_tm_processes=0;

系统已更改。

SQL> alter database open;

数据库已更改。

SQL> alter database character set zhs16gbk;
alter database character set zhs16gbk
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集


SQL> alter database character set internal_use zhs16gbk;

数据库已更改。

SQL> shutdow immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area 1068937216 bytes
Fixed Size 2260048 bytes
Variable Size 687866800 bytes
Database Buffers 373293056 bytes
Redo Buffers 5517312 bytes
数据库装载完毕。
数据库已经打开。
SQL>
SQL> drop tablespace testdb including contents and datafiles cascade constraints ;

表空间已删除。

SQL> create tablespace testdb datafile'C:\test\testdb.DBF' size 7024m autoextend on next 1000m UNIFORM SIZE 128k;

表空间已创建。

SQL> exit
从 Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production 断开

C:\Users\aibair>impdp DIRECTORY=dpdir DUMPFILE=test_14.dmp FULL=y;

Import: Release 11.2.0.2.0 - Production on 星期三 10月 14 16:37:16 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

用户名: test
口令:

连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
已成功加载/卸载了主表 "test"."SYS_IMPORT_FULL_03"
启动 "test"."SYS_IMPORT_FULL_03": test/******** DIRECTORY=dpdir DUMPFILE=test_14.dmp FULL=y;
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入了 "test"."T_OUTBODY" 1.305 GB 25042554 行
ORA-31693: 表数据对象 "test"."C_PROCESSHEAD" 无法加载/卸载并且被跳过, 错误如下:
ORA-02354: 导出/导入数据时出错
ORA-39776: 加载表 "test"."C_PROCESSHEAD" 时出现致命的直接路径 API 错误
ORA-12953: 请求超出了允许的最大数据库大小 11 GB
ORA-31693: 表数据对象 "test"."C_PROCESSBODY" 无法加载/卸载并且被跳过, 错误如下:
ORA-02354: 导出/导入数据时出错
ORA-39776: 加载表 "test"."C_PROCESSBODY" 时出现致命的直接路径 API 错误
ORA-12953: 请求超出了允许的最大数据库大小 11 GB

 //ps:超过Oracle Database 11g Express库最大11GB, 卸掉 后安装oracle 11g R2 继续

SQL> create user test identified by test;

用户已创建。

SQL> grant dba to test;

授权成功。

SQL> drop user scott cascade;

* ERROR 位于第 1 行:
ORA-00604: 递归 SQL 层 1 出现错误
ORA-24005: 必须使用 DBMS_AQADM.DROP_QUEUE_TABLE 删除队列表
需先执行这条语句:alter session set events'10851 trace name context forever,level 2';
 

SQL> create directory dumpdir as 'c:\dump';

目录已创建。

执行之前的导入操作。后出现...

处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX
ORA-39171: 作业出现可恢复的等待。
ORA-01652: 无法通过 16 (在表空间 TEST 中) 扩展 temp 段

//ps:ORA-01652: 是临时表空间占满,检查c:\test\test_14.dbf文件,数据文件已达33G.

使用如下语句a查看一下认谁在用临时段

SELECT 
       sid,
       serial#,
       sql_address,
       machine,
       program,
       tablespace,
       segtype,
       contents 
  FROM v$session se,
       v$sort_usage su
WHERE se.saddr=su.session_addr;

确定TEMP表空间的ts#
SQL>select ts#, name from sys.ts$ ;       

说明: 
temp表空间的TS# 为 3*, So TS#+ 1= 4

查看表空间状态

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
       D.TOT_GROOTTE_MB "表空间大小(M)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
       TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
                     2),
               '990.99') "使用比",
       F.TOTAL_BYTES "空闲空间(M)",
       F.MAX_BYTES "最大块(M)"
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
               ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
          FROM SYS.DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
          FROM SYS.DBA_DATA_FILES DD
         GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 DESC

SQL> create temporary tablespace TEMP3 TEMPFILE 
'c:\test\TEMP3.dbf' size 1000m reuse autoextend on next 200m maxsize 4000m; 
把缺省临时表空间指向这个新建的TEMP3。 
SQL>alter database default temporary tablespace "TEMP3" 删除原有的临时表空间文件和操作系统中的对应物理文件,释放磁盘空间 SQL>drop tablespace temp2 including contents and datafiles;  
再查看表空间状态  
select TABLESPACE_NAME from dba_tablespaces;  
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from 
dba_temp_files; 

当前用户所有表的统计 SELECT *
FROM USER_TABLES order by num_rows desc;

//SELECT * FROM USER_TABLES where table_name like '%PART%' order by num_rows desc;
//select * from (select LNO from t_part order by LNO ) where rownum =1
SELECT COUNT(*) FROM t_part

posted @ 2015-10-14 17:02  facewater  阅读(3380)  评论(0编辑  收藏  举报