Oracle在windows上的安装及使用
1. 服务端安装
https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html
https://www.w3cschool.cn/oraclejc/oraclejc-eswu2qqq.html
创建数据库在dos命令窗口使用DBCA命令,配置监听使用netca命令。
2. 客户端安装和监听配置
export LANG=en_US.UTF-8
./runInstaller -jreLoc /etc/alternatives/jre_1.8.0
https://jingyan.baidu.com/article/455a99506b426da1662778c2.html
如果要使用客户端或数据库工具在客户端访问oracle服务端,必须要安装oracle客户端并配置监听,配置监听也可以通过更改E:\app\Administrator\product\11.2.0\client_1\network\admin\tnsnames.ora
在服务端SQL/PLUS工具中运行如下可以得到服务名:select global_name from global_name;
1、$lsnrctl status:检查当前监听器的状态
2、$lsnrctl start [listener-name] 启动所有的监听器,可以指定名字来启动特定的监听器
3、$lsnrctl stop [listener-name] 关闭所有的监听器,可以指定名字来关闭特定的监听器
4、$lsnrctl reload 重启监听器,此命令可以代替lsnrctl stop,lsnrctl start
PL/SQL登录如有报错信息:PL/SQL database character set(AL32UTF8) and Client character set(ZHS16GBK) are different,需修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_Oracle_10g\NLS_LANG的对应值
SIMPLIFIED CHINESE_CHINA.ZHS16GBK 修改为:SIMPLIFIED CHINESE_CHINA.AL32UTF8即可。
3. 联机备份与恢复
RMAN命令的主要参数有:
● target:后面跟目标数据库的连接字符串
● catalog:后面跟恢复目录
● nocatalog:指定没有恢复
要使用RMAN首先要将数据库设置为归档日志(ARCHIVELOG)模式,具体设置步骤如下:
● 以SYS用户和SYSDBA身份登录到SQL*PLUS:
SQL>CONNECT SYS/passwd@orcl AS SYSDBA;(SYSDBA代表一种权限;orcl代表实例名)
● 以IMMEDIATE方式关闭数据库,同时也关闭了数据库实例,然后以mount方式打开数据库,此时并没有打开数据库实例:
SQL>shutdown immediate
SQL>startup mount(如果报错监听不到,在dos命令行输入set ORACLE_SID=实例名,Linux下使用export Oracle_SID=实例名)
监听报错:https://blog.csdn.net/covey0306/article/details/51918877
● 将数据库从非归档日志模式(NOARCHIVELOG)切换到归档日志模式(ARCHIVELOG):
SQL>alter database archivelog;
alter system set log_archive_dest_1='location=c:\arch' scope=both;
● 用语句查询是否为归档日志模式(ARCHIVELOG/NOARCHIVELOG):
SQL>select dbid,name,log_mode,platform_name,open_mode from v$database;(archive log list;)
● 创建恢复目录所用的表空间,需要创建表空间存放与RMAN相关的数据,需要打开数据库实例,创建表空间:
SQL>alter database open; (用语句实例查看状态select status from v$instance)
SQL>create tablespace rman_ts datafile 'E:\app\Administrator\oradata\orcl\rman_ts.dbf' size 200M; (datafile为dbf文件存放路径,需参考oracle安装时所配置dbf文件存放的路径)
● 创建rman用户,默认表空间rman_ts,临时表空间temp:
SQL>create user rman identified by passwd default tablespace rman_ts temporary tablespace temp;
● 给用户授connect、recovery_catalog_owner和resource权限。(connect权限可以连接数据库,创建表、视图等数据库对象;recovery_catalog_owner权限可以对恢复目录进行管理;resource权限可以创建表、视图等数据库对象)
SQL>grant connect,recovery_catalog_owner,resource to rman;
● 在rman目录下运行rman程序打开恢复管理器(orcl代表实例名):
C:\app\Administrator\product\11.2.0\dbhome_1\BIN>rman target rman/passwsd@orcl
●备份全库
RMAN>backup database plus archivelog delete input;(备份全库及控制文件,服务器参数文件与所有归档的重做日志,删除旧的归档日志)
●备份表空间
RMAN>backup tablespace system plus archivelog delete input;(备份表空间及归档的重做日志,删除旧的归档日志)
●备份归档日志
RMAN>backup archivelog all delete input;
●全库备份
RMAN>backup database;
●删除日志文件(查看日志文件crosscheck archivelog all;)
rman>delete archivelog all;
RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7')删除七天前的日志;
●查看备份具体信息
RMAN>list backupset;
●指定路径备份(路径不能指定在oracle数据存放盘,所以报错创建文件失败;因为备份文件有大小限制,所以报错文件已存在)
RMAN>backup database format 'D:\Backup\data_%d_%s_%p.bak';(data_%U也可以)
●增量备份(level 10g之后分0和1,0为全备份,1为增量备份;之前有分4级)
RMAN>backup incremental level 1 database format 'D:\Backup\data_%U.bak';
●备份数据文件:
RMAN>Backup datafile 6 format ’D:\backup/%d_%T_%s’;(1,2,3,4,5,6,7代表数据文件的编号,可通过select file#,name from v$database来进行查询)
●备份归档日志:
RMAN>Backup archivelog all delete input format ‘D:\backup\%U.dbf’;
●备份控制文件:
RMAN>Backup current controlfile format ‘D:\backup\%d_%T_%s’;(current当前的)
●备份spfile(参数文件):
RMAN>Backup spfile format=’ D:\backup\%d_%T_%s’
参考链接:https://blog.csdn.net/qq_36891027/article/details/81065976
●指定路径还原,先还原控制文件再还原数据
RMAN>restore controlfile to 'E:\Oracle\oradata\orcl\CONTROL01.CTL' from 'D:\Backup\Data_Orcl_21_1.bak';(数据库打开的时候需要使用TO;如果备份文件有多个,from后跟的文件是其中一个)
当无法恢复控制文件:报错活动的控制文件,切换到startup nomount状态;rman连接报错监听无法连接,需修改/u01/app/base/product/11.2.0/db_1/network/admin/tnsnames.ora文件,在对应实例(SERVICE_NAME = test)下一行加(UR=A)来修复动态注册的监听在数据库nomount状态下拒绝一切连接;
在nomount状态下恢复控制文件后需要通过alter database mount语句修改数据库状态,才能进行数据的恢复,否则报错无法打开指定的控制文件;
●再恢复数据RMAN>restore database;
●恢复介质:(alter database open)
recover datafile 'E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF';
recover datafile 'E:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF';
recover datafile 'E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF';
recover datafile 'E:\ORACLE\ORADATA\ORCL\USERS01.DBF';
recover datafile 'E:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF';
recover datafile 'E:\ORACLE\ORADATA\ORCL\IF_FILE';
recover datafile 'E:\ORACLE\ORADATA\ORCL\RMAN_TS.DBF';
https://www.cnblogs.com/biaopei/p/8418833.html
手动归档日志:alter system switch logfile
https://www.cnblogs.com/hello-wei/p/10179313.html
oracle数据库创建流程:
1. 安装oracle,同时会创建一个数据库,如果需要再创建一个数据库使用DBCA方式开启图形化界面创建数据库,创建完成后会提示端口号,端口不同代表的库不同;
2. 通过https://192.168.1.10:1158/em访问(端口不同代表不同实例),SYS账户登录SYSDBA,创建用户(设置名称口令即可)
3. 编辑用户角色,授权CONNECT,DBA,RESOURCE权限,并勾选管理选项(connect连接权限,resource常用操作权限,dba最高权限):
4. 退出SYS账户,选择normal库登录刚创建的用户,创建表空间(只填写一般信息里面的名称即可,其他保持默认)并添加数据文件(输入文件名,存储可默认可勾选增量):
5. 用语句创建表和插入数据:
CREATE TABLE it(ID NUMBER(4),NAME VARCHAR2(14),LOC VARCHAR2(13));
INSERT INTO it VALUES (10,'ACCOUNTING','NEW YORK');
查看数据库名:select name from v$database
查看实例名:select instance_name from v$instance
Oracle登录命令:sqlplus username/password@DB
创建用户:create user username identified by password;
授权:grant connect,resource,dba to username;(connect连接权限,resource常用操作权限,dba最高权限);
scott默认是锁定的,启用用户的语句:alter user scott account unlock;
查看用户:select username from dba_users;
Oracle11g中有206个权限,可以通过语句在数据字典中查询,系统中有种ANY权限,可以在任意用户模式下操作:
SQL>CONNECT sys /passwd AS sysdba
SQL>SELECT COUNT(*) FROM SYSTEM_PRIVILEGE_MAP;
备份恢复参考资料:
https://wenku.baidu.com/view/84b1d6687e21af45b307a8f2.html?sxts=1566798259184
用闪回区存放归档
rac1执行
set ORACLE_SID=实例名
sqlplus / as sysdba
create pfile='d:/tmpbak.ora' from spfile;
alter system set db_recover_file_dest='+MGMT';
alter system set db_recovery_file_dest_size=200G scope=both;
alter system set cluster_database=false scope=spfile;
shutdown immediate
rac2执行
set ORACLE_SID=实例名
sqlplus / as sysdba
shutdown immediate
rac1执行
startup mount
alter database archivelog;
alter database flashback on;
alter system set cluster_database=true scope=spfile;
shutdown immediate
startup
rac2执行
startup
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
不用闪回区存放归档
rac1执行
set ORACLE_SID=实例名
sqlplus / as sysdba
create pfile='d:/tmpbak.ora' from spfile;
alter system set cluster_database=false scope=spfile;(cluster_database 是用来确定数据库是否在rac环境的集群中的,如果cluster_database=true,那么对于rac 数据库来说,无法在一个节点上mount exclusive数据库,也就无法更改archivelog模式。)
alter system set log_archive_dest_1='location=+MGMT/BDCYC' scope=both;
shutdown immediate
rac2执行
set ORACLE_SID=实例名
sqlplus / as sysdba
shutdown immediate
rac1执行
startup mount
alter database archivelog;
alter system set cluster_database=true scope=spfile;
shutdown immediate
startup
rac2执行
startup
恢复指定时间点
set oracle_sid=实例名
sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup nomount (数据库开启nomount状态,恢复数据库;如果nomout状态RMAN不能连接,修改.../product/11.2.0/db_1/network/admin/tnsnames.ora文件,在对应实例(SERVICE_NAME = test)下一行添加(UR=A))
rman target rman/passwd@实例名
RMAN>restore controlfile from ‘D:\Backup\....’;
RMAN>alter database mount
RMAN>restore database;
RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; 因为在rman中执行,所以需要sql ‘’;
RMAN>recover database until time '20190916 17:30:00'; 恢复到这个时间的数据,执行之后需要重新生成重做日志文件(如果恢复报错UNTIL TIME或RECOVER WINDOW在resetlogs之前,需用list incarnation查询resetlogsDB关键字;使用reset database incarnation to 3去设置到对应的时间点前)
RMAN>sql 'alter database open resetlogs';
scn是指系统改变号,oracle数据库使用它来记录数据库的过去时间内的状态和轨迹
conn /as sysdba
select to_char(scn_to_timestamp(963959),'YYYY-MM-DD HH24:MI:SS') from dual; 将scn转换为时间
select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<10; 根据用户删除数据时间找出相应的scn号
rman target/
startup mount;
restore database; 还原数据文件
recover database until scn 963915;
sql 'alter database open resetlogs'; 重新生成重做日志文件
查看当前状态:select status from v$instance
清除SBT_TAPE记录:configure device type 'SBT_TAPE' clear;
show parameter recover; 查看闪回
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟(1天),实际取决于闪回区大小
SQL> select flashback_on from v$database 检查是否开启闪回
select ts#,name from v$tablespace; 查看表空间
du -sh /u01/app/oracle/flash_recovery_area 查看文件夹使用空间
select file#,status,ts#,name from v$datafile; 查看数据库逻辑文件
select * from v$logfile; 查看日志路径
查看一下配置文件/etc/resolv.conf,里面是否有nameserver
xxx.xxx.xxx.xxx,比如使用dns服务器 nameserver
8.8.8.8,如果有,修改一个可用的dns服务器,如8.8.8.8或者4.4.4.4,保存退出即可!
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo