Orcal 安装,导入导出数据

Orcal 安装,卸载,分配用户,导入数据

你好!这是我第一次 些CSDN发信息,写的 不好大家见谅,安装 Orcal 数据库,以及卸载,分配用户,导入数据中遇到的一些问题,帮大家 汇总一下 。

一. Orcal 安装

  1. 从orcal网站下载orcal11数据库数据库版本,会有俩个解压包

在这里插入图片描述

  1. 把俩个压缩包解压,并解压在同一目录。注意:放在同一个目录下

在这里插入图片描述

  1. 点击database下面的setup.exe,开始安装;

在这里插入图片描述

  1. 首先弹出个黑幕,不用担心,它这是在自检:

在这里插入图片描述

  1. 正是进入安装界面,取消勾选“接收安全更新”,点击【下一步】;

在这里插入图片描述

  1. 点击【是】;

在这里插入图片描述

  1. 【创建和配置数据库】- 安装服务端 【仅安装数据库软件】- 安装客户端 咱们是要安装服务端,所以要选中第一个。

在这里插入图片描述

  1. 默认就可以了-【桌面类】;

在这里插入图片描述

  1. 选择用户,选择【使用WIndows内置用户】;
    在这里插入图片描述

  2. 弹出提示框,选择【是】
    在这里插入图片描述

  3. 选择安装的位置,数据库名称,数据库密码;并且取消勾选【创建为使用容器数据库】;
    注意:Orcl是服务名或者SID,管理口令是全局的管理口令指sys,system 用户密码。此处设置口令要注意,不能是关键字,不能有特殊符号,需要大小写具备!纯数字是可以的,会弹出提示不用理睬。

  4. 弹出提示框,选择【是】;
    在这里插入图片描述
    13.经过一段时间的检测,进入安装界面,点击【安装】即可;
    在这里插入图片描述之后的步骤就不一一介绍了 ,就是按照提示来就可以。
    第一次登陆Orcal 要使用sys ,system 账号

二.Orcal导入数据库

此处我要导入的是.dmp 的文件 ,那么想要导入数据库内,这时候分两种形式,一种是imp导入,一种是impdp 导入。具体使用那种这要根据导出dmp数据时选用了 那种导出方式。 IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
注意:EXP不会导出空表(可能会对存储过程有影响)
首先进入命令行操作
1.exp/imp导出/导入数据

--exp导出数据 
exp 用户名/密码@OracleDB file=D:\DBBackUp\oracleExp.dmp log=D:\DBBackUp\oracleExp20161103.log
 --imp导入数据 imp 用户名/密码@OracleDB file=D:\DBBackUp\oracleExp.dmp log=D:\DBBackUp\oracleImp20161103.log FULL=y;
 /* 
 说明:CCENSE/CCENSE@OracleDB --->用户名/密码@数据库实例 file="本地路径+需要导入/导出的dmp文件全称" log="日志文件" FULL=y;
  */

当前用户具备的权限
–给当前用户追加connect,resource,dba [非必须] grant connect,resource,dba to CCENSE;

数据导出:
 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
   exp system/manager@TEST file=d:\daochu.dmp full=y 
 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 
 将数据库中的表table1 、table2导出 
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
   上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
   不过在上面命令后面 加上 compress=y  就可以了 
数据的导入
将D:\daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST  file=d:\daochu.dmp
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
将d:\daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)

2.expdp/impdp导出/导入数据
使用impdp命令,需要在oracle数据库服务器操作:
使用sqlplus或者Oracle客户端(PL/SQL) 链接到相应的Oracle数据库实例(进行下面第一,第二两步骤的操作)

   一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create directory dpdata1 as 'd:\test\dump';
      (查看服务器上若没有存在d:\test\dump目录,则手动新建,把dmp备份文件放到d:\test\dump目录下面)

二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

select * from dba_directories;
--expdp导出数据
 expdp CCENSE/CCENSE@OracleDB directory = "dpdata1" dumpfile ="oracleExpdp.dmp" logfile = oracleExpdp20161103.log
 --impdp导入数据 
 impdp CCENSE/CCENSE@OracleDB directory="dpdata1" dumpfile="oracleExpdp.dmp" logfile = oracleImpdp20161103.log FULL=y;
  /* 
  说明:CCENSE/CCENSE@OracleDB --->用户名/密码@数据库实例 directory="在步骤一中创建的逻辑目录" dumpfile="需要导入/导出的dmp文件全称" logfile="日志文件" FULL=y; 
  */

常用sql

