centos7安装19c 并定时备份恢复数据

下载oracle19c
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
找到对应版本下载 然后上传到服务器/opt目录下
在这里插入图片描述

进入opt目录

下载依赖包:

wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

安装包 yum localinstall 方式 从本机目录安装软件包 并自动安装相关依赖

yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm

安装完成:

总计:6.9 G
安装大小:6.9 G
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : oracle-database-ee-19c-1.0-1.x86_64                                                                                                  1/1 
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-19c configure
  验证中      : oracle-database-ee-19c-1.0-1.x86_64                                                                                                  1/1 

已安装:
  oracle-database-ee-19c.x86_64 0:1.0-1                                                                                                                  

完毕!

此时 安装完了之后现在只是安装上了oracle软件,但是还没有数据库
我们要创建数据库
在这里创建数据库有两种方式一种是它安装完给的方法执行这个脚本
还有一种是在桌面环境下的终端里执行输入dbca会弹出可视化的安装界面
我们用脚本安装数据

修改配置文件

vim /etc/init.d/oracledb_ORCLCDB-19c

创建并启动oracle实例 等待Oracle数据库执行初始化操作即可

/etc/init.d/oracledb_ORCLCDB-19c configure

增加环境变量

vim /etc/profile.d/oracle19c.sh
# 添加以下内容
export  ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export  PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin
export  ORACLE_SID=ORCLCDB
#使环境变量生效
source /etc/profile

修改oracle 用户密码

passwd oracle

使用Oracle登录进行相关的处理

su oracle

登入oracle 进行相关操作

sqlplus / as sysdba

查看pdb信息

show pdbs

如果重启服务器 启动oracle服务

SQL> startup

启动监听器

cd $ORACLE_HOME/bin

lsnrctl start

如果报错:

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 30-MAR-2022 14:46:36

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
NL-00280: error creating log stream /opt/oracle/product/19c/dbhome_1/network/log/listener.log
 NL-00278: cannot open log file
  SNL-00016: snlfohd: error opening file
   Linux Error: 13: Permission denied

Listener failed to start. See the error message(s) above...

查看目录 /opt/oracle/product/19c/dbhome_1/network/log 是否有权限
修改权限:

chmod -R 777 /opt/oracle/product/19c/dbhome_1/network/log

配置开机自启
需要先修改一下 oracle 的启动脚本配置:

vi /etc/oratab

ORCLCDB:/opt/oracle/product/19c/dbhome_1:N
# 改为
ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y

然后设置一下 数据库的启动命令

vi /usr/bin/oracle.sh  

增加的内容为: 

#! /bin/bash 

#  script  For oracle19c.service

/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start

/opt/oracle/product/19c/dbhome_1/bin/dbstart /opt/oracle/product/19c/dbhome_1

然后设置这个文件的读写权限

chmod 777 /usr/bin/oracle.sh

设置一个 oracle19c.service

vi /etc/systemd/system/oracle19c.service
# 添加以下内容
[Unit]
Description=Oracle19c
After=syslog.target network.target
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment="ORACLE_HOME=/opt/oracle/product/19c/dbhome_1"
ExecStart=/usr/bin/oracle.sh
[Install]
WantedBy=multi-user.target

设置开机自动启动

systemctl enable oracle19c

重启测试

reboot
systemctl status oracle19c

创建用户:
确保再CDB环境下

select name,cdb from v$database;

建用户

create user C##remote identified by 123456789;

配置权限

SQL> grant connect,resource,create indextype,create job,create sequence,create session,create table,create view,create procedure,unlimited tablespace,insert any table,select any table,update any table,delete any table to C##remote;

删除用户

drop user C##REMOTE cascade;

如果删除报 ORA-01940提示 “无法删除当前已连接用户”
处理方式:

# 先锁定用户 unlock 解锁
alter user C##REMOTE account lock;
# 查询进程号
select saddr,sid,serial#,paddr,username,status from v$session where username = 'C##REMOTE';
# 删除对应的进程
alter system kill session'391,2314';
# 在删除用户
drop user C##REMOTE cascade;

注意:
使用navicat链接
sid 添加 ORCLCDB

权限介绍:
(1)Connect 角色,是授予最终用户的典型权利,最基本的权利,能够连接到ORACLE数据库中
(2)Resource 角色,是授予开发人员的,能在自己的方案中创建表、序列、视图等。
(3)DBA角色,是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有所有的系统权限。
unlimited tablespace 如果不给此权限 则不能使用表空间报下边的异常
对于普通用户,如果操作表时报错“[Err] ORA-01950: 对表空间 ‘xxx’ 无权限”,需要执行一下语句

alter user c##sl3 quota unlimited on 表空间名;

expdb数据泵方式备份数据

# 创建目录 存储备份文件
mkdir -p /opt/databack/expdp_dmp
# 赋予777权限
chmod -R 777 databack
# 切换oracle用户
su oracle
# 进入oracle
sqlplus / as sysdba

