oracle 数据库状态转换
oracle switchover切换原理

oracle switchover切换原理Oracle Switchover 是一种数据库切换技术,用于无需停机的在数据库的主备之间切换角色。
它基于 Oracle Data Guard 技术,保证数据库的高可用性和灾备性能。
下面是 Oracle Switchover 切换的简要原理:1. 数据库配置:首先,需要配置一个主数据库(Primary)和一个备数据库(Standby)。
主数据库用于处理正常的读写操作,备数据库用于持续复制主数据库的变更。
2. 数据复制:主数据库生成归档日志(Archive Log)并将其传输到备数据库。
备数据库通过应用归档日志来保持与主数据库的同步,并反映主数据库的所有更改。
3. 角色切换前的准备:在切换前,需要确保主数据库和备数据库的同步状态,并保证备数据库中的数据与主数据库一致。
可以使用 Data Guard Broker 或手动管理来监视和管理主备数据库之间的同步。
4. 角色切换操作:当需要执行 Switchover 操作时,可以使用 ALTER DATABASE 命令或 Data Guard Broker 进行操作。
在此过程中,主数据库会转换为备数据库(Standby),备数据库会转换为主数据库(Primary)。
5. 角色切换后的操作:在角色切换完成后,原先的主数据库现在成为备数据库,它将继续接收归档日志并保持与新主数据库的同步。
新主数据库将接收读写操作,并继续生成归档日志。
6. 切换完成后的验证:在切换完成后,可以验证新主数据库和原备数据库的角色切换是否成功。
确保新主数据库能够正常处理读写请求,而原备数据库能够正常接收归档日志并与新主数据库同步。
通过 Oracle Switchover 技术,数据库管理员可以实现主备数据库之间的无缝切换,确保业务的连续性和高可用性。
同时,Switchover 还可以用于执行计划的数据库维护和升级操作,以减少对业务的影响。
ORACLE常用数据库类型(转)

