本篇内容介绍了“数据库重命名和迁移日志文件、数据文件的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目的:在某些情况下,数据文件或者日志文件必须被重新命名或迁移到新的位置上,然而想要让这些文件仍然有效,那么就需要为这些文件定义一个物理的名字或者物理位置,例如,在以下情况发生时,就需要重新命名数据文件或者日志文件:1.出于性能或者维护原因,需要将一个数据库文件移动到一个不同的磁盘上2.从备份中恢复一个数据文件,但是这个以前存放数据文件的磁盘已经崩溃,那么就需要将这个数据文件重新分配到一个新的磁盘上3.在操作系统级别,已经移动或者重命名一个数据文件,但是在数据库层即数据库内却没有进行重命名,在数据库启动的过程中得到
ORA-01157 和 ORA-01110
报错信息。如果数据库处于打开状态下,在操作系统级别重命名了数据文件或者移动了数据文件到其他的位置,当通过normal 或者 immediate
方式关闭数据库的时候,会得到 ORA-01116 和 ORA-01110 报错;以下将通过三个方面来对本主题进行相关的讨论:I 数据库打开的状态下,重命名或者移动数据文件II数据库关闭的状态下,重命名或者移动数据文件III 重命名或者移动日志文免费云主机域名件【注意】如果要重命名或者移动的数据文件是 SYSTEM 表空间中的文件,那么,必须用第 II 种方法来达到最终的目的即“数据库关闭的状态下,重命名或者移动数据文件”,因为在数据库打开的状态下,不能够让 SYSTEM 表空间出于 OFFLINE 即离线的状态;下面分别来对不同的情景进行说明:I 数据库打开的状态下,重命名或者移动数据文件在数据库出于打开的状态下,可以对数据文件进行重新命名或者移动,但是,表空间必须被置于READ-ONLY状态。在 READ-ONLY
状态下,用户可以对这个表空间进行SELECT操作,但不能对表空间进行INSERTS UPDATES 和 DELETES
操作。表空间READ-ONLY状态需要的总时间,取决于数据文件的大小和将一个数据文件从一个位置拷贝到一个新位置的时间消耗将表空间置于READ-ONLY状态,冻结文件头,从而阻止数据文件头被更新。只有在数据文件处于 READ-ONLY状态下,才有可能在数据库出于打开的状态下,对文件进行拷贝。通过以下的步骤来达到重命名或者移动数据文件的目的,本例中,以 USERS 表空间为数据文件所在的表空间:1. 查看 USERS表空间中有多少数据文件SQL>select file_name, status from dba_data_files where tablespace_name = ‘USERS’;FILE_NAME STATUS——————————————————/u01/oradata/test/users01.dbf AVAILABLE2. 确保,在返回的查询结果中,所有数据文件的状态即STATUS的值都是 AVAILABLE3. 将 USERS表空间置为 READ ONLY状态altertablespace users read only;4. 确保 USERS表空间在数据字典中已经被置于 READ ONLY状态SQL>select tablespace_name, status from dba_tablespaces where tablespace_name =’USERS’;TABLESPACE_NAME STATUS—————————————USERS READ ONLY5. 使用操作系统命令,将数据文件拷贝到一个新的位置。当数据文件被拷贝到一个新的位置之后,需要做的也是最重要的就是要比较两个数据文件的大小是否一致,因为可能在复制的过程中出现数据丢失的情况ORACLE> cp /u01/oradata/test/users01.dbf /jiachunyun/test/users01.dbf注意哦:同样,可以利用上面的方法,进行数据文件的重命名,也改变数据文件的位置。(我只改变了位置/jiachunyun/test)6. 当数据文件已经拷贝到新的位置之后,将USERS表空间置于 OFFLINE状态altertablespace users offline;7. 当表空间被置于 OFFLINE状态时,需要做的是在数据库层重新命名数据文件到新的位置上,这个操作会更新控制文件中的数据文件的位置信息alter database rename file ‘/u01/oradata/test/users01.dbf’ to ‘/jiachunyun/test/users01.dbf’;8. 当确认所有的 rename操作完成之后,将 USERS表空间上线即
ONLINEalter tablespace users online;9. 当将表空间重新置为 ONLINE状态,需要将表空间重新置为 READ WRITE即读写状态alter tablespace users read write;10. 检查表空间的状态是否为READ WRITE状态SQL>select tablespace_name, status from dba_tablespaces where tablespace_name =’USERS’;TABLESPACE_NAME STATUS—————————————USERS ONLINE11. 查看修改后的数据文件的位置SQL>select file_name, status from dba_data_files where tablespace_name = ‘USERS’;FILE_NAME STATUS——————————————————/jiachunyun/test/users01.dbf AVAILABLE13. 在操作系统级别,在原来的旧的目录中,将旧的数据文件删除ORACLE> rm -rf /u01/oradata/test/users01.dbfII 数据库关闭的状态下,重命名或者移动数据文件1. 查看 USERS表空间中,数据文件的位置SQL>select file_name,tablespace_name,file_id from dba_data_files wheretablespace_name = ‘USERS’;FILE_NAME TABLESPACE_NAME FILE_ID————————————————————————— ——-/u01/oradata/users01.dbf USERS 42. 关闭数据库shutdown immediate3.
在操作系统级别将数据文件重命名或者移动到新的位置上,或者移动新的位置上并且重命名ORACLE> cp /u01/oradata/test/users01.dbf /jiachunyun/test/users01.dbf 等4. 启动数据库到 mount状态startup mount;【说明】:这个操作会读取控制文件,但是不会将数据文件 mount5. 在数据库内重新命名数据文件alter database rename file ‘/u01/oradata/users01.dbf’ to ‘/jiachunyun/test/users01.dbf’;alter database rename file ‘/u01/oradata/sysaux01.dbf’ to ‘/jiachunyun/test/sysaux01.dbf’;alter database rename file ‘/u01/oradata/undotbs01.dbf’ to ‘/jiachunyun/test/undotbs01.dbf’;alter database rename file ‘/u01/oradata/users01.dbf’ to ‘/jiachunyun/test/users01.dbf’;6. 打开数据库alter database open;7. 查询 v$dbfile视图,来确认修改已经成功SQL>select name from v$datafile ;NAME
————————————————/jiachunyun/test/users01.dbf/jiachunyun/test/sysaux01.dbf/jiachunyun/test/undotbs01.dbf/jiachunyun/test/users01.dbf/jiachunyun/test/undotb1.dbf8. 在操作系统级别,将旧的数据文件从旧的目录位置中删除ORACLE>rm -rf /u01/oradata/users01.dbf 等数据库关闭的状态下,重命名或者移动控制文件 【注意】最好分3个不同的磁盘 ,以便坏了一块磁盘1. 查看 USERS表空间中,控制文件的位置SQL>select name from v$controlfile;
NAME
————————————————————————— ——-/u01/oradata/control01.ctl/u01/oradata/control02.ctl
2 改变第二个控制文件路径,并且告诉spfile,(文件有几个写几个,02的原/u01/oradata/test,新/jiachunyun/test)SQL> alter system set control_files=’/u01/oradata/test/control01.ctl’,’/jiachunyun/test/control02.ctl’ scope=spfile;
2. 关闭数据库shutdown immediate3.在操作系统级别将控制文件重命名或者移动到新的位置上,或者移动新的位置上并且重命名ORACLE> cp /u01/oradata/test/control01.ctl /jiachunyun/test/control02.ctl –02路径一定要对应上面的alter路径4. 启动数据库,并验证SQL>startup
SQL> select name from v$controlfile;5.添加第三条控制文件03SQL>alter system set control_file=’/u01/oradata/test/control01.ctl’,’/jiachunyun/test/control02.ctl’,’/u01/oradata/test/control03.ctl’ scope=spfile;6. 关闭数据库shutdown immediate7.在操作系统级别将控制文件重命名或者移动到新的位置上,ORACLE> cp /u01/oradata/test/control01.ctl /jiachunyun/test/control03.ctl
8. 启动数据库,并验证SQL>startup
SQL> select name from v$controlfile;NAME
——————————————————————————–
/u01/oradata/test/control01.ctl
/jiachunyun/test/control02.ctl
/u01/oradata/test/control03.ctlIII 重命名或者移动日志文件1.关闭数据库2.在操作系统级别,将日志文件重命名或者移动到新的位置上,或者移动新的位置上并且重命名ORACLE> cp /u01/oradata/test/redo01.log /jiachunyun/test/redo01.log 等
3.将数据库启动到 mount状态startup mount4.在数据库级别,重命名日志文件alter database rename file
‘/u01/oradata/test/redo01.log’
to’/jiachunyun/test/redo01.log’; 等
5.打开数据库alter database open;6.在操作系统级别,将旧的数据文件从旧的目录位置中删除ORACLE> rm -rf /u01/oradata/test/redo01.log7.验证ORACLE>select mane from v$logfile;
“数据库重命名和迁移日志文件、数据文件的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云网站,小编将为大家输出更多高质量的实用文章!
前言 在11gR2环境中,假如用户同时被授予了connect和resource角色后,即可登录数据库创建对象。但是在12c中,如果用户只是被授予了这两个角色,可以创建对象,但是无法插入数据。实验 下面做一个小实验:11g环境:(1)创建表空间CREATE TA…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。