浅析Centos7安装Oracle12数据库



        Linux下的Oracle数据库实在是太难安装了,事贼多,我都怀疑能安装成功是不是运气的成分更高一些。这里虚拟机是VMware Workstation 15.5,操作系统是Centos7,Oracle版本是Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production。
Oracle下载链接: https://pan.baidu.com/s/1koFPbw26lxCcsIdPEsuZXQ?pwd=nwvk 提取码: nwvk

1、在虚拟机上安装Centos7
        要求:
                a、物理内存:2G【建议啊】
                b、硬盘:40G【默认20G是不够的】
                c、 swap交换分区:3G【小于3G则Oracle安装检查环境时会提示swap大小不足,当然右上角有相关选项,勾选是可以略过这步的,但没必要,不至于穷到连3G都不能给swap】
                d、带GUI的服务器【不能最小安装,因为Oracle12的安装是带有图形界面的】
                e、为Centos7设置固定IP【这个想当服务器用的都得有固定IP吧】
        开始:
                创建新的虚拟机

                选择【典型】,点击【下一步】按钮

                选择【稍后安装操作系统】,点击【下一步】

                选择【Linux】与【CentOS 7 64位】,点击【下一步】

                改好Centos7要安放的位置后点击【下一步】

                硬盘改为40G,默认的20G不够,点击【下一步】

                点击【自定义硬件】

                点击【关闭】按钮后再点击【完成】按钮。

                点击【编辑虚拟机设置】

                将你的Centos7的镜像文件【我的是CentOS-7-x86_64-DVD-1810.iso】挂载到光盘上准备运行。点击【确定】按钮。

                点击【开启此虚拟机】,等待安装。

                鼠标点击进入安装界面【注:一定要点击进去啊,不会就点击屏幕中央位置,然后鼠标会改变形状】后按向上的方向键,使【Install CentOs 7】选项变白,回车开始安装。这时鼠标是在安装界面里的,要想出来可按【Ctrl+Alt】。

                安装界面语言选择【中文】(鼠标要点入安装界面啊),点击【继续】按钮。
                进入安装选择界面后要多等待一会,程序要检查软件安装依赖关系,这时不要乱点。

                先改日期时间

        亚洲+上海,改完日期与时间后点击左上角【完成】按钮。

                点击【软件选择】,默认是最小安装,这个不行,得改为带GUI的服务器。

                点击【完成】按钮后程序会重新检查软件依赖关系,等会,别乱动,这个看机器性能,我机器慢,等了好几分钟呢。

                点击【安装位置】,我们要手工分区。

                点击【我要配置分区】,再点击【完成】按钮。

                将新挂载点将使用的分区方案改为【标准分区】

                再点击【+】按钮

                首先是挂载【/boot】引导分区,容量1G就够了。点击【添加挂载点】

                将文件系统改为【ext4】格式。再点击左下角的【+】按钮

                其次选择【swap】交换分区,容量3G,这个很重要,点击【添加挂载点】

                文件系统默认是swap格式的,不用动。再点击【+】按钮

                最后挂载【/】根目录,容量不用填。点击【添加挂载点】按钮。

                将文件系统改为【ext4】格式。点击左上角的【完成】按钮

                点击【接受更改】按钮完成安装位置选项。

                点击【KDUMP】按钮

                去掉【启用kdump】选项,点击【完成】按钮。

                点击【网络和主机名】

                修改主机名,再点击【应用】按钮。

                再点击右上角【打开/关闭】按钮

                打开网络连接。这里要记住路由与DNS的地址,后面配置固定IP要用到。点击【完成】按钮。

                点击【SECURITY POLICY】选项。

                点击【打开/关闭】按钮,取消密码安全性限制。

                点击【完成】按钮。

                点击【开始安装】按钮

                先设置root密码

                我设的密码太简单,需要点2次【完成】按钮才能成功。再点击【创建用户】

                密码简单,再点击2次【完成】按钮才创建用户成功。
                耐心等待安装就行......

                漫长的时间啊,终于等到了,点击【重启】按钮。

                这里要接受许可。

                点击【完成】按钮。

                网络和主机名我们前面配置过,这里就不用再配置了。点击【完成配置】按钮。
                
                这里点击【未列出】,我们要用root登录系统。

                输入密码后进入系统界面。

                点击右上角【前进】按钮,再点击【前进】按钮

                这里关闭隐私,再点击【前进】按钮,再点击下一界面的【跳过】按钮,再点击下一界面的开始使用按钮。

                点击右上角的【X】退出。终于进来正常的界面了。

