按客户的要求,需要把oracle库控制文件、数据文件、以及联机日志文件从本地磁盘移到存储上,为后续cluster工作做准备,为此,准备两套方案,模拟记录如下
方案一步骤如下:
                    1shutdownimmediate数据库
                    2copydatafiles、logfiles、controlfiles、tempfiles到新的目录
                    3startupnomount数据库
                    4用命令altersystemsetcontrol_files指定控制文件新位置
                    5startupforcemount数据库
                    6指定datafiles、tempfiles新位置
                    7指定redo日志文件新位置
                    8alterdatabaseopen数据库
                  
方案二步骤如下:
                    1生成重建控制文件的语句
                    2shutdownimmediate数据库
                    3copydatafiles、logfiles、tempfiles、到新的位置
                    4用命令altersystemsetcontrol_files更改spfile文件中控制文件的指向
                    5重建控制文件
                    6为temp表空间的添加数据文件                  
                    
方案1执行过程如下:                  
                    
1查询当前数据文件和日志文件如下:                  
SQL>selectnamefromv$datafile;
                    NAME
                    --------------------------------------------------
                    G:\DATA\ERP\SYSTEM01.DBF
                    G:\DATA\ERP\SYSAUX01.DBF
                    G:\DATA\ERP\UNDOTBS01.DBF
                    G:\DATA\ERP\USERS01.DBF                  
SQL>selectgroup#,memberfromv$logfile;
                    GROUP#MEMBER
                    ------------------------------------------------------------
                    2G:\DATA\ERP\REDO02.LOG
                    1G:\DATA\ERP\REDO01.LOG
                    3G:\DATA\ERP\REDO03.LOG                  
                    
2一致性关闭数据库:                  
                    SQL>shutdownimmediate;
                    数据库已经关闭。
                    已经卸载数据库。
                    ORACLE例程已经关闭。
                    SQL>                  
3拷贝数据文件、日志文件、临时数据文件、控制文件到存储目录下:
                    C:\Users\Administrator.ZX>copyG:\DATA\ERP\*.*E:\DATA\ERP\
                    G:\DATA\ERP\CONTROL01.CTL
                    G:\DATA\ERP\CONTROL02.CTL
                    G:\DATA\ERP\REDO01.LOG
                    G:\DATA\ERP\REDO02.LOG
                    G:\DATA\ERP\REDO03.LOG
                    G:\DATA\ERP\SYSAUX01.DBF
                    G:\DATA\ERP\SYSTEM01.DBF
                    G:\DATA\ERP\TEMP01.DBF
                    G:\DATA\ERP\UNDOTBS01.DBF
                    G:\DATA\ERP\USERS01.DBF
                    已复制10个文件。
4用命令altersystemsetcontrol_files指定控制文件新位置                  
C:\Users\Administrator.ZX>sqlplus/assysdba
SQL*Plus:Release11.2.0.1.0Productionon星期五9月2017:29:492013
Copyright(c)1982,2010,Oracle.Allrightsreserved.
已连接到空闲例程。
                    SQL>startupnomount;
                    ORACLE例程已经启动。                  
                    TotalSystemGlobalArea430075904bytes
                    FixedSize2176448bytes
                    VariableSize301992512bytes
                    DatabaseBuffers117440512bytes
                    RedoBuffers8466432bytes                  
SQL>showparametercontrol_files;
                    NAMETYPEVALUE
                    ----------------------------------------------------------------------------------------
                    control_filesstringG:\DATA\ERP\CONTROL01.CTL,G:\
                    DATA\ERP\CONTROL02.CTL
                    SQL>altersystemsetcontrol_files='E:\DATA\ERP\CONTROL01.CTL','E:\DATA\ERP\CONTROL02.CTL'scope=spfile;                  
                    系统已更改。
                    SQL>startupforcemount;
                    ORACLE例程已经启动。                  
                    TotalSystemGlobalArea430075904bytes
                    FixedSize2176448bytes
                    VariableSize301992512bytes
                    DatabaseBuffers117440512bytes
                    RedoBuffers8466432bytes
                    数据库装载完毕。
                    SQL>showparametercontrol_files;                  
                    NAMETYPEVALUE
                    -----------------------------------------------------------------------------
                    control_filesstringE:\DATA\ERP\CONTROL01.CTL,E:\
                    DATA\ERP\CONTROL02.CTL
                    SQL>                  
                    
5指定数据文件和临时数据文件新位置                  
                    