--其他SQL --表空间[10G]和临时表空间[1G] /*表空间*/ 
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name;
 /*临时表空间*/
     select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
  -- 查看端口是否被占用
     netstat -aon|findstr "1522"
  -- 查看监听状态,启动监听,关闭监听
     lsnrctl status LISTENER2 
     lsnrctl start LISTENER2 
     lsnrctl stop LISTENER2

imp 只导入数据,不导入表结构,在命令里加上ignore=y就可以了 ignore=y相当于,如果没有的表,创建并倒入数据,如果已经有的表,忽略创建的,但不忽略倒入。在使用IMP导入并使用ignore=y参数时,Oracle根本不检查要导入的数据结构和现存在数据库中表的结构是否相同 exp 命令导出表结构,不导出表数据。只需在命令行里加一个参数rows=n即可。表示不导出表数据

实际导入会遇到一些错误:
(1) 只有 DBA 才能导入由其他 DBA 导出的文件 ,这是指数据库用户权限不够
(2) 必须指定 FULL=Y 或提供 PROMUSER/TOUSER 或 TABLES 参数 。这是由于oracle不知道你到底要导入多少数据,比如:全部还是具体到某几张表,所以我们需要明确指定导入的数据表
解决方案: 在file 前面加上 full=y 全库导出,或者指定表名tables=(tableName,tableName1) 即可,比如:
imp scott/tiger@orcl full=y file=D:\database.dmp;
imp scott/tiger@orcl file=D:\database.dmp tables=(tb1,tb2);
(3)在导入数据的过程中可能会遇到 数据表已经存在的现象,可以同ignore=y 忽略掉,比如: imp scott/tiger@orcl ignore=y file=D:\database.dmp;
但是如果表结构发生变化,添加了唯一索引等等可能出现的问题,这一方法就不是很好了,可以考虑删除该用户之后,重建该用户信息,这样子就可以完整的导入数据了。

三.Orcal导入数据库常遇到错误

Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务

在连接数据库的时候,有时会遇到一个“ORA12514:监听程序当前无法识别连接描述符中请求的服务”的错误,这个错误其实就是数据库动态注册(关于动态注册会在稍后讲解)不生效,导致监听器无法识别客户端连接符中提供的服务名,从而拒绝建立数据库连接时报的错误信息,所以就需要对监听器配置做修改。

在这里,还需对问题进行细化,有时候可能会发现,在刚开启监听器的时候会发生这个错误,但过了一会再进行连接就不会报错,这其实是因为动态注册需要时间,而刚开启监听器时,数据库还未注册到监听器,导致报错,这种情况不在本文讨论范围内。

listener.ora文件存放在$ORACLE_HOME/network/admin(以我的Oracle11为例就是D:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN),这个文件存放的就是监听器的配置,监听器在启动时会读取该文件,我们先来了解一下这个文件。

该文件的大概配置如下图

上图中,SID_LIST_LISTENER参数就是数据库注册,动态注册或是静态注册(注册就是将数据库作为一个服务注册到监听器。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库,动态注册就是在监听器配置文件中不明确的声明数据库实例和服务名,而是在数据库启动时才由数据库自动注册到监听器,静态注册就是在监听器配置文件中明确声明数据库实例和服务名。),LISTENER参数就是监听器的配置,其中,PROTOCOL参数是协议名,一般为TCP,HOST参数是地址,可以写IP地址、服务器名、localhost、127.0.0.1,PORT参数是端口号,默认为1521。

既然是因为动态注册引起的问题,那么最简单的解决方法自然是由动态注册改为静态注册,如下图
在这里插入图片描述
红线框内的就是静态注册,SID_NAME参数是数据库实例名,GLOBAL_DBNAME参数是全局数据库名(在配置客户端的本地服务名时“服务名”要与全局数据库名一致),配置好后,重启监听器,就可正常连接了。

修改为静态注册看起来虽简单,但也有不足之处,首先,要修改为静态注册需对配置文件和参数较为熟悉,否则很有可能会配置错误,其次当参数的值有所改变时必须重新修改配置才行。

还有一种方法就是修改host参数的值,host参数可以有四种值:IP地址、服务器名、localhost、127.0.0.1,由于可取值变多了,导致了解决办法也随着导致出现问题的原因而多样化了起来,各种情况都可能有不同的解决办法,可以在这四个值之间尝试修改,需要注意的是,当采用localhost和127.0.0.1时,客户端的本地服务名不能使用IP地址和服务器名进行配置,否则会报“ORA12541:无监听程序”的错误,还有就是修改之后要重启监听器

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值