2、为安装Oracle数据库做准备工作
        换yum源:
                我发现yum原来默认的国外镜像网站不好用了,你说操蛋不,我得换成阿里云的镜像网站,你的yum要是没事就可以略过此步。
                鼠标右键点击桌面,右键菜单选择【打开终端】

        我执行yum list提示如下

                真的不好用了啊,必须为yum换源了。

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


        清除本地yum缓存、索引、头文件、插件

yum clean all

        把服务器的包信息下载到本地电脑缓存起来

yum makecache


                更新已安装软件版本,防止与原来yum源安装的软件依赖发生意外冲突。但不更新linux内核。

yum -y upgrade


         这个时间有点长,等待。更新完成后测试了一下yum,发现OK。

yum search ifconfig


        设置固定IP
                编辑网络配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33


        首先将 BOOTPROTO="dhcp" 改为 BOOTPROTO="static",我这里将其注释了然后重新复制一份再修改。
        最后再在最后面补充以下内容

IPADDR="192.168.126.100"
NETMASK="255.255.255.0"
GATEWAY="192.168.126.2"
DNS1="192.168.126.2"


 

        按【esc】键,再按【:wq】保存退出。
        IPADDR是本机固定IP,NETMASK是掩码,GATEWAY是网关,DNS1是首选DNS。前面安装网络与主机名时有下面的界面显示了IP相关信息,我们原样拿过来用就行,我就把IP改了一下,100好记。

        若前面安装忘记了网络相关信息也不怕,点击虚拟机VMware的菜单【编辑】

下的【虚拟网络编辑器】菜单


        点击【NAT】模式,再点击【NAT设置】按钮

        在这里也能看到网络IP相关信息。
        执行下列代码让网络马上生效

systemctl restart network

再执行下面代码查看网络具体信息。

ifconfig

        关闭防火墙:
        关闭防火墙为了防止安装过程中的某些操作被防火墙阻止,确保安装程序可以正常访问所需要的端口与服务。安装完成后再重新启动防火墙并开放oracle的1521端口就行。
        执行下面3条命令

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

        【systemctl stop firewalld.service】是关闭防火墙
        【systemctl disable firewalld.service】是禁止防火墙的开机自启
        【systemctl status firewalld.service】是查看防火墙状态

        安装依赖包:

yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext.i686 zlib-devel zlib-devel.i686

       这些都是要安装Oracle数据库的软件依赖包,好多啊,有些依赖包前面安装系统时已经安装过了,还有些未安装过的。这些依赖包内容可以在Oracle官网上的文档中查到。

        执行下面命令检查依赖包是否全部安装完成

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-libcap1 compat-libstdc++-33 cpp gcc gcc-c++ glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make mpfr sysstat

        基本上不会有什么问题。

        创建组:

groupadd oinstall
groupadd dba
groupadd oper
groupadd osoper

        这里创建了4个组。

        创建用户并修改密码:

useradd -g oinstall -G dba,oper oracle
passwd oracle

        这里创建oracle用户来管理Oracle数据库的安装及后面的日常操作。该用户隶属于【oinstall】组,附加组是【dba】与【oper】。

        修改内核限制参数:

vim /etc/security/limits.conf

        在配置文件末尾插入下面内容

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240


        按【esc】键,再按【:wq】保存退出。
        其中【oracle soft nproc 2047】是单用户可使用进程数量
                【oracle soft nofile 1024】是用户可打开文件数量
                【oracle soft stack 10240】是堆栈设置

        手动配置内核参数:

