问题起源:公司一个同事有一个很急的 BUG 需要调,但是服务器上的数据库(Oracle)非常不稳定,总是断,所以被逼无奈,打算复制一份到本地,并且电脑是老电脑,也并不知道装没装 Oracle。以下是全部检查以及解决步骤:
1、检查电脑是否安装 Oracle:
任务管理器 --> 进程:检查是否有 oracle.exe?若有,则有 Oracle,若无,则无 Oracle。
(其实也可以通过 dos 进行连接什么的,但是假如没装 Oracle 的话,sqlplus、conn...命令都不识别,服务倒是可以当做一个参考。)
2、不知道 Oracle 账号密码:
win+R 进入 dos:
- CONN SYS/SYS_WORD AS SYSDBA;
- ALTER USER SYSTEM IDENTIFIED BY "SYSTEM"
3、创建表空间:
create tablespace FAMILYDOCTOR datafile 'F:\app\Administrator\oradata\orcl\FAMILYDOCTOR.DBF' size 100m;
4、创建用户:
create user base identified by base default tablespace FAMILYDOCTOR;
5、赋予用户权限:
grant connect,resource to base;
6、导出数据
暂时用的是 navicat 工具导出数据,实际上是导出纯数据,即一个 .sql 文件。
用 navicat 的一个好处就是不用登陆服务器,可以直接在本地电脑直接导出数据。
7、导入数据
点击 "转储 SQL 文件" 选项上面的 "运行 SQL 文件" 选项。
(注意:导出的 sql 文件里面全是服务器的用户名.表名,导入的时候需要注意用户名)
(如果你不想和服务器(导出的 oracle 的用户)用户名一样,则需要修改导出的 .sql 文件里面的用户名,再进行导入)
可能遇到的问题:
第二步:
1、sqlplus 或者 conn 命令不识别:
解决:系统变量path后面加上;F:\app\Administrator\product\10.1.0\db_1\bin
(此路径为 Oracle 安装路径,并且前面必须加上 ";”,以此来分隔前面的环境变量)
(Oracle 安装路径可在我的电脑搜索 product)
Oracle 的目录结构
按照理论来讲,上面的表空间路径和环境变量的路径,前面都是指向这个文件夹,到了这个文件夹之后才分叉,一个是指向 oradata 文件夹,一个是指向 product 文件夹
2、命令不执行,出现12345列表序号:
解决:dos 里面的 sql 结尾主要加 ";”,证明是命令语句并且结束。
第三步:
sql 解析:创建 表空间 表空间名 数据文件 路径 大小
第四步:
sql 解析:创建 用户 用户名 挂上 表空间 表空间名
第五步:
赋予 连接,开发权限 给 用户名
有兴趣的可以到 oracle 数据库环境里面写两条 sql 查询一下看看:
1、select * from role_sys_privs where role like 'CONNECT'; --查询 CONNECT 权限
2、select * from role_sys_privs where role like 'RESOURCE'; --查询 RESOURCE 权限