Centos7下安装Oracle 11g,并还原Oracle10g数据库备份数据

Centos7下安装Oracle 11g,并还原Oracle10g数据库备份数据

一. 安装ORACLE服务器

1)修改Linux操作系统参数

1. 修改用户的SHELL的限制

输入命令:vim /etc/security/limits.conf

1
2
3
4
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

2.修改/etc/pam.d/login 文件

输入命令:vi /etc/pam.d/login,按i键进入编辑模式,将下列内容加入该文件。

1
vi /etc/pam.d/login
1
2
3
session required /lib/security/pam_limits.so

session required pam_limits.so

3.修改linux内核,

修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fs.file-max = 6815744

fs.aio-max-nr = 1048576

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

要使 /etc/sysctl.conf 更改立即生效,执行以下命令。 输入:sysctl -p

4. 编辑 /etc/profile ,

输入命令:vi /etc/profile,按i键进入编辑模式,将下列内容加入该文件。

1
2
3
4
5
6
7
8
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

2) 创建相关用户和组

作为软件安装和支持组的拥有者。

1
2
3
4
groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle #=>htsc@001

1. 创建数据库软件目录

创建数据文件存放目录,目录的位置

1
mkdir /data/app

更改目录属主为Oracle用户所有,输入命令:

1
chown -R oracle:oinstall /data/app

2.配置oracle用户的环境变量

1
2
3
4
5
6
7
8
9
10
11
su – oracle
cd ~
vi .bash_profile
-------------------------------------------------------------
export ORACLE_HOSTNAME=iZ2gf05w9w7nj80s0yp519Z
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=tzoa
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

oracle用户环境变量生效执行

1
source /home/oracle/.bash_profilee

3). 静默安装Oracle

如果直接解压缩后执行安装命令,会报一堆错误。 所以要提前做很多准备工作

1
./runInstaller -silent -responseFile /data/etc/db_install.rsp -ignorePrereq 

1. 创建并激活Swap

1
2
#检查当前的swap分区情况
free –m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#查看系统当前Swap情况
swapon -s
----------------------------------------------------------------------------
1 Filename Type Size Used Priority
2 /swapfile file 524284 0 -1

#如果未出现输出需要创建激活Swap
--------------------------------------------------
#检查系统看是否有足够空间设置Swap
df -hal
#使用dd命令创建Swap文件
dd if=/dev/zero of=/swapfile bs=1024 count=512k
#格式化Swap
mkswap /swapfile
#激活Swap
swapon /swapfile

2. 安装缺少的依赖

缺少lib依赖,总之缺少哪些就去搜索哪些来安装

1
2
3
rpm -ivh libXp-1.0.2-2.1.el7.x86_64.rpm --nodeps --force
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm
rpm -ivh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm

安装完毕后 oracle netca找不到命令

3. 解压缩安装包

1
2
unzip  linux.x64_11gR2_database_1of2.zip 
unzip linux.x64_11gR2_database_2of2.zip

这里 解压缩后目录为 /data/database

修改安装包目录权限

1
chown -R oracle:oinstall database

创建 /data/etc/ 用来存放静默安装文件·

1
2
mkdir /data/etc/
chown -R oracle:oinstall /data/etc/

4. 静默安装数据库

拷贝修改缺省响应文件

