在Linux下重启Oracle数据库及监听器

方法1:

用root以ssh登录到linux,打开终端输入以下命令:

cd $ORACLE_HOME #进入到oracle的安装目录

dbstart #重启服务器

lsnrctl start #重启监听器

cd $ORACLE_HOME #进入到oracle的安装目录

dbstart #重启服务器

lsnrctl start #重启监听器

———————————–

方法2:

Sql代码

cd $ORACLE_HOME/bin #进入到oracle的安装目录

./dbstart #重启服务器

./lsnrctl start #重启监听器

———————————–

方法3:

(1) 以oracle身份登录数据库,命令:su -oracle

(2) 进入Sqlplus控制台,命令:sqlplus /nolog

(3) 以系统管理员登录,命令:connect / as sysdba

(4) 启动数据库,命令:startup

(5) 如果是关闭数据库,命令:shutdown immediate

(6) 退出sqlplus控制台,命令:exit

(7) 进入监听器控制台,命令:lsnrctl

(8) 启动监听器,命令:start

(9) 退出监听器控制台,命令:exit

二、重启实例:

(1) 切换需要启动的数据库实例:export ORACLE_SID=C1

(2) 进入Sqlplus控制台,命令:sqlplus /nolog

(3) 以系统管理员登录,命令:connect / as sysdba

(4) 如果是关闭数据库,命令:shutdown abort

(5) 启动数据库,命令:startup

(6) 退出sqlplus控制台,命令:exit

 

 

监听文件修改

 

# listener.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME= orcl)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME=orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.42)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /home/oracle/app

Oracle数据泵(Data Dump)错误汇集

Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例,下面总结一些自己使用数据泵(Data Dump)过程当中遇到的问题以及解决方法。都是在使用过程中遇到的问题,以后陆续遇到数据泵(Data Dump)的错误案例,都会补充在此篇。

错误案例1

ORA-39065: DISPATCH 中出现意外的主进程异常错误;ORA-44002: 对象名无效

Windows 平台错误提示:

clip_image001[6]

Linux平台错误提示

clip_image002[6]

解决方法:

[oracle@DB-Server admin]$ oerr ora 39065

39065, 00000, "unexpected master process exception in %s"

// *Cause: An unhandled exception was detected internally within the master

// control process for the Data Pump job. This is an internal error.

// messages will detail the problems.

// *Action: If problem persists, contact Oracle Customer Support.




[oracle@DB-Server admin]$ oerr ora 39097

39097, 00000, "Data Pump job encountered unexpected error %s"

// *Cause: An unexpected, potentially non-fatal error occurred while

// processing a Data Pump job.

// *Action: Contact Oracle Customer Support.

执行$ORACLE_HOME/rdbms/admin目录下面的catmet2.sql,utlrp.sql 两个SQL文件即可解决这个问题。

[oracle@DB-Server ~]$ cd $ORACLE_HOME/rdbms/admin

[oracle@DB-Server admin]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Sep 7 08:24:23 2014

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

Connected to an idle instance.

SQL> @catmet2.sql

SQL> @utlrp.sql

错误案例2

使用expdp/impdp时遭遇ORA-39006: internal error;ORA-39213: Metadata processing is notavailable错误

 

[oracle@DB-Server backup]$ impdp frnt/frnt directory=dum_dir dumpfile=20120420.FRNT_02.dmp tablespaces=TBS_TR_DATA;

Import: Release 10.2.0.1.0 – 64bit Production on Wednesday, 25 April, 2012 14:41:48

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
ORA-39006: internal error
ORA-39213: Metadata processing is not available

 

解决方法:

错误原因如下所示,因为Data Pump不能使用Metadata API, 这个是因为XSL stylesheets 没有正确设置缘故。需要以SYSDBA执行dbms_metadata_util.load_stylesheets

[oracle@DB-Server admin]$ oerr ora 39213

39213, 00000, "Metadata processing is not available"