# 创建dmp导出目录 
create directory expdp_dmp as '/opt/databack/expdp_dmp'
# 查看是否创建成功
select * from dba_directories
# 为创建的目录赋权限 如果用sysdba账户备份则不需要此步 目录名 to 需要赋值的用户名(比如该用户需要备份自己的数据)
grant read,write on directory expdp_dmp to C##remote;
# 退出sqlplus
exit;
# 执行备份 此账号只能备份自己表空间
expdp C##remote/123456789 directory=expdp_dmp dumpfile=C##remote20220331.dmp logfile=C##remote20170417.log

# 恢复数据
impdp C##remote/123456789 directory=expdp_dmp dumpfile=C##remote20220331.dmp

全库导出 使用system用户操作 需在oracle用户下进行

# 切换oracle用户
su oracle
# 使用 sys用户登录sqlplus 操作
ALTER USER SYSTEM IDENTIFIED BY "123456789";
# 退出 使用system用户登录 测试修改是否成功
sqlplus system/123456789@ORCLCDB

导出可有多种方式 system/123456789@ORCLCDB 登录方式 @ORCLCDB 可以不加
1、“full=y”,全量导出导入数据库

# 全量导出
expdp system/123456789 dumpfile=full.dmp directory=expdp_dmp full=y logfile=full.log

# 全量导入
impdp system/123456789 dumpfile=full.dmp directory=expdp_dmp full=y

2、schemas按用户导出 导入

# 导出schemas
expdp system/123456789 schemas=C##remote dumpfile=C##remote.dmp directory=expdp_dmp logfile=C##remote.log

# 同名用户导入,从用户A导入到用户A
impdp system/123456789 schemas=C##remote dumpfile=C##remote.dmp directory=expdp_dmp logfile=impdp.log;

3、按表空间导出

# 查看当前用户默认表空间
select username,default_tablespace from user_users;
# 查看全部表空间
select tablespace_name from dba_tablespaces;
# 查看全部用户
select username from dba_users;

# 按表空间导出
expdp system/123456789 tablespaces=USERS dumpfile=USERS_tablespace220332.dmp directory=expdp_dmp logfile=USERS220332.log

# 导入表空间
impdp system/123456789 tablespaces=USERS directory=expdp_dmp dumpfile=USERS_tablespace220332.dmp logfile=impdp.log

导出表 多个表用逗号 table1,table2

# 导出表 注意:使用用户账号导出自己的表
expdp C##remote/123456789 tables=USER_TABLE dumpfile=USER_TABLE.dmp directory=expdp_dmp logfile=USER_TABLE.log

# 导入表
impdp C##remote/123456789 tables=USER_TABLE dumpfile=USER_TABLE.dmp directory=expdp_dmp logfile=USER_TABLE.log

从A用户中把表table1和table2导入到B用户中

impdp B/passwd tables=A.table1,A.table2 remap_schema=A:B directory=expdp_dmp dumpfile=expdp.dmp logfile=impdp.log;

追加数据

# table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TRUNCATE
impdp system/123456789 directory=expdp_dmp dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log; 

并行操作
可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名,例如:
注意:dumpfile 参数拥有一个通配符 %U,它指示文件将按需要创建,格式将为expCASES_nn.dmp,其中nn 从 01 开始,然后按需要向上增加。

# 多线程导出
expdp system/123456789 dumpfile=full_%U.dmp directory=expdp_dmp full=y  parallel=4 logfile=full212.log

# 多线程导入
impdp system/123456789 dumpfile=full_%U.dmp directory=expdp_dmp full=y  parallel=4 logfile=full212.log

shell脚本 执行定时任务

#!/bin/sh
echo "备份脚本开始启动..."
# 修改服务器编码与oracle一致 防止乱码
export LANG=en_US.UTF-8
export NLS_LANG="AMERICAN_AMERICA".AL32UTF8

# 5天之前日期 用于删除
DELTIME=`date -d "5 days ago" +%Y_%m_%d`

# 今天日期 用于备份
BAKUPPREFIX=`date +%Y_%m_%d_%H_%M_%S`_full
# 设置账号密码
BAKUSER=system
BAKPASS=123456789

DATA_DIR=/opt/databack/expdp_dmp

echo "现在开始进行数据备份..."

expdp $BAKUSER/$BAKPASS dumpfile=$BAKUPPREFIX"%U".dmp directory=expdp_dmp full=y  parallel=4 logfile=$BAKUPPREFIX.log

echo "数据备份结束..."

echo "删除备份数据开始..."

rm -rf $DATA_DIR/$DELTIME*.*

echo "删除备份数据结束...$DATA_DIR/$DELTIME*.*"

echo "备份执行完毕..."

配合crontab使用 执行定时任务

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值