vim /etc/sysctl.conf

在配置文件末尾插入下面内容

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

        按【esc】键,再按【:wq】保存退出。
        刷新内核参数,使其马上生效。

sysctl -p

        修改login配置文件:

vim /etc/pam.d/login

        在配置文件末尾插入下面内容

session required /lib64/security/pam_limits.so
session required pam_limits.so

        按【esc】键,再按【:wq】保存退出。

        修改profile文件:

vim /etc/profile

在配置文件末尾插入下面内容

if [ $USER = "oracle" ] ; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi

        按【esc】键,再按【:wq】保存退出。

        配置环境变量:

        创建Oracle安装软件的存放目录,后面我们会把该文件拷贝到此目录下。

mkdir -p /setup/oracle

        创建Oracle数据库软件安装目录,后面安装时会将Oracle数据库安装到此目录下。

mkdir -p /app/oracle/product/12.1.0/dbhome_1

        配置oracle用户的环境变量,后面我们要用前面创建的oracle用户来专门安装管理Oracle12数据库,因此这里要特意为该用户配置一下环境变量,别的用户是不能管理Oracle数据库的。

vim /home/oracle/.bash_profile

        在配置文件末尾插入下面内容

export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH

        按【esc】键,再按【:wq】保存退出。
        刷新配置,使其马上生效。

source /home/oracle/.bash_profile

        进入到Oracle软件存放目录

cd /setup/oracle

        将oracle安装软件拷贝到该目录,我用的是MobaXterm软件,用啥软件都行,能把文件拷贝过来就行。


        拷贝完毕后回到Centos的终端窗口,查看文件

ls

        2个文件都已经拷贝过来了,下面解压这2个文件。
        【注】:若无unzip软件可先安装【yum -y install unzip】
        先解压第1个压缩文件

unzip V46095-01_1of2.zip

        再解压第2个压缩文件

unzip V46095-01_2of2.zip

        重新查看一下该目录下文件

ls

        2个压缩文件已经解压到 /setup/oracle/database目录下了。

        文件授权:
                后面我们要用oracle用户登录来安装Oracle数据库,而前面的所有操作都是用root用户来完成的,所以必须把Oracle数据库的安装软件授权给oracle用户,否则无权管理这些文件。

chown -R oracle:oinstall /setup/oracle/database/

        查看一下授权后内容

ll

        可以看到 /setup/oracle/databae/ 目录及其下属所有文件都已经改为oracle用户所有了。
        同理我们再把Oracle数据库软件要安装到的目录也更改一下权限,因为该目录也是用root用户建立的,不改不行啊!

chown -R oracle:oinstall /app/

        建议现在重启,然后在虚拟机上以oracle用户登录

reboot

因为改了很多东西,也不知道有没有问题,改没改错,重启看一下。

这里我们用oracle用户登录

        没问题,进来了,由于头一次使用oracle用户登录,需要一些配置,与前面的相同,这里略。
在桌面上按右键选择【打开终端】,这回真的要开始安装Oracle了。
        若不想重启系统的话也没毛病,切换用户即可。

su - oracle

       【
                设置DISPLAY变量:
                我是在虚拟机上直接安装Oracle数据库,因此不用设置DISPLAY变量。但若你是在客户端连接软件上的话那就麻烦了,需安装支持图形界面的软件,还得设置DISPLAY变量
                export DISPLAY=192.168.126.100:0.0
                xclock
        】

        临时将系统换成英文
        因为Oracle安装包提供的jdk内缺少中文字体,安装时显示的都是乱码,因此最简单的方法就是临时将系统的中文改为英文。

export LANG=en_us

        进入Oracle软件存放目录

cd /setup/oracle/database

        显示目录内容

ll

        运行该文件

./runInstaller

        检测通过,可以启动Oralce安装界面了。

        我服了,分辨率不够,看不到安装界面全景啊。继续改!