ORACLE常⽤数据库类型(转)oracle常⽤数据类型1、Char定长格式字符串,在数据库中存储时不⾜位数填补空格,它的声明⽅式如下CHAR(L),L为字符串长度,缺省为1,作为变量最⼤32767个字符,作为数据存储在ORACLE8中最⼤为2000。
不建议使⽤,会带来不必要的⿇烦a、字符串⽐较的时候,如果不注意(char不⾜位补空格)会带来错误b、字符串⽐较的时候,如果⽤trim函数,这样该字段上的索引就失效(有时候会带来严重性能问题)c、浪费存储空间(⽆法精准计算未来存储⼤⼩,只能留有⾜够的空间;字符串的长度就是其所占⽤空间的⼤⼩)2、Varchar2/varchar⽬前VARCHAR是VARCHAR2的同义词。
⼯业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。
Oracle⾃⼰开发了⼀个数据类型VARCHAR2,这个类型不是⼀个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。
如果你想有向后兼容的能⼒,Oracle建议使⽤VARCHAR2⽽不是VARCHAR。
不定长格式字符串,它的声明⽅式如下VARCHAR2(L),L为字符串长度,没有缺省值,作为变量最⼤32767个字节,作为数据存储在ORACLE8中最⼤为4000。
在多字节语⾔环境中,实际存储的字符个数可能⼩于L值,例如:当语⾔环境为中⽂(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,⼀个VARCHAR2(200)的数据列可以保存200个英⽂字符或者100个汉字字符;对于4000字节以内的字符串,建议都⽤该类型a。
VARCHAR2⽐CHAR节省空间,在效率上⽐CHAR会稍微差⼀些,即要想获得效率,就必须牺牲⼀定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
b。
VARCHAR2虽然⽐CHAR节省空间,但是如果⼀个VARCHAR2列经常被修改,⽽且每次被修改的数据的长度不同,这会引起‘⾏迁移’(Row Migration)现象,⽽这造成多余的I/O,是数据库设计和调整中要尽⼒避免的,在这种情况下⽤CHAR代替VARCHAR2会更好⼀些。
ORCLE数据库转换的基本操作流程

第三方软件公司提供的Oracle管理工具PLSQL Develope r的安装使用过程:解压压缩包——PL SQL 9.06——运行plsqldev906——选择接受协议“I ”——下一步(默认,不做修改)——FINISH——YES——运行chinese(汉化)——确定——点击蓝色箭头——“√”——“√”——双击快捷方式——进入界面——输入Reg文本文档中记录的产品序列号等。
还原Oracle数据库的步骤:一:创建数据库:进入数据库配置工具向导(Database Configuration Assistant),——下一步——创建数据库——选择“一般用途或事务处理”——输入全局数据库名,默认实例ID号:SID——下一步选择“所有账户使用同一管理口令”,要切记口令。
——下一步——是(密码可以简单易记)全部默认下一步,直至完成。
点击退出。
二、测试连接点击Net Manager.点击服务名(此处为db2)——点击测试服务按钮——更改登录——测试成功——关闭。
三、找到源数据(即被审计单位备份数据),进入D OS命令环境下,开始转换数据。
(在转换被审计单位数据时,监听及数据库服务必须启动,才能还原数据库。
计算机(我的电脑)——右击鼠标——管理——服务和应用程序——服务)四、生成日志文件,查找用户名和表空间名:点击所有程序——附件——运行——在对话框中输入:cmd,进入dos命令环境。
输入:CD\,回车;再输入:imp system/123@db1 f ile=d:\ wzxs110711.dmp f ull=y buf fer=10240000 show=y log=d:\db1.log ——回车键。
(注意:IMP为客户端导入工具,与EXP(导出)成对使用,命令格式:IMP <用户名>/<口令>@服务名<参数1> <参数2> …;导入整个dmp文件:IMP <用户名>/<口令>@<数据库> FILE=<文件名> FULL=Y IGNORE=Y BUFFER=<缓冲区大小> LOG=<日志文件名>——参数说明:FILE:输入文件(dmp文件);FULL:导入整个dmp文件(N)(完全还原,还原当前用户的数据库,默认N(NO));BUFFER:数据缓冲区大小(并不是越大越好,建议值:10240000);SHOW:只列出文件内容(N)(第一次测试时用SHOW =Y);LOG:导出日志文件(必须提供,生成日志文件,可以在生成的文件中查找用户名和表空间名)。
Oracle常用函数以及行列转换

常用的函数数值函数➢ABS(N) 返回指定值的绝对值➢CEIL(N) 返回大于或等于给出数字的最小整数➢FLOOR(N) 对给定的数字取整数➢MOD(M,N) 返回一个M除以N的余数➢ROUND( M [,N] ) 按照指定的小数位元数进行四舍五入运算的结果参数:如果N不为整数则截取N整数部分,如果N>0则四舍五入为N位小数,如果N 小于0则四舍五入到小数点向左第N位。
➢TRUNC(M[,N]) 返回M按精度N截取后的值参数:如果N不为整数则截取N整数部分,如果N>0则截取到N位小数,如果N小于0则截取到小数点向左第N位,小数前其它数据用0表示。
转换函数➢TO_CHAR (NUMBER | date,'format')➢TO_NUMBER (char , 'format')➢TO_DATE (char, 'format')分组函数➢MAX➢AVG➢MIN➢COUNT ➢SUM字段为空的判断NULL的概述NULL在Oracle中是很特殊的值,任何类型的值都可以是NULL。
如果在某行中有一列没有值,那么就说慈航中这个列的值是NULL。
NULL是未知的东西,常称它为“UNKNOWN”或空值。
正因为它是未知的,才会有很多值得注意的规则。
NULL可以是任何数据类型的值,也可以不依赖于数据类型单独存在(字面量NULL),任何没有NOT NULL约束或主键约束的列都有可能出现NULL值。
NULL和其他任何值都不相等或相等,包括自身(当然是用IS NULL判断是可以的)。
但是在某些时候,Oracle却把他们当成相等的(指Oracle的一些内部规则),如SQL集合语句、Group by分组、Decode函数等。
NULL的判断和比较运算规则Oracle中判断一个列值或变量值是否是NULL,必须是用IS NULL或IS NOT NULL,而不能使用=NULL或<>NULL。
Oracle11G数据库DataGuard灾备切换方案

Oracle 11G数据库DataGuard灾备切换方案、检查1、确定MRP进程在正常运行real-time apply real-time apply SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;2、确定有足够的归档进程在所有的主备库实例上查询参数LOG_ARCHIVE_MAX_PROCESSES,确定其值大于等于4, 但不会太大3、确定目标备库的REDO为clear状态虽然在发起SWITCHOVER TO PRIMARY命令时,备库的REDO会自动转换为CLEAR 状态,但依然建议在SWITCHOVER前REDO为CLEAR状态。
确保正确设置了 LOG_FILE_NAME_CONVERT参数。
AND L.STATUS NOT IN (\UNUSED’,、CLEARING’,’CLEARING_CURRENT’);如果如上的查询有结果,4、确定没有大量的GAP5、确定主库以及目标备库的所有文件都为ONLINE主备库分别执行如下SQL,查看tempfile是否正常,如果备库上缺失文件则需要进行处、切换1、检查主库是否可切换至STANDBY如上的SQL查询结果如果为〃TO STANDBY”或者〃SESSIONS ACTIVE〃表示主库可切换至STANDBY,如果不为这两个值,则说明REDO传输存在问题。
2、停止主库第一个节点以外的所有实例(RAC)最好使用shutdown normal或者shutdown immediate方式停止数据库。
如果使用了shutdown abort将其他节点进行了关闭,则需等待RAC reconfig完成,且第一个节点将其余REDO正常前滚或回滚3、切换主库至STANDBY角色如果遇到ORA-16139报错,且V$DATABASE视图中DATABASE_ROLE字段的值已为“ PHYSICAL STANDBY”,则可继续(这种问题的出现其中一个可能是数据库有大量的数据文件)。
数据库的关闭与启动

数据库的关闭与启动三、启动\关闭数据库启动和关闭oracle有很多种⽅法。
这⾥只给出3种⽅法:l Sql*plusl OEM控制台l Windows 控制台1.以sql*plus为例:a.准备⾸先我们⽤sql*plus来连接到OracleSqlplus /nolog 是以不连接数据库的⽅式启动sql*plus Connect /as sysdba 是以DBA⾝份连接到oracle b.启动启动还是⽐较简单的Startup就OK了。
不过oracle启动模式有3种:l Startup nomount (nomount模式)启动实例不加载数据库。
l Startup mount (mount模式)启动实例加载数据库但不打开数据库l Startup (open 模式)启动实例加载并打开数据库,就是我们上⾯所⽤的命令Nomount模式中oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库⽂件,所以说:1)创建新数据库2)重建控制⽂件这2种操作都必须在这个模式下进⾏。
Mount模式中oracle只装载数据库但不打开数据库,所以说:1)重命名数据⽂件2)添加、删除和重命名重做⽇⼦⽂件3)执⾏数据库完全恢复操作4)改变数据库的归档模式这4种操作都必须在这个模式下进⾏Open模式(就是我们上⾯的startup不带任何参数的)呵呵就不多说了,正常启动。
当然这3种模式之间可以转换:Alter database mount(nomount模式)—〉alter database open(mount 模式)—〉(open模式)当然还有其它⼀些情况,在我们open模式下可以将数据库设置为⾮受限状态和受限状态在受限状态下,只有DBA才能访问数据库,所以说:1)执⾏数据导⼊导出2)使⽤sql*loader提取外部数据3)需要暂时拒绝普通⽤户访问数据库4)进⾏数据库移植或者升级操作这4种操作都必须在这个状态下进⾏在打开数据库时使⽤startup restrict命令即进⼊受限状态。
Oracle中的数据类型和数据类型之间的转换