// *Cause: The Data Pump could not use the Metadata API. Typically,

// this is caused by the XSL stylesheets not being set up properly.

// *Action: Connect AS SYSDBA and execute dbms_metadata_util.load_stylesheets

// to reload the stylesheets.

SQL>exec dbms_metadata_util.load_stylesheets

错误案例3

错误如下所示:

etl@NMS_ODS_NDB1[/jkfile/klbtmp]#expdp userid=username/password@tnsname dumpfile=ref.dmp directory=DUMP_TEST schemas=ref content=all logfile=ref.log

Export: Release 10.2.0.3.0 – 64bit Production on Saturday, 02 March, 2013 10:28:25

Copyright (c) 2003, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

ORA-39002: invalid operation

ORA-39070: Unable to open the log file.

ORA-29283: invalid file operation

ORA-06512: at “SYS.UTL_FILE”, line 475

ORA-29283: invalid file operation

解决方法:

出现这个错误,需要检查DIRECTORY目录,创建DIRECTORY时,ORACLE并不检查操作系统目录是否已经存在

首先检查DIRECTORY目录DUMP_TEST对应的DIRECTORY_PATH,然后检查操作系统下,验证该目录是否存在。

SQL> SELECT * FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME='DUMP_TEST';

OWNER                            DIRECTORY_NAME           DIRECTORY_PATH

------------------------ ------------------------------ -----------------

SYS                                DUMP_TEST              /jkfile/klbtmp/

SQL>

结果检查发现该目录被删除了,创建该目录即可解决问题。

另外一种情况,如果创建DIRECTORY目录时,出现了换行,也会出现上面错误信息,这种错误玩玩很难发现,非常折腾人。所以需要非常细心。

SQL> create directory DUMP_TEST as ‘/jkfile/klbtmp/

‘;

错误案例4

如下所示:

etl@NMS_ODS_NDB1[/jkfile/work/klb]#expdp userid=etl/sunrise@wgods1 dumpfile=ref.dmp directory=DUMP_DIR schemas=ref content=all logfile=ref.log

Export: Release 10.2.0.3.0 – 64bit Production on Saturday, 02 March, 2013 10:50:25

Copyright (c) 2003, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

ORA-31631: privileges are required

ORA-39109: Unprivileged users may not operate upon other users’ schemas

解决方法:

 

主要是etl账号缺少exp_full_database 权限,给etl账号授予exp_full_database 权限后,上述问题解决。

# su – oracle

$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 – Production on Sat Mar 2 10:58:37 2013

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> grant exp_full_database to etl;

Grant succeeded.

 

错误案例5:

etl@NMS_ODS_NDB1[/etl1_cx/etl]expdp etl/sunrise@wgods1 dumpfile=DM.TM_ALARM_LOG.dmp directory=DUMP_DIR tables=DM.TM_ALARM_LOG query=’DATE_CD >=20121201 AND DATE_CD <=20130131′;

LRM-00101: unknown parameter name ‘>’

 

解决方法:

etl@NMS_ODS_NDB1[/etl1_cx/etl]expdp etl/sunrise@wgods1 dumpfile=DM.TM_ALARM_LOG.dmp directory=DUMP_DIR tables=DM.TM_ALARM_LOG query=”DATE_CD \>\=20121201 AND DATE_CD \<\=20130131″;

错误案例6:

 

LRM-00121: ‘DATA_ONLY’ is not an allowable value for ‘compression’。如下所示:

 

etl@NMS_ODS_NDB1[/etl1_cx/etl]#expdp etl/sunrise@wgods1 dumpfile=ref.dmp directory=DUMP_DIR dumpfile=DM.TM_ALARM_LOG201212.dmp tables=DM.TM_ALARM_LOG COMPRESSION=DATA_ONLY query=’DATE_CD >=20121201 AND DATE_CD <=20130131′;

LRM-00121: ‘DATA_ONLY’ is not an allowable value for ‘compression’

 