选择Centos左上角菜单【应用程序】->【系统工具】->【设置】

        点击【设备】

        修改高分辨率

        点击【应用】按钮,再点击【保留更改】按钮。拉动底下向右滚动条,点击右上角的【X】退出即可。这回就能看全了。

        去掉勾选,点击【next】按钮。【上面2图中的下图是从网上找的中文对照,省得看得不习惯】


        选择【yes】按钮


        点击【next】按钮。


        选择【Server class】,点击【next】按钮。

        选择【Single instance database installation】,点击【next】按钮。


        这里选择【Advanced install】,很重要,因为后面要改数据库的字符集,默认的字符集是不支持中文的。而【Typical install】里默认是无法改字符集的。点击【next】按钮


        这里将左边栏里的【Simplified Chinese】通过【>】按钮加入到右边栏里,然后选中右边栏中的【English】,点击【<】按钮,将【Simplified Chinese】放到首选,【English】作为备选,点击【next】按钮。

    选择【Enterprise Edition】,点击【next】按钮。

点击【next】按钮

点击【next】按钮

    选择【General Purpose/Transaction Processing】,点击【next】按钮。

去掉【Create as Container database】勾选,点击【next】按钮。

【Memory】标签不用动,默认启用自动管理内存,点击【Character sets】标签,这才是重点。

        这里我用的字符集是【Simplified Chinese ZHS16GBK】。
        字符集格式:
                <语 言><比特数><编码>
                     AL         32      UTF8
                    ZHS       16      GBK
        点击【Sample schemas】标签

        选择【Create database with sample schemas】,点击【next】按钮。

点击【next】按钮

不注册,点击【next】按钮

选择【Enable REcovery】,启用数据库恢复(万一要是坏了了),点击【next】按钮。

选择【Use the same password for all accounts】,使用统一密码,省得麻烦。点击【next】按钮。

提示我密码设置过于简单,管得着嘛,单击【Yes】继续。

点击【next】按钮

        上面是检测安装环境,若是前面swap未设置3G这里就会有提示。我们继续

        没问题,点击【install】按钮

        安装中。。。

        这是2个shell文件,需要以root用户权限来执行
回到终端窗口,先按一下回车显示正常状态,然后切换用户

su

输入密码后执行第一条命令

/app/oraInventory/orainstRoot.sh

再执行第二条命令

/app/oracle/product/12.1.0/dbhome_1/root.sh

这里会有个提示,停顿一下,回车即可。

        回到Oralce安装窗口点击刚才那个弹出窗口中的【ok】按钮,继续安装中。。。

        Oracle安装程序开始创建数据库了


        点击【ok】按钮。


        数据库安装成功,点击【close】按钮结束。

收尾工作:

        确保我们现在是以root用户登录,刚才前面执行2个shell命令时已经改过了。】
        数据库自启动
                重启linux后oracle数据库是不会自动启动的,得我们手工配置一下才行。
                a、修改Oracle的配置文件

vim /etc/oratab

                        将    【orcl:/app/oracle/product/12.1.0/dbhome_1:N】
                        改为【orcl:/app/oracle/product/12.1.0/dbhome_1:Y】
                        就是将最后一个字母N改为Y就ok了。

                        按【esc】键,再按【:wq】保存退出。

                b、修改Centos的自启动配置文件

vim /etc/rc.d/rc.local

                        rc.local是开机启动文件,通过编辑该文件,用户可以自定义开机启动程序。
                        将需要开机启动的程序命令或脚本路径添加到该文件中,系统启动时该文件将被自动执行。
                        将下面的内容添加到该配置文件中。

su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/dbstart"
su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"


                按【esc】键,再按【:wq】保存退出。

                为该启动文件设置可执行权限【默认该文件是没有可执行权限的,不改重启时它不执行啊】

chmod u+x /etc/rc.d/rc.local

启动防火墙

systemctl start firewalld.service

        防火墙很重要,不可能因为Oralce数据库就永远关闭吧,前面安装需要关闭一下,现在安装完事了,只要开放Oracle的1521端口就行了。

