Oracle11g数据库软件安装
下载地址(2024年12月16日亲测有效,不排除Oracle后续调整目录结构导致url失效)
https://www.oracle.com/partners/campaign/112010-win64soft-094461.html
下载这两个压缩文件,并把它解压到一个文件夹里,这样就形成了一个完整的Oracle安装包

1)运行安装程序setup.exe,

2)选择“基本安装”,去掉接收邮件勾选,

不选择创建启动数据库,点击下一步:


以下步骤全部进行默认操作。


选择或者输入安装的目录;



配置Oracle监听
Windows搜索里搜Oracle Net Confi就能把它搜出来,全部默认下一步,直到完成

数据库软件安装完成。
在这个时候,监听应该已经起来了,可以看一下服务里面没有Listener结尾的Oracle服务在运行,如果没有,后面会报错的,这里必须要把Oracle服务启动起来,需要你手动起一下,从Oracle安装目录的app目录下,搜LISTENER.ORA,找到两个文件运行一下就可以了,具体百度一下,这里我有点忘记了,后面会补充。也可以在Net Manager里检查一下监听程序的计算机名和端口
创建一个新的Oracle实例(创建一个新的数据库)
打开DatabaseConfiguration Assistant

2.2 创建数据库的配置步骤


选择定制数据库

创建的全局数据库名写ORCL(SID自动生成)


用户密码统一为orcl(也可以是别的,自己定)



如果你是本地开发用,那么只保留着一个就可以,如果你是服务器部署生产环境,全部都需要勾选

“内存”标签页中选择“典型”,百分比输入60(意思就是Oracle占用系统物理内存的60%)-80之间的数字,最好不要超过80

如下图,修改两个初始化参数:processes和sessions。两个参数的关系应该是sessions=processes*1.5+22(这里Oracle10G和Oracle11G不一样)。Processes的取值表示最大同时连接到oracle的连接数。取值设置可以实际值情况设置,一般设置为300基本够用,默认设置为150。设置完成后,点击“关闭”按钮返回主窗口。在主窗口中点击“下一步”按钮。

(非必须)创建一个名称为:indx 的表空间。说明:创建index时以后存放索引能后用到。大小设置为1024!截图时候我忘了改了
这里创建什么样的表空间,主要是根据你要还原的dmp数据库文件里的内容决定的,如果没有表空间,还原的时候会报错,这里如果实在不清楚需要什么表空间,可以先过,后面手动创建也是可以的,怎么建后面有说明

最后一步

1.2 (非必须)Oracle11g如果无法导出空表的修改,这个很重要!!!!
11G中有个新特性,当表无数据时,不分配segment,以节省空间,但是导致备份数据库的时候,空表无法被导出。解决方法:
1、还没还原dmp时,打开cmd,输入sqlplus,使用system账号登陆,密码是上面设置的,并在命令行中执行:
alter system set deferred_segment_creation=false;
看到如下图所示即可,也可以执行命令查询更改结果:
show parameter deferred_segment_creation;

2、如果你已经导出并且原库已经删掉了,如何补救?
使用dba帐号登录(可以使用plsql或PB),执行下面的sql:
select 'alter table '||table_name||' allocate extent;' from user_tables where tablespace_name='USERS';
这个可以获得一批sql,想办法执行这一批sql就修正了。
数据库备份
这里介绍两种备份方式:exp和expdp,注意用exp备份的只能用imp还原,用expdp备份的只能用impdp还原。
在还原之前
①客户端备份
如果Oracle在远程服务器上,而你要从你本地把数据库备份下来,就只能用exp命令
exp 用户名1/密码@192.168.XX.XX:1521/数据库实例名 file=F:\路径\文件名.dmp owner=‘用户名2’
注意第一个用户名1是由哪个用户导出,第二个用户名2是导出哪个用户底下的数据
例如:
exp testuser/12345@192.168.0.0:1521/orcl file=F:\bak\xxxbak.dmp owner='testuser'
这个命令需要用管理员模式下的命令提示符执行,不需要连接sqlplus
②服务器备份
如果你可以在Oracle服务所在的服务器进行备份,那么可以使用exp也可以使用exdp,exdp会更快一些,在备份一些超大库的时候用这条命令好一些,它不可以在远程客户端使用。
先保证你已经创建的用于存放备份的文件夹,例如D:\bakData,然后登录sqlplus执行
create directory bakData as 'D:\bakData';
然后再执行下面看是否设置成功,这个bakData后面备份命令会引用
select * from dba_directories;
如果你不是用的管理员用户,记得给用户加一下权限,这个权限在还原用户的时候也要加上
grant read, write on directory dpdata to 非管理员用户名;
接下来执行备份命令既可
expdp system/password@orcl directory=bakData dumpfile=expdpfile.dmp full=y
☆再注意 Oracle11g默认不导出空表,这是个大坑,很可能导出的表不全导致无法还原(RACLE 11g 中有个新特性,当表无数据时,不分配segment,以节省空间)
解决办法是:sqlplus执行
alter system set deferred_segment_creation=false;
执行完看看成了没:
show parameter deferred_segment_creation;
还有一种办法比较笨,就是把每个表插入一条数据再删除,Oracle就不认为它是空表了/滑稽.jpg。
Oracle客户端
这里再说一下Oracle客户端,如果你想从本地操作远程数据库执行一些dba命令或者备份操作,就必需要安装客户端,如果你只是对表数据表结构进行操作那就直接安装例如Dbever之类的工具就可以。
安装客户端之后它可能会导致一系列Oracle连接不上的问题,例如oci.dll文件过低、Navicat用32位但是Oracle装的64位,我们本地测试的话,可以从远程服务器上下载相对应的oci文件,并从Navicat里指定。
远程连接服务器的Oracle时,需要在服务器上专门安装一个Oracle客户端,注意不要用解压版的。
还原数据库(如果你在公司会经常用到,自己用可以跳过)
首先此步的应用场景是:你的项目经理给了你一个dmp文件,让你还原到你的电脑上
3.1
3.1.1 打开sqlplus
(windows键+R,输入sqlplus,回车,即可打开)
3.1.2 登录system用户
用户名:system,密码:orcl(上面第5步时候设置的)
3.1.3 最终创建用户
sqlplus system/orcl@ORCL登录后复制以下SQL语句到上图的命令框,创建NGUSER用户,运行完成请多敲几下回车确保语句全部执行完成,请务必确保用户名为"大写"且不要用Navicat等其他工具创建

