最近在备份一个旧的Oracle的数据,我这边采取的操作是用户备份,(一般是看他们采取表备份的)
我的实例是在阿里云,然后就是登录,因为是旧的数据,我也不知道应该备份什么比较好的,先留档吧
我的这个建立在以前有一个数据库工程师安装好的,配置好的了,我只是进行数据留档,那些权限什么都有的了
思路: 我的思路是看一下history,看看以前的人是备份什么的 查看oracle用户的创建时间,去判断备份用户
实施: 首先登录oracle用户,启动监听文件,监听用户是谁,修改主机名和监听的主机名一致
[root@iZj6c8d3rzq75vl8cvdgk9Z ~]# su - oracle
[oracle@iZj6c8d3rzq75vl8cvdgk9Z ~]$
[oracle@iZj6c8d3rzq75vl8cvdgk9Z ~]$
[oracle@iZj6c8d3rzq75vl8cvdgk9Z ~]$
[oracle@iZj6c8d3rzq75vl8cvdgk9Z ~]$
[oracle@iZj6c8d3rzq75vl8cvdgk9Z ~]$
[oracle@iZj6c8d3rzq75vl8cvdgk9Z ~]$ cat /u01/app/oracle/product/11.2.0/db1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
# (ADDRESS = (PROTOCOL = TCP)(HOST = iZj6cc243ko8w1stn4vqrnZ)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = iZj6cgnm52um9jw7x9y18jZ)(PORT = 1521))
#iZj6cgnm52um9jw7x9y18jZ
)
)
ADR_BASE_LISTENER = /u01/app/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = swkj)
(SID_NAME = swkj)
)
)
你要么修改监听的主机名,要么就修改主机名,我这边采取的是临时修改主机名,
临时修改主机名
临时修改(仅对当前会话有效):
使用hostname命令可以临时修改当前会话的主机名,但重启后会恢复原来的主机名。
[root@iZj6cggyl1bpmo19jlf6dxZ ~]# sudo hostname iZj6cgnm52um9jw7x9y18jZ
登录,启动监听
[oracle@iZj6cgnm52um9jw7x9y18jZ ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 12 23:49:34 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 4275781632 bytes
Fixed Size 2260088 bytes
Variable Size 1157628808 bytes
Database Buffers 3103784960 bytes
Redo Buffers 12107776 bytes
Database mounted.
Database opened.
查看所有用户: 您可以使用DBA_USERS视图来查看数据库中所有用户的信息,包括用户名、用户编号和创建日期。以下是相应的SQL查询语句:
sql
SELECT USERNAME, USER_ID, CREATED FROM DBA_USERS;
创建日期 后面开始看 13-JAN-20 2020年1月13日
USERNAME USER_ID CREATED
------------------------------ ---------- ------------------
NEW_RETAIL 93 13-JAN-20
WALLET 94 15-APR-21
这个是我筛选出来的,查看创建时间然后进行的
查看数据多大
SQL> SELECT SUM(bytes)/1024/1024 FROM dba_segments WHERE owner='NEW_RETAIL';
SUM(BYTES)/1024/1024
--------------------
344718.938
这个数据的大小是 上面还需要除于1024
占用空间=336.639588GB
现在就是要么导出表空间,要么导出用户的数据
表空间的话就是这样计算的
SQL> SELECT DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'WALLET';
DEFAULT_TABLESPACE
------------------------------
SWKJ
SQL> SELECT SUM(bytes)/1024/1024 FROM dba_data_files WHERE tablespace_name='SWKJ';
SUM(BYTES)/1024/1024
--------------------
344063.984
导出数据泵语句
expdp WALLET/new_password dumpfile=WALLET.dmp logfile=WALLET.log
expdp new_retail/a7355eaab$ac3 dumpfile=retail.dmp logfile=retail.log
这个时候你需要的是注意导出的数据空间够不够你的存储容纳
我的用户表空间大小就是300G左右 我查看了下磁盘空间,感觉不够
[oracle@iZj6cgnm52um9jw7x9y18jZ dpdump]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 40G 12G 26G 31% /
tmpfs tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/vdb1 ext4 591G 447G 115G 80% /mnt
使用压缩命令 compression=ALL compression=QUERY
在Oracle数据泵(expdp)中使用compression参数可以压缩导出的数据文件,减少存储空间的使用。compression参数有两种模式:ALL和QUERY。
ALL:压缩所有的数据块。 QUERY:只压缩查询结果集。
expdp new_retail/new_password dumpfile=retail.dmp logfile=retail.log compression=ALL
[oracle@iZj6cgnm52um9jw7x9y18jZ dpdump]$ expdp new_retail/new_password dumpfile=retail.dmp logfile=retail.log compression=ALL
Export: Release 11.2.0.4.0 - Production on Wed Nov 13 00:16:49 2024
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting "NEW_RETAIL"."SYS_EXPORT_SCHEMA_02": new_retail/******** dumpfile=retail.dmp logfile=retail.log compression=ALL Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 255.9 GB Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
不出意外是没有空间的了...游戏重来
先校验空间,然后CPU,最后宽带吧
> 本文使用 [文章同步助手](https://juejin.cn/post/6940875049587097631) 同步