systemctl enable firewalld.service

查看一下防火墙现在的状态

systemctl status firewalld.service

开放Oracle数据库的1521端口

firewall-cmd --permanent --add-port=1521/tcp

让设置马上生效

firewall-cmd --reload

查看防火墙是否成功开放了1521端口

firewall-cmd --query-port=1521/tcp

        OK,到此我们的收尾工作已经全部完成,马上重启,看看是否成功!

reboot

我们还是用oracle用户登录,桌面上点击右键,选择【打开终端】。

查看Oracle数据库是否启动,这里我们只要查看是否有Oracle的进程就可以了。

ps -ef | grep pmon

查看Oracle的监听是否启动

lsnrctl status

完全没问题,都正常启动了。


        若Oracle数据库未启动,则需输入下列命令启动。
                sqlplus / as sysdba
                #启动命令
                startup
                #查看启动状态
                select status from v$instance;
                #关闭
                shutdown immediate
        若监听未启动,则需输入下列命令启动。
                lsnrctl start

数据库操作:

建立主表空间:

sqlplus / as sysdba

进入Oralce数据库,开始建立表空间

create tablespace tbs_test datafile '/app/oracle/oradata/orcl/tbs_test.dbf' size 500M autoextend on next 50M;

表空间大小500M,自动扩展,每次50M。

建立临时表空间:

create temporary tablespace tbs_test_tmp tempfile '/app/oracle/oradata/orcl/tbs_test_tmp.dbf' size 100M reuse;

建立用户:
        这里为新建用户分配了主表空间与临时表空间,以后该用户下的所有表信息都存储在该表空间下

create user test identified by "123456" default tablespace tbs_test temporary tablespace tbs_test_tmp;

为用户分配权限:

grant connect,resource,dba to test;


        退出Oracle数据库

quit

重启:

reboot

测试连接:

        用datagrip软件测试一下用户test连接,成功!


        如果,我是说如果连接不成功,总是提示:
ORA-12505: 无法连接到数据库。SID orcl 未注册到 host 192.168.126.100 port 1521 中的监听程序。
        也就是说监听程序不认你给出的SID,拒绝连接。
        问题是给出的SID是正确的,啥毛病也没有啊,但监听就是不认,咋办啊!
        那就硬改一下试试,把SID写死!
        监听程序是listener.ora文件,编辑该文件。

vim /app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora

在后面加上如下内容

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = /app/oracle/product/12.1.0/dbhome_1/)
    )
  )

        ‌SID_LIST_LISTENER是Oracle数据库监听器配置文件listener.ora中的一个条目,用于定义静态注册的服务信息。静态注册是指将数据库实例的信息硬编码在监听器配置文件中,以便在数据库实例关闭时也能通过监听器连接到数据库。
        这也是实在没招了啊!
        按【esc】键,再按【:wq】保存退出。
先停止监听程序

lsnrctl stop

再重新启动监听程序

lsnrctl start

        有UNKNOWN提示,不管他。这回再尝试连接数据库,你会发现可能就好用了。写死了当然好用了啊!

建表:

create table book
(
    id int not null,
    name varchar2(100),
    author varchar2(60),
    price numeric(20,4) default 0,
    constraint pk_book primary key(id)
);

插入数据:

insert into book values (1,'三国演义','罗贯中',78.53);

查询数据:

select * from book;

搞定,收工!

============================数据库备份与恢复=============================

