• 你知道什么是Oracle嘛


    Oracle数据简介

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。

    环境准备

    使用CentOS7.9模板机克隆一个新的名为Oracle虚拟机,要求如下

    • 内存至少4096M(4G)
    • 硬盘空间至少20G
    • 交换空间至少2048M (2G)

    虚拟机配置基础环境,修改主机名,分配IP地址

    [root@localhost ~]# hostnamectl set-hostname oracle
    [root@oracle ~]# nmcli connection modify ens33 ipv4.method auto connection.autoconnect yes 
    [root@oracle ~]# nmcli connection up  ens33
    
    • 1
    • 2
    • 3

    查看虚拟机交换空间大小,默认2G,所以仅查看即可

    [root@oracle ~]# grep SwapTotal /proc/meminfo 
    SwapTotal:       2097148 kB
    
    • 1
    • 2

    Oracle默认不支持CentOS,将系统标识改为redhat-7

    [root@oracle ~]# echo 'redhat-7' > /etc/redhat-release		#修改系统标识为redhat-7
    [root@oracle ~]# cat /etc/redhat-release					#查看验证
    redhat-7
    
    • 1
    • 2
    • 3

    修改 /etc/sysctl.conf配置,调整系统内核参数以满足Oracle数据库的要求。

    每个参数具体作用如下(了解):

    • fs.aio-max-nr:用于指定系统异步IO的最大请求数量。
    • fs.file-max:用于指定系统可以打开的文件描述符的最大数量。
    • kernel.shmmni:用于指定系统中共享内存标识符的最大数量。
    • kernel.sem:用于设置信号量的参数,包括信号量数组最大值、单个信号量集中的最大信号量数、按需分配的信号量数组最大值、防止出现死锁的SEMMSL参数。
    • kernel.shmall:用于指定系统中所有共享内存段总共占用的物理页框的数量。
    • kernel.shmmax:用于指定系统中单个共享内存段的最大大小。
    • net.ipv4.ip_local_port_range:用于指定系统分配本地端口的范围。
    • net.ipv4.icmp_echo_ignore_broadcasts:用于禁止系统回应广播ICMP echo请求。
    • net.ipv4.conf.all.rp_filter:用于开启反向路径过滤。
    • net.core.rmem_default:用于指定接收缓冲区的默认大小。
    • net.core.rmem_max:用于指定接收缓冲区的最大大小。
    • net.core.wmem_default:用于指定发送缓冲区的默认大小。
    • net.core.wmem_max:用于指定发送缓冲区的最大大小。
    [root@oracle ~]# vim /etc/sysctl.conf
    ...此处省略一万字...在最后一行下方追加即可
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    net.ipv4.ip_local_port_range = 9000 65500
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.conf.all.rp_filter = 1
    net.core.rmem_default = 262144
    net.core.rmem_max= 4194304
    net.core.wmem_default= 262144
    net.core.wmem_max= 1048576
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    刷新生效

    [root@oracle ~]# sysctl -p
    
    • 1

    创建oracle用户和用户组

    [root@oracle ~]# groupadd oinstall					#创建安装oracle程序用户组
    [root@oracle ~]# groupadd dba						#创建DBA用户组
    [root@oracle ~]# useradd -g dba -m oracle			#创建用户oracle 并加入到dba组
    [root@oracle ~]# usermod -a -G oinstall oracle		#将用户oracle加入到oinstall组
    [root@oracle ~]# id oracle 							#验证用户是否创建成功
    
    • 1
    • 2
    • 3
    • 4
    • 5

    将oracle用户密码设置为"oracle"

    [root@oracle ~]# passwd oracle						#为oracle用户设置密码为oracle
    更改用户 oracle 的密码 。
    新的 密码:											 #输入密码不显示
    无效的密码: 密码少于 8 个字符
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    准备oracle安装目录

    [root@oracle ~]# mkdir -p /data/oracle				#创建oracle主目录
    [root@oracle ~]# mkdir -p /data/inventory			#创建oralce配置目录
    [root@oracle ~]# mkdir -p /data/src					#创建oracle压缩包解压目录
    
    • 1
    • 2
    • 3

    修改目录归属关系

    [root@oracle ~]# chown -R oracle:oinstall /data/oracle
    [root@oracle ~]# chown -R oracle:oinstall /data/inventory
    [root@oracle ~]# chown -R oracle:oinstall /data/src
    
    [root@oracle ~]# ls -l /data/						#查看Oracl目录的归属关系
    总用量 0
    drwxr-xr-x 2 oracle oinstall 6 827 15:20 inventory
    drwxr-xr-x 2 oracle oinstall 6 827 15:20 oracle
    drwxr-xr-x 2 oracle oinstall 6 827 15:20 src
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    配置oracle用户shell权限

    • 设置操作系统对于Oracle数据库的资源限制
    • 这些资源限制的目的是为了保证Oracle数据库在运行时可以充分利用系统资源,提高数据库的运行性能。
    • oracle soft nproc 2047:这条配置限制了运行用户oracle的最大进程数(nproc),软限制为2047。软限制表示该值可以通过修改来调整。确保用户oracle在运行时有足够数量的进程资源。
    • oracle hard nproc 16384:这条配置限制了运行用户oracle的最大进程数,硬限制为16384。硬限制表示该值只能由系统管理员通过修改配置文件来调整。
    • oracle soft nofile 1024:这条配置限制了运行用户oracle的最大文件描述符数(nofile),软限制为1024。确保Oracle数据库可以同时打开足够数量的文件描述符。
    • oracle hard nofile 65536:这条配置限制了运行用户oracle的最大文件描述符数,硬限制为65536。确保Oracle数据库可以打开更多的文件描述符。
    [root@oracle ~]# vim /etc/security/limits.conf
    ...第51行下方添加下方内容...其他任容不要动
     52 oracle soft nproc 2047
     53 oracle hard nproc 16384
     54 oracle soft nofile 1024
     55 oracle hard nofile 65536
    ...此处省略一万字...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    修改用户变量

    [root@oracle ~]# vim /home/oracle/.bashrc
    ...最后一行下方追加下方内容...其他地方不要动
    export ORACLE_BASE=/data/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    export ORACLE_SID=orcl
    export ORACLE_UNQNAME=orcl
    export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export LANG=C
    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    
    [root@oracle ~]# source /home/oracle/.bashrc			#执行文件,使用配置生效 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    将学习资料中的oracle-install上传至oracle虚拟机的/root/

    安装oracle依赖包

    [root@oracle ~]# cd /root/oracle-install
    [root@oracle oracle-install]# unzip rpms.zip			#将依赖包解压到当前路径
    [root@oracle ~]# cd rpms/								#切换至解压目录
    [root@oracle rpms]# yum -y localinstall *.rpm			#安装依赖包
    
    • 1
    • 2
    • 3
    • 4

    验证ksh是否安装

    [root@oracle rpms]# ls -l /bin/ksh*
    lrwxrwxrwx 1 root root      21 Aug 27 15:53 /bin/ksh -> /etc/alternatives/ksh
    -rwxr-xr-x 1 root root 1519032 Aug 11  2022 /bin/ksh93
    
    • 1
    • 2
    • 3

    注:如果安装不正确,执行ksh安装: rpm -ivh /root/oracle-install/rpms/ksh-20120801-144.el7_9.x86_64.rpm

    解压缩Oracle安装包

    [root@oracle ~]# cd /root/oracle-install/
    [root@oracle oracle-install]# unzip linux.x64_11gR2_database_1of2.zip -d /data/src/
    [root@oracle oracle-install]# unzip linux.x64_11gR2_database_2of2.zip -d /data/src/
    [root@oracle oracle-install]# chown -R oracle:oinstall /data/src/
    [root@oracle oracle-install]# ls -l /data/src/
    total 0
    drwxr-xr-x 8 oracle oinstall 128 Aug 21  2009 database
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    关闭SELinux(已经在安装模板机的时候关闭过了,如果没有关闭,请按照如下方式关闭)

    [root@oracle ~]# vim /etc/selinux/config
    ...其他内容不要动,只修改第七行内容...
    7 SELINUX=disabled
    ...此处省略一万字...
    
    • 1
    • 2
    • 3
    • 4

    重启

    [root@oracle ~]# reboot
    
    • 1

    安装配置

    • 配置文件修改比较复杂,因此直接使用教学环境中修改完毕的即可

    • 从学习环境资料里将配置文件dbca.rsp、db_install.rsp、netca.rsp上传至oracle虚拟机的/data/src/database/response/

    • 上传之后无需再次编辑,上传的文件就是编辑好的。配置文件修改部分说明如下

    [root@oracle ~]# vim /data/src/database/response/db_install.rsp
    oracle.install.option=INSTALL_DB_SWONLY        				#安装类型
    ORACLE_HOSTNAME=oracle.server     							  #主机名称
    UNIX_GROUP_NAME=oinstall 										#安装组
    INVENTORY_LOCATION=/data/inventory 								#INVENTORY目录
    SELECTED_LANGUAGES=en,zh_CN 									#选择语言
    ORACLE_HOME=/data/oracle/product/11.2.0/db_1 					#oracle_home
    ORACLE_BASE=/data/oracle 										#oracle_base
    oracle.install.db.InstallEdition=EE 							#oracle版本
    oracle.install.db.DBA_GROUP=dba 								#dba用户组
    oracle.install.db.OPER_GROUP=oinstall 							#oper用户组
    oracle.install.db.config.starterdb.type=GENERAL_PURPOSE 		#数据库类型
    oracle.install.db.config.starterdb.globalDBName=orcl 			#globalDBName
    oracle.install.db.config.starterdb.SID=orcl 					#SID
    oracle.install.db.config.starterdb.characterSet=AL32UTF8 		#默认数据库编码
    oracle.install.db.config.starterdb.memoryLimit=800 				#自动管理内存的最小内存(M)
    oracle.install.db.config.starterdb.password.ALL=oracle 	#设定所有数据库用户使用同一个密码
    DECLINE_SECURITY_UPDATES=true 									#设置安全更新
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    [root@oracle ~]# vim /data/src/database/response/netca.rsp
    INSTALL_TYPE=""custom"" 										#安装的类型
    LISTENER_NUMBER=1 												#监听器数量
    LISTENER_NAMES={"LISTENER"} 									#监听器的名称列表
    LISTENER_PROTOCOLS={"TCP;1521"} 								#监听器使用的通讯协议列表
    LISTENER_START=""LISTENER"" 									#监听器启动的名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    [root@oracle ~]# vim /data/src/database/response/dbca.rsp
    RESPONSEFILE_VERSION ="11.2.0" 									#版本号
    OPERATION_TYPE ="createDatabase" 								#操作为创建实例 
    GDBNAME ="orcl" 												#数据库实例名
    SID ="orcl" 													#实例名字
    TEMPLATENAME = "General_Purpose.dbc" 							#建库用的模板文件
    SYSPASSWORD = "oracle" 											#SYS管理员密码
    SYSTEMPASSWORD = "oracle" 										#SYSTEM管理员密码
    SYSMANPASSWORD= "oracle"
    DBSNMPPASSWORD= "oracle"
    DATAFILEDESTINATION =/data/oracle/oradata 						#数据文件存放目录
    RECOVERYAREADESTINATION=/data/oracle/flash_recovery_area 		#恢复数据存放目录
    CHARACTERSET ="AL32UTF8" 										#字符集
    NATIONALCHARACTERSET= "AL16UTF16" 								#字符集
    TOTALMEMORY ="1638" 											#1638MB,物理内存2G*80%
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    安装Oracle

    使用oracle用户进行安装,提示Successfully即可

    [root@oracle ~]# su - oracle
    [oracle@oracle ~]# /data/src/database/runInstaller -silent -responseFile \ /data/src/database/response/db_install.rsp -ignorePrereq
    
    • 1
    • 2

    在这里插入图片描述

    重新打开一个远程连接窗口,使用root登录

    [root@oracle ~]# /data/inventory/orainstRoot.sh
    [root@oracle ~]# /data/oracle/product/11.2.0/db_1/root.sh
    
    • 1
    • 2

    返回使用oracle登录的窗口,按回车

    安装监听

    [oracle@oracle ~]# /data/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile \ /data/src/database/response/netca.rsp
    
    • 1

    如果提示下面的错误,则使用下方方法解决,如果没有报错,则忽略

    在这里插入图片描述

    [root@oracle ~]# find / -name libclntsh.so.11.1			#使用root用户搜索
    
    • 1

    在这里插入图片描述

    复制备份文件到上面报错的文件

    [root@oracle ~]# cp /data/oracle/product/11.2.0/db_1/inventory/backup/2023-05-13_06-04-35PM/Scripts/ext/lib/libclntsh.so.11.1  \ /data/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
    
    • 1

    安装数据库实例

    [oracle@oracle ~]# /data/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile \ /data/src/database/response/dbca.rsp
    
    • 1

    查看是否安装成功

    [oracle@oracle ~]$ ps -ef | grep ora_ | grep -v grep
    
    • 1

    登录数据库测试

    [oracle@oracle ~]$ sqlplus / as sysdba
    SQL> select instance_name, status from v$instance;		#查看实例状态	
    
    INSTANCE_NAME    STATUS
    ---------------- ------------
    orcl             OPEN
    SQL> exit												#退出
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    设置Oracle开机自启

    修改启动配置

    [oracle@oracle ~]$ vim /data/oracle/product/11.2.0/db_1/bin/dbstart
    #修改第80行,指定监听器安装目录
    80 ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1
    
    • 1
    • 2
    • 3

    修改关闭配置

    [oracle@oracle ~]$ vim /data/oracle/product/11.2.0/db_1/bin/dbshut
    #修改第50行,指定监听器安装目录
     50 ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1
    
    • 1
    • 2
    • 3

    修改/etc/oratab,将文件最后一行末尾的N改为Y

    [oracle@oracle ~]$ vim /etc/oratab
    
    #最后一行末尾改成Y
    orcl:/data/oracle/product/11.2.0/db_1:Y
    
    • 1
    • 2
    • 3
    • 4

    用root用户设置开机启动,先 exit退出oracle用户

    [oracle@oracle ~]$ exit								#退出oracle用户
    [root@oracle ~]# vim /etc/rc.d/rc.local
    # 文件最后一行后追加
    su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start"
    su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/dbstart"
    
    [root@oracle ~]# chmod +x /etc/rc.d/rc.local		#赋予执行权限	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    配置listener.ora

    [root@oracle ~]# vim /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
    ...
    #第9行下方添加这些配置
     10 SID_LIST_LISTENER =
     11   (SID_LIST =
     12     (SID_DESC =
     13           (GLOBAL_DBNAME = ORCL)
     14       (SID_NAME = orcl)
     15       (ORACLE_HOME = /data/oracle/product/11.2.0/db_1)
     16     )
     17   )
     ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    重启监听器(使用oracle用户执行)

    [root@oracle ~]# su - oracle
    [oracle@oracle ~]$ lsnrctl stop
    [oracle@oracle ~]$ lsnrctl start
    
    • 1
    • 2
    • 3

    使用oracle用户登录数据库,创建用户,用于登录数据库

    [oracle@oracle ~]$ sqlplus / as sysdba
    SQL> create user orcl identified by orcl;			#创建用户orcl,密码orcl
    SQL> grant connect,resource,dba to orcl;			#授权
    SQL> grant create session to orcl;					#授权
    
    • 1
    • 2
    • 3
    • 4

    安装Dbeaver,用于连接Oracle数据库(安装包在教学环境中)

    在这里插入图片描述

    选择数据库类型为Oracle
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    Oracle核心概念

    • 实例:oracle的数据库
    • 用户(User、Schema):用户是数据库中的账户,用于连接和访问数据库。每个用户可以拥有不同的权限和角色。
    • 表空间(Tablespace):表空间是数据库中逻辑存储结构的组成部分,它是一组数据文件的集合,用于存储用户数据和索引等对象。
    • 数据文件(Datafile):数据文件是数据库中存储数据和索引等对象的实际物理文件,每个数据文件属于一个表空间。
    • 段(Segment):段是逻辑存储结构,是一组相同类型的数据的集合,可以是表、索引、簇等对象。
    MySQLOracle
    MySQL实例
    Database、Schema用户、Schema
    表空间
    数据文件数据文件
    Segment

    在Dbeaver中执行SQL语句

    CREATE tablespace orcldata
    datafile '/data/oracle/oradata/orcl/orcldata.dbf'
    SIZE 50m
    AUTOEXTEND ON
    NEXT 20m
    segment space management auto
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在服务器上查看文件列表

    [oracle@oracle ~]$ ls -lh /data/oracle/oradata/orcl/
    total 1.5G
    -rw-r----- 1 oracle dba 9.3M Aug 27 19:15 control01.ctl
    -rw-r----- 1 oracle dba  51M Aug 27 19:13 orcldata.dbf
    -rw-r----- 1 oracle dba  51M Aug 27 19:14 redo01.log
    -rw-r----- 1 oracle dba  51M Aug 27 18:04 redo02.log
    -rw-r----- 1 oracle dba  51M Aug 27 18:04 redo03.log
    -rw-r----- 1 oracle dba 481M Aug 27 19:09 sysaux01.dbf
    -rw-r----- 1 oracle dba 671M Aug 27 19:09 system01.dbf
    -rw-r----- 1 oracle dba  30M Aug 27 19:04 temp01.dbf
    -rw-r----- 1 oracle dba  76M Aug 27 19:09 undotbs01.dbf
    -rw-r----- 1 oracle dba 5.1M Aug 27 18:04 users01.dbf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    增加表空间

    alter tablespace orcldata
    add datafile '/data/oracle/oradata/orcl/orcldata2.dbf'
    size 30m
    autoextend off	
    
    • 1
    • 2
    • 3
    • 4

    在服务器上查看文件列表

    [oracle@oracle ~]$ ls -lh  /data/oracle/oradata/orcl/
    
    • 1

    在Dbeaver中执行SQL语句

    • 查看表空间 查看表空间状态
    select tablespace_name,block_size,status,contents,logging from dba_tablespaces
    
    • 1

    查看表空间数据文件

    select file_id,file_name,tablespace_name,status,bytes from dba_data_files
    
    • 1

    临时表空间和undo表空间

    • 临时表空间:处理计算或者排序,临时需要的
    • undo:和事务有关
    create temporary tablespace temp1
    tempfile '/data/oracle/oradata/orcl/temp1.dbf'
    size 5m
    autoextend off
    
    • 1
    • 2
    • 3
    • 4
    create undo tablespace orcl_undo
    datafile '/data/oracle/oradata/orcl/orcl_undo.dbf'
    size 20m
    autoextend off
    
    • 1
    • 2
    • 3
    • 4

    删除表空间

    DROP tablespace orcldata
    DROP tablespace orcldata INCLUDING contents AND datafiles
    
    • 1
    • 2

    查询表空间的使用率 以下两个复杂的查询都可以得到表空间使用率数据

    select upper(f.tablespace_name) "TS-name",
    d.tot_grootte_mb "TS-bytes(m)",
    d.tot_grootte_mb - f.total_bytes "TS-used (m)",
    f.total_bytes "TS-free(m)",
    to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_mb * 100,2),'990.99') "TS-per"
    from (select tablespace_name,
    round(sum(bytes) / (1024 * 1024), 2) total_bytes,
    round(max(bytes) / (1024 * 1024), 2) max_bytes
    from sys.dba_free_space
    group by tablespace_name) f,
    (select dd.tablespace_name,
    round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
    from sys.dba_data_files dd
    group by dd.tablespace_name) d
    where d.tablespace_name = f.tablespace_name
    order by 5 desc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    创建用户

    • 创建用户zhangsan,密码为ora1234
    • zhangsan用户的数据存放在neworcldata表空间,临时表空间存放在temp2表空间
    CREATE tablespace neworcldata
    datafile '/data/oracle/oradata/orcl/orcldatanew.dbf'
    SIZE 50m
    AUTOEXTEND ON
    NEXT 20m
    segment space management auto
    
    create temporary tablespace temp2
    tempfile '/data/oracle/oradata/orcl/temp2.dbf'
    size 5m
    autoextend off
    
    create user zhangsan 
    identified by ora1234 
    default tablespace neworcldata
    temporary tablespace temp2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    修改用户密码

    alter user zhangsan identified by zhangsan1234
    
    • 1

    用户授权

    授予用户 connect,dba 角色

    grant CONNECT,dba to zhangsan;
    
    • 1

    收回用户DBA角色的权限

    revoke dba from zhangsan;
    
    • 1

    授予用户 能查询SCOTT 下的 EMP 表的权限

    grant select on scott.emp to zhangsan;
    
    • 1

    授予用户能查询所有表的权限

    grant select any table to zhangsan;
    grant update any table to zhangsan;
    grant insert any table to zhangsan;
    grant DELETE any table to zhangsan;
    grant alter any table to zhangsan;
    grant CREATE any table to zhangsan;
    grant DROP any table to zhangsan;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查看用户

    select username,created from dba_users;
    
    • 1

    数据备份

    Oracle Data Pump是Oracle提供的一种高性能,可扩展的数据导入/导出工具。它是一种逻辑备份和恢复数据库的方法,也是逻辑备份中的一种常用方法。

    Oracle Data Pump提供了两个主要的工具:expdp和impdp。expdp用于将数据库对象和数据导出为一个或多个数据文件,impdp用于将数据文件导入到数据库中。

    添加数据

    #新建表并插入数据
    CREATE TABLE tb1(id int, name varchar2(20))
    
    CREATE INDEX idx_name ON tb1(name)
    
    INSERT INTO tb1 values(1, 'A')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    备份数据

    # 查询数据备份目录
    select * from dba_directories;
    
    OWNER  DIRECTORY_NAME         DIRECTORY_PATH
    ------ ---------------------- -------------------------------------------
    SYS    ORACLE_OCM_CONFIG_DIR  /data/oracle/product/11.2.0/db_1/ccr/state
    SYS    DATA_PUMP_DIR          /data/oracle/admin/orcl/dpdump/
    SYS    XMLDIR                 /ade/b/2125410156/oracle/rdbms/xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    后续使用data_pump_dir

    在这里插入图片描述

    备份:

    [oracle@oracle ~]$ expdp orcl/orcl@orcl \
    schemas=orcl directory=DATA_PUMP_DIR \
    dumpfile=backup.dmp include=table,index
    
    • 1
    • 2
    • 3

    expdp - 数据泵实用程序的命令,用于导出数据库对象和数据

    orcl/orcl@orcl - 数据库的用户名和密码。orcl是用户名,orcl是密码,@orcl是数据库实例名

    schemas=orcl - 要导出的数据库模式,即用户

    directory=DATA_PUMP_DIR - 数据库中已经创建的一个目录对象,用于指定导出文件的保存路径

    dumpfile=backup.dmp - 导出的备份文件名为backup.dmp

    include=table,index - 导出时包含的对象类型,这里包括表和索引。只会导出包含指定对象类型的数据和结构

    查看备份文件

    [oracle@oracle ~]$ ls -l /data/oracle/admin/orcl/dpdump/
    
    • 1

    模拟数据丢失

    drop table tb1;
    
    • 1

    恢复数据

    impdp orcl/orcl@orcl \
    directory=DATA_PUMP_DIR dumpfile=backup.dmp \
    include=table,index
    
    • 1
    • 2
    • 3

    总结

    • 掌握Oracle数据库安装过程
    • 掌握Oracle核心概念
    • 掌握数据库备份
  • 相关阅读:
    Openwrt 恢复系统后默认空间小
    5 分钟,教你用 Docker 部署一个 Python 应用
    分布式锁-yudao之设计精妙之处
    springboot actuator:开放全部(部分)端点、端点映射、端点保护
    Halo-Theme-Hao文档:如何设置导航栏?
    了解冒泡排序
    【PCL自学:PCLVisualizer】点云可视化工具PCLVisualizer
    【移动端h5常用的几款插件 】
    POE调试案例
    【GB28181】wvp-GB28181-pro快速适配 连接SQlite3数据库
  • 原文地址:https://blog.csdn.net/weixin_65777087/article/details/134468849