Linux下Oracle数据库导入Windows数据问题汇总

     由于公司最近来了台Linux系统的服务器(CentOS6.4版),所以也就顺便学习了下,在Linux系统下Oracle数据库的各种操作。

数据库数据也要导入到Linux环境下,下面把自己在工作中遇到的问题整理下:

      首先,在Linux环境下把数据库表空间、用户实例等配置好:

      先补充下Linux下进入Oracle数据库的命令:

       这个就推荐一下他人的经验了,就不在自己写了https://www.cnblogs.com/ldybky/p/5176996.html 这里边的常用命令对于初学者还是很有帮助的。本人进入数据库环境还是喜欢一步步来

  #sqlplus

 #输入用户名

 # 密码(非明文,一定要输入正确)

Linux下Oracle数据库导入Windows数据问题汇总_第1张图片

     一、创建临时表空间

          

--查询临时表空间文件的绝对路径。如果需要的话,可以通过查询来写定绝对路径。一般用${ORACLE_HOME}就可以了  
select name from v$tempfile;  
create temporary tablespace NOTIFYDB_TEMP tempfile '${ORACLE_HOME}\oradata\NOTIFYDB_TEMP.bdf' size 100m reuse autoextend on next 20m maxsize unlimited;

     二、创建表空间

      其中tablename是根据自己的需求命名的

      

create tablespace tablename datafile '/home/admin/app/admin/oradata/orcl/tablename.dbf' size 100M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);

     三、 创建用户并授权

       1、username  自定义的用户(之后程序连接数据库时需要的用户)

       2、password   自定义用户密码

       3、tablename   第二步创建的表空间的名字

create user username identified by password default tablespace tablename;
-- 授权
grant dba to tablename;
alter user username quota unlimited on tablename;

    四、 导入数据 

          导入数据是关键了,说明下导入不需要在sql下进行了,输入exit; 回车退出。(不要忘记分号;)

          导入的命令时imp

          1、newuser  第三步中创建的用户名(就是要导入到哪个用户下)

          2、newpw     newuser的密码

          3、orcl          是你创建数据库时候的数据库实例

          4、fromuser   新用户newuser的数据是从哪个旧用户导入的

          5、touser       导入到哪个新用户下

          6、file            要导入的数据库数据文件,绝对路径下

          7、log             把导入的过程及结果记录下来

          

imp newuser/newpw@orcl fromuser=olduser touser=newuser file=/home/backup/backup.dmp ignore=y log=/home/backup/log.txt ;

 

     五、修改Oracle字符集

       其实这个是我的实际操作顺序了,但是发现数据库字符集是不对的,下面就修改下Oracle字符集设置

       

SQL> conn /as sysdba;

SQL>select userenv('language') from dual;

SQL>SHUTDOWN IMMEDIATE

SQL>STARTUP MOUNT

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 INTERNAL_USE US7ASCII;

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP;

SQL>select userenv('language') from dual;

  按着敲命令就ok了。

  六、删除用户

   很多时候天不遂你愿,改变了字符集,之前导入的数据还是乱码,那就只能是删除用户,重新再导入一次数据了,那么删除用户命令:

 

 drop user  username cascade;

当然了,直接使用这个命令时,经常会出现很多错误,最常见就是无法删除当前正在运行中的用户。那就只有先停止进程了。

    1、查看用户的连接状况

--1、先查看用户连接情况
  
    select username,sid,serial# from v$session;

--2、找到要删除用户的sid,和serial,并删除
 
    alter system kill session '105,1398';

--3、删除用户

    drop user username cascade;

--4、如果在drop 后还提示ORA-01940:无法删除当前已链接的用户,说明还有连接的session,可以通过查看
--session的状态来确定该session是否被 kill 了,如下语句查看:

  select saddr,sid,serial#,paddr,username,status from v$session where username is not null;

   status 为要删除用户的session状态,如果还为inactive,说明没有被kill掉。

  七、重新导入

      删除成功后就在进行之前的步骤在来一次。

 

总结:其实后来的第六步和第七是可以避免的,只怪自己考虑的不够全面,导致做了很多无用功。任何一个软件,在安装过程中和安装成功后都要先考虑好字符编码的设置!!

你可能感兴趣的:(数据库)