1、EXPDP与IMPDP

        1.1 expdp(Data Pump Export)
                备注:该命令仅能在服务器上使用
                语法:expdp [username]/[password] DIRECTORY=directory_object DUMPFILE=file_name.dmp [parameter]
                        [username][password]是用于连接数据库的用户名和密码
                        directory_object是在数据库中定义的目录对象
                        file_name.dmp是导出的文件名
                        常用参数:
                                DIRECTORY‌:指定转储文件和日志文件所在的目录。这个目录对象是通过CREATE DIRECTORY语句在数据库中创建的,而不是操作系统的目录。
                                DUMPFILE‌:指定导出文件的名称。如果不指定directory_object,则导出工具会自动使用DIRECTORY选项指定的目录对象。
                                SCHEMAS‌:导出指定的模式(用户)。例如,expdp scott/tiger schemas=SCOTT,HR会导出SCOTT和HR模式下的所有对象和数据。
                                TABLES‌:导出指定的表。例如,expdp scott/tiger TABLES=emp,dept会导出emp和dept表。
                                ‌FULL‌:导出整个数据库。例如,expdp system/manager FULL=y会导出整个数据库。
                示例:
                        expdp共有4中导出模式(表、用户、表空间、全部)
                        准备工作:
                                        1)建立第1个用户test01

-- 连接数据库
sqlplus / as sysdba
-- 建立主表空间
create tablespace tbs_test01 datafile '/app/oracle/oradata/orcl/tbs_test01.dbf' size 100M autoextend on next 10M;
-- 建立临时表空间
create temporary tablespace tbs_test01_tmp tempfile '/app/oracle/oradata/orcl/tbs_test01_tmp.dbf' size 50M reuse;
-- 建立用户并分配表空间
create user test01 identified by "123456" default tablespace tbs_test01 temporary tablespace tbs_test01_tmp;
-- 为用户赋权
grant connect,resource,dba to test01;

                                                建表插入数据 

-- 建表
create table book (id int not null,name varchar2(100),author varchar2(50),price numeric(20,4) default 0,constraint pk_book primary key(id));
-- 插入数据
insert into book values (1,'红楼梦','曹雪芹',68.52);
-- 提交数据
commit;
-- 查询数据
select * from book;

                                                这里是在datagrip中建表及插入数据
                                     
                                        2)建立第2个用户test02,并建表插入数据。

-- 建立主表空间
create tablespace tbs_test02 datafile '/app/oracle/oradata/orcl/tbs_test02.dbf' size 100M autoextend on next 10M;
-- 建立临时表空间
create temporary tablespace tbs_test02_tmp tempfile '/app/oracle/oradata/orcl/tbs_test02_tmp.dbf' size 50M reuse;
-- 建立用户并分配表空间
create user test02 identified by "123456" default tablespace tbs_test02 temporary tablespace tbs_test02_tmp;
-- 为用户赋权
grant connect,resource,dba to test02;

                                         建表插入数据 

-- 建表
create table student (id int not null,name varchar2(50),score numeric(20,4) default 0,constraint pk_student primary key(id));
-- 插入数据
insert into student values (1,'张三',68);
insert into student values (2,'李四',93);
-- 提交数据
commit;
-- 查询数据
select * from student;



3)建立第3个用户lag01

-- 建立主表空间
create tablespace tbs_lag01 datafile '/app/oracle/oradata/orcl/tbs_lag01.dbf' size 100M autoextend on next 10M;
-- 建立临时表空间
create temporary tablespace tbs_lag01_tmp tempfile '/app/oracle/oradata/orcl/tbs_lag01_tmp.dbf' size 50M reuse;
-- 建立用户并分配表空间
create user lag01 identified by "123456" default tablespace tbs_lag01 temporary tablespace tbs_lag01_tmp;
-- 为用户赋权
grant connect,resource,dba to lag01;
-- 退出
quit

                                       4)建立目录对象并为用户分配权限

-- 先在硬盘上建立目录
makdir -p /app/oracle/d
-- 连接数据库
sqlplus / as sysdba
-- 建立目录对象
create directory dir_dump as '/app/oracle/dp';
-- 为用户分配该目录的权限
grant read,write on directory dir_dump to test01;
grant read,write on directory dir_dump to lag01;
-- 退出
quit

                        开始备份:
                                a、导出一个或多个用户中的指定表

expdp test01/123456 directory=dir_dump dumpfile=tab.dmp tables=test01.book,test02.student

                                b、导出一个或多个用户所有数据(最常用)