SQL>alterdatabaserenamefile'G:\DATA\ERP\SYSAUX01.DBF',
                    2'G:\DATA\ERP\SYSTEM01.DBF',
                    3'G:\DATA\ERP\UNDOTBS01.DBF',
                    4'G:\DATA\ERP\USERS01.DBF',
                    5'G:\DATA\ERP\TEMP01.DBF'
6to'E:\DATA\ERP\SYSAUX01.DBF',
                    7'E:\DATA\ERP\SYSTEM01.DBF',
                    8'E:\DATA\ERP\UNDOTBS01.DBF',
                    9'E:\DATA\ERP\USERS01.DBF',
                    10'E:\DATA\ERP\TEMP01.DBF';                  
数据库已更改。
                    
6指定日志文件新位置:                  
                    
SQL>alterdatabaserenamefile'G:\DATA\ERP\REDO01.LOG',
                    2'G:\DATA\ERP\REDO02.LOG',
                    3'G:\DATA\ERP\REDO03.LOG'
                    4to'E:\DATA\ERP\REDO01.LOG',
                    5'E:\DATA\ERP\REDO02.LOG',
                    6'E:\DATA\ERP\REDO03.LOG';                  
                    数据库已更改。
                    SQL>selectfile#,name,statusfromv$datafile;                  
                    FILE#NAMESTATUS
                    -----------------------------------------------------------------------------
                    1E:\DATA\ERP\SYSTEM01.DBFSYSTEM
                    2E:\DATA\ERP\SYSAUX01.DBFONLINE
                    3E:\DATA\ERP\UNDOTBS01.DBFONLINE
                    4E:\DATA\ERP\USERS01.DBFONLINE                  
SQL>selectgroup#,memberfromv$logfile;
                    GROUP#MEMBER
                    ------------------------------------------------------------
                    2E:\DATA\ERP\REDO02.LOG
                    1E:\DATA\ERP\REDO01.LOG
                    3E:\DATA\ERP\REDO03.LOG                  
SQL>selectname,statusfromv$tempfile;
                    NAMESTATUS
                    -------------------------------------------------------------------
                    E:\DATA\ERP\TEMP01.DBFONLINE                  
第二种方案移库过程如下:
1生成重建控制文件的语句:
SQL>selectopen_modefromv$database;
                    OPEN_MODE                     作者:寒小阳                     题目是网上找的,答案博主自己做的,有不当之处或者有更好的方法欢迎留言!                                       一堆硬币,一个机器人,如果是反的就翻正,如果是正的就抛掷一次,无穷多次后,求正反的比例(哈尔滨站)                                       典型的数学概率题(好吧,说明数学还是很重要滴,大家去笔试面前还是巩固一下概率比较好,恩),这里假设无穷多次后正面朝上的比例为x,则反面朝上的比例为1-x;则再投递一次,根据题意,正面朝上的概率的就变成1-x+(1/2*x),,反面朝上的概率变为1/2*x.因为此时已经达到平衡的状态,则该次投递前后概率应该不变,即1-x=1/2*x。解得x为2/3                                       k链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现。                                             #include<stdio.h>                                                   #include<stdlib.h>                                                   #include<iostream>                                                   usingnamespace std;                                                   struct Node{                                                   int data;                                                   Node *next;                                                   };                                                   void ReverseLinkList(Node *head,Node *end){                                                   if(head==NULL||end==NULL) return;                                                   Node *pre=NULL,*cur=head,*stop=end->next;                                                   while(cur!=stop){                                                   Node* nxt=cur->next;                                                   cur->next=pre;                                                   pre=cur;                                                   cur=nxt;                                                   }                                                   }                                                   Node* ReverseKLinkList(Node *head,int k){                                                   if(head==NULL||k<=0) return NULL;                                                   Node *cur=head;                                                   for(int i=0;i<k-1;i++){                                                   cur=cur->next;                                                   if(cur==NULL)                                                   break;                                                   }                                                   if(cur==NULL) return head;                                                   Node* begin=cur->next,*end=begin;                                                   Node* pre=head;                                                   ReverseLinkList(head,cur);                                                   while(begin!=NULL){                                                   for(int i=0;i<k-1;i++){                                                   end=end->next;                                                   if(end==NULL)                                                   break;                                                   }                                                   if(end==NULL){                                                   pre->next=begin;                                                   break;                                                   }                                                   else{                                                   Node *nextbegin=end->next;                                                   ReverseLinkList(begin,end);                                                   pre->next=end;                                                   pre=begin;                                                   begin=end=nextbegin;                        
          美团网2014校招笔试题及解答(长沙站+哈尔滨站)                  
时间:2013年9月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/11924701
声明:版权所有,转载请注明出处,谢谢。
没有评论:
发表评论