react 前端框架如何驱动企业数字化转型与创新发展
520
2023-11-25
Oracle11g
数据库生产环境下数据文件迁移
注:截图部分内容可能无法正常显示,但是不影响整个迁移过程。监控告警显示,数据库服务器根目录使用率超过90%,登录检查结果如下:
通过linux系统侧查看,导致linux根目录突增是由于开发误将数据文件创建在根目录下导致,查看数据库告警日志看是否有相关记录。
Fri Aug 19 11:46:00 2016
create tablespace gssp logging datafile \u01\app\oracle\gssp.dbf size 10240M autoextend on next 32m maxsize 10240m extent management local
Fri Aug 19 11:46:32 2016
Completed: create tablespace gssp logging datafile \u01\app\oracle\gssp.dbf size 10240M autoextend on next 32m maxsize 10240m extent management local
可以看到,确实有create tablespace 语句将数据文件放在根目录下(我们部署数据库的规则是数据库软件在根目录下,数据文件在单独的磁盘上)。在数据库中查询确认以上推断,如下所示。
SQL> select file#,name from v$datafile;
FILE# NAME
---------- --------------------------------------------------------------------------------
1 /oradata/SJTBDB/datafile/o1_mf_system_cnq73jf3_.dbf
2 /oradata/SJTBDB/datafile/o1_mf_sysaux_cnq73nv2_.dbf
3 /oradata/SJTBDB/datafile/o1_mf_undotbs1_cnq73r4r_.dbf
4 /oradata/SJTBDB/datafile/o1_mf_users_cnq741ml_.dbf
5 /u01/app/oracle/gdrp.dbf
6 /u01/app/oracle/11.2.0/db/dbs/u01apporaclegssp.dbf
6 rows selected.
SQL>
可以看到5、6号的数据文件都是在根目录下的数据库软件部署目录中。以下是迁移数据文件的详细过程。
关闭数据库。
SQL>
SQL> shu immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
找到5、6号数据文件在操作系统中的具体文件:
5号文件:
6号文件
将5、6号文件在系统层面cp至目标目录下
[root@localhost dbs]# cp ./u01apporaclegssp.dbf /oradata/SJTBDB/datafile/
[root@localhost oracle]# cp ./gdrp.dbf /oradata/SJTBDB/datafile/
切换到目标文件目录下,确认文件已经cp到位。
将数据库启动到mount状态下。
SQL> startup mount
ORACLE instance started.
Total System Global Area 3.1467E+10 bytes
Fixed Size 2268712 bytes
Variable Size 4362076632 bytes
Database Buffers 2.7045E+10 bytes
Redo Buffers 57937920 bytes
Database mounted.
SQL>
通过alter database rename命令重命名命令将原文件目录名更改到迁移后的文件目录名。
SQL>
SQL> alter database rename file /u01/app/oracle/gdrp.dbf to /oradata/SJTBDB/datafile/gdrp.dbf;
alter database rename file /u01/app/oracle/gdrp.dbf to /oradata/SJTBDB/datafile/gdrp.dbf
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01141: error renaming data file 5 - new file /oradata/SJTBDB/datafile/gdrp.dbf not found
ORA-01110: data file 5: /u01/app/oracle/gdrp.dbf
ORA-27041: unable to open file
Linux-x86_64 Error: 13: Permission denied
Additional information: 9
此处报错信息提示,数据库无法打开指定的5号文件,原因是权限拒绝。解决此问题,就是在操作系统层面,通过操作系统命令更改新迁移的文件权限,使数据库有可读写权限,具体如下截图:
继续执行alter database rename命令,如下所示,再未出现上述权限错误。
SQL> alter database rename file /u01/app/oracle/gdrp.dbf to /oradata/SJTBDB/datafile/gdrp.dbf;
Database altered.
SQL> alter database rename file /u01/app/oracle/11.2.0/db/dbs/u01apporaclegssp.dbf to /oradata/SJTBDB/datafile/u01apporaclegssp.dbf;
Database altered.
SQL>
打开数据库。
SQL>
SQL> alter database open;
Database altered.
SQL>
SQL>
确认迁移后的结果,查看数据文件目录是否符合预期。
SQL> col name for a60
SQL> set line 160
SQL> select file#,name from v$datafile;
FILE# NAME
---------- ------------------------------------------------------------
1 /oradata/SJTBDB/datafile/o1_mf_system_cnq73jf3_.dbf
2 /oradata/SJTBDB/datafile/o1_mf_sysaux_cnq73nv2_.dbf
3 /oradata/SJTBDB/datafile/o1_mf_undotbs1_cnq73r4r_.dbf
4 /oradata/SJTBDB/datafile/o1_mf_users_cnq741ml_.dbf
5 /oradata/SJTBDB/datafile/gdrp.dbf
6 /oradata/SJTBDB/datafile/u01apporaclegssp.dbf
6 rows selected.
SQL>
可以看到5、6号数据文件已经移至目标位置,此时确定数据文件已经从根目录中移出,告知开发部测试业务,确保业务数据无异常后,即可删除根目录下原来的数据文件。
[root@localhost ~]# cd /u01/app/oracle/
[root@localhost oracle]# ls
11.2.0 admin cfgtoollogs checkpoints diag fast_recovery_area gdrp.dbf
[root@localhost oracle]# rm -f ./gdrp.dbf
[root@localhost oracle]# cd ./11.2.0/db/dbs/
[root@localhost dbs]# ls
hc_sjtbdb.dat init.ora lkSJTBDB orapwsjtbdb spfilesjtbdb.ora u01apporaclegssp.dbf
[root@localhost dbs]# rm ./u01apporaclegssp.dbf -f
删除文件后,根目录空间使用率超过阈值的问题也随之解决。
总结:在创建表空间的过程中,要明确将数据文件指定在项目规划的目录下,切勿存放在根目录下,以避免数据文件随着业务增长而可能引起根目录满的问题。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub-/31403259/viewspace-2136820/,如需转载,请注明出处,否则将追究法律责任。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~