expdp test01/123456 directory=dir_dump dumpfile=schema.dmp schemas=test01,test02

                                c、导出一个或多个表空间

expdp test01/123456 directory=dir_dump dumpfile=tablespace.dmp tablespaces=tbs_test01,tbs_test02

                                d、导出整个数据库(不包括系统用户)

expdp test01/123456 directory=dir_dump dumpfile=fulldatabase.dmp full=y

        1.2 impdp(Data Pump Impport)
                备注:该命令仅能在服务器上使用(将要导入的文件拷贝到服务器上的新建目录对象dir_dump中【/app/oracle/dp】)
                语法:impdp [username]/[password]@[database] [parameters]
                         用户名和密码‌:指定连接数据库的用户名和密码。例如,username/password
         
数据库‌:指定要连接的数据库实例。例如,@dbname
         
目录‌:指定数据泵导出文件所在的目录。例如,DIRECTORY=directory_name
       
导出文件‌:指定要导入的导出文件名。例如,DUMPFILE=filename.dmp
       
日志文件‌:指定导入过程的日志文件。例如,LOGFILE=logfile.log
                         模式(用户)‌:指定要导入的数据模式。例如,SCHEMAS=schema_name
         
‌:指定要导入的表。例如,TABLES=table_name
                         查询条件‌:指定导入数据的查询条件。例如,QUERY=table_name WHERE condition
      举例:
        a、
将一个或多个用户中的指定表导入到某用户中

impdp lag01/123456 directory=dir_dump dumpfile=tab.dmp remap_schema=test01:lag01,test02:lag01

                              这里remap_schema=源用户:目标用户(用户映射关系)  

        b、将一个或多个用户中的所有数据导入到某用户中

impdp lag01/123456 directory=dir_dump dumpfile=schema.dmp remap_schema=test01:lag01,test02:lag01

                                remap_tablespace=源表空间:目标表空间(表空间映射关系),有时会需要加该参数。

        c、将一个或多个表空间的所有数据导入到某表空间中

impdp lag01/123456 directory=dir_dump dumpfile=tablespace.dmp tablespaces=tbs_test01,tbs_test02 remap_tablespace=tbs_test01:tbs_lag01,tbs_test02:tbs_lag01

      d、导入全库

impdp lag01/123456 directory=dir_dump dumpfile=fulldatabase.dmp full=y

2、exp与imp

        2.1 exp
                语法:exp 用户名/密码@远程数据库IP:端口号/数据库实例名 file=file_name.dmp owner=用户名1,用户名2... [tables=用户名1.表1,用户名2.表2...] [rows=y/n]
                举例:
                        a、导出单用户:
                                exp test01/123456@192.168.126.100:1521/orcl file=test01.dmp owner=test01
                        b、导出多用户
                                exp test01/123456@192.168.126.100:1521/orcl file=test0102.dmp owner=test01,test02
                        c、导出指定表:
                                exp test01/123456@192.168.126.100:1521/orcl file=tab.dmp tables=test01.book,test02.student

        2.2 imp
                语法:imp 用户名/密码@远程数据库IP:端口号/数据库实例名 file=file_name.dmp fromuser=用户名1,用户名2... touser=用户名a,用户名b... [ignore=y]
                举例:
                        a、导入单用户:
                                imp lag01/123456@192.168.126.100:1521/orcl file=test01.dmp fromuser=test01 touser=lag01 ignore=y
                        b、导入多用户:
                                imp lag01/123456@192.168.126.100:1521/orcl file=test0102.dmp fromuser=test01,test02 touser=lag01,lag01 ignore=y
                        c、导入指定表:
                                imp lag01/123456@192.168.126.100:1521/orcl file=tab.dmp fromuser=test01,test02 touser=lag01,lag01 ignore=y


        表空间映射的物理文件大小是有限制的(根据操作系统不同而大小不同),可以为表空间添加新的物理文件来解决表空间大小不足的问题。

alter tablespace tbs_mydb add datafile '/app/oracle/oradata/orcl/tbs_my01.dbf' size 30G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值