1
2
3
cp /data/database/response/* /data/etc/
su root
chmod 700 /data/etc/*

vim db_install.rsp

修改下列参数,其余保留缺省

1
2
3
4
5
6
7
8
ORACLE_HOME=/data/app/oracle/product/11.2.0
ORACLE_BASE=/data/app/oracle
INVENTORY_LOCATION=/data/app/oracle/inventory
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.oracle.install.db.OPER_GROUP=dba
oracle.install.db.OPER_GROUP=dba
:wq

编辑保存后退出后使用响应文件安装数据库

1
2
3
su oracle
cd /data/database
./runInstaller -silent -responseFile /data/etc/db_install.rsp -ignorePrereq

中间会暂停提示切换root用户执行两个脚本, 这时候可以再打开一个远程端口用root用户执行两个脚本

1
2
3
su root
/data/app/oracle/inventory/orainstRoot.sh
/data/app/oracle/product/11.2.0/root.sh

切换到oracle安装窗口继续完成安装

5. 静默安装监听(实例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cp dbca.rsp tzoa_install.rsp
----------------------------------------------------------------------
cp一个dbca.rsp重命名为tzoa_install.rsp文件,编辑如下:
-----------------------------------------------------------------------
#[GENERAL]
#RESPONSEFILE_VERSION = "11.2.0"
#OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "tzoa"
SID = "tzoa"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "tzoa"
SYSTEMPASSWORD = "tzoa"
EMCONFIGURATION = "LOCAL"
SYSMANPASSWORD = "tzoa"
DBSNMPPASSWORD = "tzoa"
#DATAFILEDESTINATION = /data/app/oracle/oradata
#RECOVERYAREADESTINATION=$ORACLE_BASE/flash_recovery_area
STORAGETYPE=FS
CHARACTERSET = "ZHS16GBK"
NATIONALCHARACTERSET= "UTF8"
:wq
----------------------------------------------------------------------------------------------------
su - oracle
dbca -silent -responseFile /data/etc/tzoa_instal.rsp
-------------------------------------------------------------------------------------------------------

重复上面步骤再安装tzty

附:oracle默认系统用户名/密码


用户名 / 密码 登录身份 说明
sys/change_on_install SYSDBA 或 SYSOPER 不能以 NORMAL 登录,可作为默认的系统管理员
system/manager SYSDBA 或 NORMAL 不能以 SYSOPER 登录,可作为默认的系统管理员
sysman/oem_temp sysman 为 oms 的用户名
scott/tiger NORMAL 普通用户
aqadm /aqadm SYSDBA 或 NORMAL 高级队列管理员
Dbsnmp/dbsnmp SYSDBA 或 NORMAL 复制管理员

4) 登陆启动ORACLE

1. 启动Oracle实例

1
2
3
4
5
6
su oracle
source /home/oracle/.bash_profile
sqlplus / as sysdba
Connected to an idle instance.
SQL> startup; //startup mount; 一般自动装载数据库,未装载加mount shutdown
ORACLE instance started.

命令 说明 用户是否可以访问
startup nomount 启动实例不加载数据库 不能
startup mount 启动实例加载数据库不打开数据库 不能
startup 启动实例,加载数据库,打开书库看, 可以
STARTUP RESTRICT 成功打开数据库但是只允许dba访问 可以
STARTUP FORCE 数据库挂起时候,强制启动
SHUTDOWN IMMEDIATE 常用方式,快速,干净关闭
SHUTDOWN TRANSACTIONAL 等待事务完成之后关闭
SHUTDOWN ABORT 数据库遇到问题,需要立即强制关闭

2. 查看修改服务名

1
2
3
4
5
6
7
8
9
10
su oracle
cd ~
source .bash_profile
sqlplus / as sysdba

SQL>show parameter service_name; //查看当前service
SQL>alter system set service_names='tzoa,tzty'; // #原来正确的修改方式是这样的,service_names 复数嘛, 用,分隔开多个service_name
SQL>exit
lsnrctl service; //查看验证修改是否成功?
----------------------------------------------------------------

3. 创建表空间

1
2
3
4
5
6
7
//登陆oracle 并且bash生效
sqlplus / as sysdba
SQL>select name from v$datafile;
----------------------------------------------------
先查一下表空间文件存储位置后面
----------------------------------------------------
SQL>create tablespace sw_data datafile '/data/app/oracle/oradata/tzoa/tzoa.dbf' size 512M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
参数 说明
sw_data 表空间名称, 这个最好与旧系统表空间名一致,否则创建索引会出错。
‘/data/app/oracle/oradata/tzoa/tzoa.dbf’ 表空间物理文件名

删除修改表空间

1
2
3
4
//删除表空间
drop tablespace swccnp including contents;
//修改用户默认表空间
ALTER USER cmsdevor DEFAULT TABLESPACE TZORADB1;

4. 创建用户分配表空间

1
2
3
4
5
6
7
create user tzoa identified by tzoa default tablespace sw_data  temporary tablespace tzoa_temp;
create user swcc identified by swcc default tablespace sw_data temporary tablespace swcc_temp;
create user swsso identified by swsso default tablespace sw_data temporary tablespace swsso_temp;

grant connect,resource,dba to tzoa;
grant connect,resource,dba to swcc;
grant connect,resource,dba to swsso;

到这里我们就可以使用用户名密码, 远程登陆oracle数据库了,但是登陆后是空数据库,后面我们会从旧数据库导出,并还原到新数据库中

二. 备份还原数据库(imp exp)

1). 备份数据库

1
2
3
4
exp tzoa/tzoa@10.171.251.13:1521/tzoa file=E:\backup\tzoa.dmp
exp swcc/swcc@10.171.251.13:1521/tzoa file=E:\backup\swcc.dmp
exp swsso/swsso@10.171.251.13:1521/tzoa file=E:\backup\swsso.dmp
exp cmsdevor/password@10.171.251.13:1521/tzty file=E:\backup\tzty.dmp

**备份oracle10,需要安装oracle10客户端, 还原到oracle11g 再 安装11g客户端还原数据 **

2)还原数据库

1
2
3
4
imp tzoa/tzoa@10.171.251.13:1521/tzoa file=E:\backup\tzoa.dmp
imp swcc/swcc@10.171.251.13:1521/tzoa file=E:\backup\swcc.dmp
imp swsso/swsso@10.171.251.13:1521/tzoa file=E:\backup\swsso.dmp
imp cmsdevor/password@10.171.251.13:1521/tzty file=E:\backup\tzty.dmp

三, 错误处理

1). 未激活Swap

Checking swap space: 0 MB available, 150 MB required. Failed <<<< 遇到问题处理

处理方法: 参考创建激活Swap

2). 安装目录权限问题

  • 错误!

CAUSE: The given response file is either not accessible or do not exist.
ACTION: Give a correct response file location. (Note: relative path is not supported)
A log of this session is currently saved as: /tmp/OraInstall2021-09-23_09-39-42AM/installActions2021-09-23_09-39-42AM.log. Oracle recommends that if you want to keep this log, you should move it from the temporary location to a more permanent location.

ORA-39002: invalid operation

ORA-39070: Unable to open the log file.

ORA-29283: invalid file operation

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

ORA-29283: invalid file operation

3). ORA-01102

cannot mount database in EXCLUSIVE mode(无法以独占模式装载数据库)

1
2
3
4
5
6
7
8
9
10
11
$ cd $ORACLE_HOME/dbs
$ ls sgadef*
sgadef* not found
ORACLE_HOME
$ ls lk*
$ORACLE_HOME/db_1/dbs/lktzoa
lktzoa

果然,lk<sid>文件没有被删除。将它删除掉

$ rm lk*

4). ORA-00205

error in identifying control file, check alert log for more info : (

1
2
3
4
5
6
7
8
9
10
11
Total System Global Area  608174080 bytes

Fixed Size 1220844 bytes

Variable Size 176164628 bytes

Database Buffers 427819008 bytes

Redo Buffers 2969600 bytes

ORA-00205: error in identifying control file, check alert log for more info : (

切root账户查看共享内存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>ipcs -map
-----------------------------------
------ Message Queues PIDs --------
msqid owner lspid lrpid

------ Shared Memory Creator/Last-op PIDs --------
shmid owner cpid lpid
491520 oracle 27638 29393
524289 oracle 27638 29393
557058 oracle 27638 29393
589827 oracle 27638 29393
622596 oracle 27638 29393
1081349 oracle 29270 29354
1114118 oracle 29270 29354
1146887 oracle 29270 29354
1179656 oracle 29270 29354
1212425 oracle 29270 29354

>ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0xcf39bf04 491520 oracle 660 154
0xf8e315b0 884737 oracle 660 154

** 清楚共享内存段
> ipcrm –s 491520
-----------------------------------------------------------

切换回oralce账户

1
2
3
4
5
6
7
8
9
10
11
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1720328192 bytes
Fixed Size 2214056 bytes
Variable Size 1006634840 bytes
Database Buffers 704643072 bytes
Redo Buffers 6836224 bytes
Database mounted.

挂载成功

5). 解锁 已锁定用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SQL> alter user system account unlock; 
alter user system account unlock
*
ERROR at line 1:
ORA-01109: database not open


SQL> alter database open;

Database altered.

SQL> alter user system account unlock;

User altered.

改密码:

SQL> ALTER USER system IDENTIFIED BY system;