今天遇到个问题,由于执行一个TSM脚本的时候,没注意到脚本中的语句会新建一个tablespace,而且新建的语句是
1 |
create tablespace tsm datafile 'tsm.dbf' size 100m autoextend off; |
由于没有指定数据文件的绝对路径,所以默认就放在了$ORACLE_HOME/dbs路径下。
数据文件路径不统一,风险可大可小,如果是HA架构,数据文件不在共享存储上,切换的时候就会在备机起不来;如果在冷备的时候,如果没注意到这个文件,也会造成遗漏,做的冷备无法用于还原。
为了保持各个数据文件的存放路径统一,我们需要将该数据文件从dbs下mv到同一的数据文件的路径下。如果是单个库,就比较好处理,直接将tablespace offline之后在mv数据文件,再online上去即可。但是由于存在DG,我们对DG需要额外的处理一下。
我们可以按照下面的步骤处理:
主库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
--先将表空间offline sys@ORADG(192.168.190.241)> alter tablespace tbs1 offline; Tablespace altered. Elapsed: 00:00:00.04 sys@ORADG(192.168.190.241)> --注意,该操作步骤是不会传递到standby的。 --移动数据文件 sys@ORADG(192.168.190.241)> host mv /oracle/product/9.2.0/dbs/tbs1.dbf /oracle/oradata/oradg/tbs1.dbf sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> --修改控制文件信息 sys@ORADG(192.168.190.241)> alter database rename file '/oracle/product/9.2.0/dbs/tbs1.dbf' 2 to 3 '/oracle/oradata/oradg/tbs1.dbf'; Database altered. Elapsed: 00:00:00.04 sys@ORADG(192.168.190.241)> --注意,该修改操作也不会传递到备库的控制文件中。 --将表空间online sys@ORADG(192.168.190.241)> alter tablespace tbs1 online; Tablespace altered. Elapsed: 00:00:00.14 sys@ORADG(192.168.190.241)> |
在主库操作完成后,我们再对standby库的文件进行处理:
在备库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
--先将数据库从recover managed状态置于mount状态: SQL> alter database recover managed standby database cancel; Database altered. SQL> --移动数据文件 SQL> host mv /oracle/product/9.2.0/dbs/tbs1.dbf /oracle/oradata/oradg/tbs1.dbf SQL> --更改standby_file_management: SQL> alter system set standby_file_management=manual; System altered. SQL> --更改控制文件信息: SQL> alter database rename file '/oracle/product/9.2.0/dbs/tbs1.dbf' 2 to 3 '/oracle/oradata/oradg/tbs1.dbf'; Database altered. SQL> --还原standby_file_management: SQL> alter system set standby_file_management=auto; System altered. SQL> --最后,将数据库再次置于recover managed状态: SQL> alter database recover managed standby database disconnect from session; Database altered. SQL> |
小提示:
1、如果没有将数据库从recover managed状态置于mount状态,在mv或者cp的时候会报错:
1 2 3 4 5 6 7 8 9 10 |
SQL> alter database rename file '/oracle/product/9.2.0/dbs/tbs2.dbf' 2 to 3 '/oracle/oradata/oradg/tbs2.dbf'; alter database rename file '/oracle/product/9.2.0/dbs/tbs2.dbf' * ERROR at line 1: ORA-01156: recovery in progress may need access to files SQL> |
2、如果没有将standby_file_management状态置于manual状态,会报错:
1 2 3 4 5 6 7 8 9 10 11 12 |
SQL> alter database rename file '/oracle/product/9.2.0/dbs/tbs2.dbf' 2 to 3 '/oracle/oradata/oradg/tbs2.dbf'; alter database rename file '/oracle/product/9.2.0/dbs/tbs2.dbf' * ERROR at line 1: ORA-01511: error in renaming log/data files ORA-01275: Operation RENAME is not allowed if standby file management is automatic. SQL> |
6条评论
为什么在RSS输出中看到的网站名称还是以 cn 结尾的呢?
我是从 http://www.askdba.net 中看到的。不知道怎么回事。
简洁,明了.
Google article.Nice
re huc:那是因为askdba网站还没改。不过rss内容还是正常输出,只是标题名字还是cn的。^^
谢谢提醒。
问一下,在做rac过程,数据文件要放在share disk上,那在实际环境中,这个share disk是通过什么设备实现的呢,是在两台机器mount nfs文件系统,还是使用iscsiadm,还是存储本身就具有share disk的功能呢?
re magscott:shared disk可以通过共同挂载的裸设备或者ASM来实现,不建议用NFS,不稳定。