解决方法:

 

首先查看EXPDP工具的版本,如下所示:

etl@NMS_ODS_NDB1[/etl1_cx/etl]#expdp version

Export: Release 10.2.0.3.0 – 64bit Production on Monday, 04 March, 2013 14:46:47

Copyright (c) 2003, 2005, Oracle. All rights reserved.

Password:

请注意,在ORACLE 10g下 COMPRESSION只有METADATA_ONLY和NONE两个选项,ORACLE 11g下才有DATA_ONLY选项。所以报如上错误。所以在使用前,请注意一下EXPDP工具的版本。

 

错误案例7:

[oracle@DB-Server]$ expdp system/***** TABLES=INVENRTY.INV_STK_HD dumpfile=INV_STK_HD.dmp logfile=1.log DIRECTORY=CUR_DUMP_DIR

Export: Release 10.2.0.4.0 – Production on Sunday, 14 July, 2013 8:27:16

Copyright (c) 2003, 2007, Oracle. All rights reserved.

Connected to: Oracle Database 10g Release 10.2.0.4.0 – Production

ORA-31626: job does not exist

ORA-31637: cannot create job SYS_EXPORT_TABLE_01 for user SYSTEM

ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95

ORA-06512: at “SYS.KUPV$FT_INT”, line 600

ORA-39080: failed to create queues “KUPC$C_1_20130714082716” and “KUPC$S_1_20130714082716” for Data Pump job

ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95

ORA-06512: at “SYS.KUPC$QUE_INT”, line 1606

ORA-00832: no streams pool created and cannot automatically create one

 

解决方法:

这个案例我以前已经介绍过,具体参考我的博客 Expdp 导数错误 ORA-00832

 

错误案例8:

[oracle@testlnx01 u03]$ cd tmp/

[oracle@testlnx01 tmp]$ expdp system/***** directory=DUMPDIR dumpfile=ESCMUSER.dmp schemas=ESCMUSER logfile=ESCMUSER.log

Export: Release 10.2.0.4.0 – 64bit Production on Wednesday, 27 August, 2014 16:30:46

Copyright (c) 2003, 2007, Oracle. All rights reserved.

Connected to: Oracle Database 10g Release 10.2.0.4.0 – 64bit Production

ORA-31626: job does not exist

ORA-31633: unable to create master table “SYSTEM.SYS_EXPORT_SCHEMA_05”

ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95

ORA-06512: at “SYS.KUPV$FT”, line 871

ORA-00959: tablespace ‘TOOLS’ does not exist

 

解决方法:

这个案例有点特别,刚遇到的时候,确实有点莫名其妙,经过苦苦求索、求证后才发现,本来有一个TOOLS的表空间,不知道是哪位头脑发热的人,居然指定SYSTEM用户的默认表空间为TOOLS,但是这个表空间又被人删除了。于是便有了这样一个案例。

clip_image003

SQL> ALTER USER SYSTEM DEFAULT TABLESPACE SYSTEM;

User altered.

修改用户SYSTEM的默认表空间后,问题解决。

expdp/impdp 数据泵导入导出

业务场景:

在工作中,涉及到oracle数据库迁移,使用navicat等其他工具 容易报错,一系列问题很麻烦,今天记录一下操作流程及个人理解(文章参考了很多文档和博客);

EXPDP数据导出

请自行修改目录路径和自定义的表名,否则出现错误很难查找~

一般expdp流程:

一、新建逻辑目录

最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录“D:\oracleData”(务必手动创建此目录),仅仅是进行定义逻辑路径dump_dir;

忘记sys用户密码的可以去下如何修改sys用户密码;

建议使用pl、navicat等oracle操作工具来操作;

登陆后sql执行:

  1. create directory mydata as ‘逻辑目录路径’;
  2. 例如:
  3. create directory mydata as ‘/data/oracle/oradata/mydata’;

二、查看逻辑目录是否创建成功

执行sql:

sql>select * from dba_directories

三、用expdp导出数据

用法及解释:

  1. expdp 用户名/密码@ip地址/实例  [属性]
  2. ip地址不写默认就是本地

userid=test/test            –导出的用户,本地用户!!
directory=dmpfile          –导出的逻辑目录,一定要在oracle中创建完成的,并且给用户授权读写权限
dumpfile=xx.dmp      –导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxx.dmp
logfile=xx.log          –日志文件,如果不写这个参数的话默认名称就是export.log,可以在本地的文件夹中找到
schemas=userxx       –使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别
EXCLUDE=TABLE:”IN(‘T1′,’T2′,’T3’)”     –exclude 可以指定不导出的东西,table,index等,后面加上不想导出的表名
network_link=db_local          –这个参数是使用的dblink来远程导出,需要指定dblink的名称

列出一些场景:

1)导出用户及其对象
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;

2)导出指定表
expdp scott/tiger@orcl tables=emp,dept dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;

3)按查询条件导
expdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp tables=empquery=’where deptno=20′ logfile=expdp.log;

4)按表空间导
expdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=temp,example logfile=expdp.log;

5)导整个数据库
expdp scott/123@127.0.0.1/orcl directory=dump_dir dumpfile=ly.dmp full=y  logfile=expdp.log;

一般用的都是导出整个数据库,本人使用的代码:

  1. //包含所有用户的表、视图、索引等
  2. expdp JCPT/123@127.0.0.1/orcl directory=mydata dumpfile=ly.dmp full=y logfile=expdp.log;
  3. //指定用户的表、视图、索引等
  4. expdp JCPT/123@127.0.0.1/orcl directory=mydata schemas=jcpt dumpfile=ly.dmp logfile=expdp.log;

 

导出完成后:逻辑目录生成了一个 dmp文件;

IMPDP数据导入

在正式导入数据前,要先确保要导入的用户已存在,如果没有存在,请先用下述命令进行新建用户

流程:

一、创建表空间

使用system登录oracle,执行sql

格式: create tablespace 表间名 datafile ‘数据文件名’ size 表空间大小

  1. create tablespace data_test datafile ‘e:\oracle\oradata\test\test.dbf’ size 2000M;
  2. (*数据文件名 包含全路径, 表空间大小 2000M 表是 2000兆)

二、创建用户并授权

格式: create user 用户名 identified by 密码 default tablespace 表空间表;

create user study identified by study default tablespace data_test;

(*我们创建一个用户名为 study,密码为 study, 表空间为 madate-这是在上一步建好的.)

授权给 用户 study     ,执行sql

  1. #给用户逻辑目录读写权限
  2. sql>grant read,write on directory mydata to study;
  3. #给用户表空间权限
  4. sql>grant dba,resource,unlimited tablespace to study;

 

  三、impdp导入

命令在cmd或者控制台输入,不是sql语句

写法:

impdp 用户名/密码@ip地址/实例  [属性]

ip地址不写默认就是本地

注释:

1)导入用户(从用户scott导入到用户scott)
impdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp schemas=scott logfile=impdp.log;

2)导入表(从scott用户中把表dept和emp导入到system用户中)
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp tables=scott.dept,scott.emp remap_schema=scott:system logfile=impdp.log table_exists_action=replace (表空间已存在则替换);

3)导入表空间
impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example logfile=impdp.log;

4)导入整个数据库
impdb system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y logfile=impdp.log;

日常使用的:

  1. 把用户jcpt中所有的表导入到lyxt用户下
  2. impdp lyxt/lyxt123@127.0.0.1/orcl directory=mydata dumpfile=LY.DMP remap_schema=jcpt:lyxt logfile=ims20171122.log table_exists_action=replace

5)追加数据
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp schemas=systemtable_exists_action logfile=impdp.log;

以上是日常工作中实际工作中用到的,希望能够给你得到帮助。