Oracle中的数据类型和数据类型之间的转换Oracle中的数据类型/*ORACLE 中的数据类型;char 长度固定范围:1-2000VARCHAR2 长度可变范围:1-4000LONG 长度可变最⼤的范围2gb 长字符类型number 数字 number(p,s)Date ⽇期类型,精确到秒TIMESTAMP 存储⽇期,时间,时区,妙值,精确到⼩数CLOB 字符数据BLOB 存放⼆进制数据,视频图⽚等BFILE :⽤于将⼆进制数据存储在数据库外部的操作系统⽂件中所谓固定长度:所谓固定长度:是指虽然输⼊的字段值⼩于该字段的限制长度,但是实际存储数据时,会先⾃动向右补⾜空格后,才将字段值的内容存储到数据块中。
这种⽅式虽然⽐较浪费空间,但是存储效率较可变长度类型要好。
同时还能减少数据⾏迁移情况发⽣。
所谓可变长度:是指当输⼊的字段值⼩于该字段的限制长度时,直接将字段值的内容存储到数据块中,⽽不会补上空⽩,这样可以节省数据块空间。
*/--储字节或字符?CREATE TABLE T1(NAME CHAR(4) --默认的是字节);INSERT INTO T1 VALUES('AB');INSERT INTO T1 VALUES('ABCD');INSERT INTO T1 VALUES('我爱中国'); --这个就会报错INSERT INTO T1 VALUES('我爱'); --这样就是正确滴呀SELECT*FROM T1;SELECT LENGTH(ltrim(rtrim(NAME))) FROM T1 WHERE NAME='AB'--2SELECT LENGTH(NAME) FROM T1 WHERE NAME='AB'--4SELECT NAME FROM T1 WHERE NAME=N'AB'; --没有值滴呀;SELECT NAME FROM T1 WHERE NAME='AB';--同样的⽐较;CREATE TABLE T2(NAME CHAR(4CHAR) --默认的是字节);INSERT INTO T2 VALUES('ABCD');INSERT INTO T2 VALUES('ABCDABCD'); --报错INSERT INTO T2 VALUES('我爱中国'); ----正常插⼊SELECT*FROM T2;--⼀个汉字占⼏个字符,具体的还要看编码⽅式/*数据库的NLS_CHARACTERSET 为AL32UTF8,即⼀个汉字占⽤三到四个字节。
oracle主备库切换ora-01507

主备切换(SWITCHOVER)switchover:主库切换为备库:SQL> select database_role ,switchover_status from v$database;DATABASE_ROLE SWITCHOVER_STATUS-------------------------------- ------------------------------------PRIMARY SESSIONS ACTIVESQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDO WN;数据库已更改。
SQL>SQL> select database_role ,switchover_status from v$database;select database_role ,switchover_status from v$database*ERROR 位于第 1 行:ORA-01507: 未安装数据库SQL> startup mount;ORA-01081: 无法启动已在运行的 ORACLE --- 请首先关闭SQL> shutdown immediate;ORA-01507: 未安装数据库ORACLE 例程已经关闭。
SQL> startup mount;ORACLE 例程已经启动。
Total System Global Area 143727516 bytesFixed Size 453532 bytesVariable Size 109051904 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesORA-01666: ???????????SQL> select database_role ,switchover_status from v$database;select database_role ,switchover_status from v$database*ERROR 位于第 1 行:ORA-01507: ??????SQL> select status from v$instance;STATUS------------------------STARTEDSQL> alter database mount standby database;数据库已更改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三数据库状态转换
一、实验目的
1、熟练掌握数据库的各种关闭和开启状态的转换方法;
2、掌握数据库态和静默/非静默状态的转换。
二、实验内容
1、数据库启动模式间的转换操作;
3、数据库的读写/只读状态、受限/非受限状态、挂起非挂起状态和静默/非静默状态的转换操作。
三、实验步骤
1、快速关闭数据库;
2、启动数据库到NOMOUNT状态,并指出当前能查看物理存储结构中的哪些文件?
能查看读取初始化参数文件,但是不能访问数据
3、将数据库转换到MOUNT状态,并指出当前能查看物理存储结构中的哪些文件?
去初始化参数文件里读取控制文件的位置及控制文件名称
4、切换数据库到正常打开状态。
5、将数据库转换为挂起状态,再将数据库由挂起状态转换为非挂起状态;
6、将数据库转换为只读状态,再将数据库由只读状态转换为读写状态;
Alter database open read only;
Alter database open read write;
7、将数据库转换为静默状态,再将数据库由挂起状态转换为非静默状态;
alter system quiesce restricted;
alter system unquiesce;
8、写出利用OEM关闭数据库的操作步骤。
四、思考题
若在关闭数据库时使用了shutdown命令,使得数据库长时间处于正在关闭的状态,这时可以怎样处理以快速关闭数据库?
以sysdba身份登录,用shutdown abort来进行快速关闭
五、实验小结(请列出此次上机中遇到的所有错误代码及其解决方式)。