创建用户之前,登录system用户的时候需要指定实例,不然创建的用户没有办法登录,会提示用户密码无效!
这里我加了引号,因为我发现有时候不加引号创建的用户不能访问,如果报错可以把引号去掉。
这里加的用户权限是比较全的,是为了防止在还原数据库过程中因权限不够导致报错。
CREATE USER "用户名" PROFILE "DEFAULT" IDENTIFIED BY "9003" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT CREATE ANY TABLE TO "用户名";
GRANT UNLIMITED TABLESPACE TO "用户名";
GRANT "CONNECT" TO "用户名";
GRANT "RESOURCE" TO "用户名";
GRANT CREATE ANY VIEW TO "用户名";
GRANT dba TO "用户名";
3.2 导入dmp文件
管理员身份运行cmd(windows键+R弹出后输入cmd即可)
打开后复制以下语句到输入框:
imp NGUSER/9003@ORCL full=y file=数据库备份文件路径(包含文件名) ignore=y;
例如(具体请根据dmp文件所在盘符和文件名决定):impNGUSER/9003@ORCL full=y file=F:\ldyk20200516init.dmp ignore=y;
这里如果还原时提示表空间不存在,这里再说明一下如何创建表空间
create tablespace 表空间名 datafile 'D:\APP\xxx\ORADATA\ORCL\表空间名.dbf' size 1024M;
查询表空间
SELECT tablespace_name, file_name FROM dba_data_files WHERE tablespace_name = '表空间名';
3.2.1 导出数据库(数据库备份)
exp 用户名1/密码@192.168.XX.XX:1521/数据库实例名 file=F:\路径\文件名.dmp owner=‘用户名2’
注意第一个用户名1是由哪个用户导出,第二个用户名2是导出哪个用户底下的数据
☆再注意 Oracle11g默认不导出空表,这是个大坑,很可能导出的表不全导致无法还原(RACLE 11g 中有个新特性,当表无数据时,不分配segment,以节省空间)
解决办法是:sqlplus执行
alter system set deferred_segment_creation=false;
执行完看看成了没:
show parameter deferred_segment_creation;
还有一种办法比较笨,就是把每个表插入一条数据再删除,Oracle就不认为它是空表了/滑稽.jpg。
3.3注意事项:
3.3.1.如果导入过程中出现问题需要重新导入
请删除用户(删除用户和用户底下所有的数据):
打开cmd(windows键+R,输入cmd即可打开),
输入:sqlplus system/orcl@实例名 (这个实例名一般是ORCL,也可以是其他的,看你想删哪个)
复制以下语句到命令框:
drop user 用户名 cascade;
然后重新执行步骤2.1的创建用户和授权语句,完成后再导入dmp文件
如果提示“无法删除当前连接的用户”怎么办?
select saddr,sid,serial#,paddr,username,status from v$session where username = ‘要删除的用户名’;
alter system kill session ‘11,1132’;(第一个是sid,第二个是serial#)
alter system kill session ‘14,2677’;
alter system kill session ‘71,6766’;
3.3.2. **如果导入过程中提示: "***值太大,无法执行"
这就是没有设置ZHS16GBK的原因,和3.1.1,3.1.2一样,打开sqlplus,登录后先确定连接的数据库是刚刚创建的ORCL,然后登录有dba权限(最高权限)的用户(system.),依次执行以下命令语句
conn /as sysdba;
shutdown immediate;
startup mount;
alter system enable restricted session;
alter system set JOB_QUEUE_PROCESSES=0;
alter system set AQ_TM_PROCESSES=0;
alter database open;
alter database character set internal_use ZHS16GBK;
alter database character set ZHS16GBK
shutdown immediate;
startup;
执行完成之后再次进行导入dmp文件(步骤3.2)就可以了
3.3.3 如果安装完Oracle客户端,Oracle登不上了咋整?
打开环境变量,找到Path并编辑,将client移到原来的dbhome下面即可
结尾标语:本文档是Oracle11g的安装,与其他版本略有区别,请务必确认自己的版本为Oracle11g
本文详细介绍了Oracle11g数据库软件的安装流程,包括创建新实例、配置数据库参数、创建表空间,以及如何还原和导出数据库。特别关注了Oracle11g的特性,如空表导出问题的解决方案。

1822

被折叠的 条评论
为什么被折叠?



