ORACLE数据库实操培训汇编.docx

上传人:b****6 文档编号:7844619 上传时间:2023-01-26 格式:DOCX 页数:19 大小:59.88KB
下载 相关 举报
ORACLE数据库实操培训汇编.docx_第1页
第1页 / 共19页
ORACLE数据库实操培训汇编.docx_第2页
第2页 / 共19页
ORACLE数据库实操培训汇编.docx_第3页
第3页 / 共19页
ORACLE数据库实操培训汇编.docx_第4页
第4页 / 共19页
ORACLE数据库实操培训汇编.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

ORACLE数据库实操培训汇编.docx

《ORACLE数据库实操培训汇编.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库实操培训汇编.docx(19页珍藏版)》请在冰豆网上搜索。

ORACLE数据库实操培训汇编.docx

ORACLE数据库实操培训汇编

1.使用tnsnames.ora文件配置本地服务名

步骤:

1)切换到oracle用户

su-oracle

2)进入配置目录

cd$ORACLE_HOME/network/admin

3)配置本地服务名

tnsnames.ora配置文件用于配置本地服务名,可以手工修改文件配置,也可以通过netca工具配置。

打开tnsnames.ora文件:

vitnsnames.ora

拷贝样例连接串:

YXDB=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=james)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=yxdb)

配置新的服务名连接串:

NEW_YXDB=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=james)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=yxdb)

4)测试新的服务名连接串的可用性

在oracle用户下,执行tnspingnew_yxdb

如下表示正常状态:

[oracle@jamesadmin]$tnspingnew_yxdb

TNSPingUtilityforLinux:

Version11.2.0.4.0-Productionon18-MAY-201611:

51:

32

Copyright(c)1997,2013,Oracle.Allrightsreserved.

Usedparameterfiles:

/oracle/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora

UsedTNSNAMESadaptertoresolvethealias

Attemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.101)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=yxdb)))

OK(0msec)

注释:

2.根据需求输出相应结果集(groupby,多表链接等)

例1:

分组函数groupby

计算按照工作职位分类最高平均工资和最低平均工资数。

SQL>SELECTMAX(AVG(sal)),MIN(AVG(sal))FROMEMPGROUPBYJOB;

例2:

多表链接

查询职员名称,组织编号,组织名称,公司位置。

selecte.ename,d.deptno,d.dname,d.locfromdeptd,empewhered.deptno=e.deptno;

3.根据要求编写存储过程,函数,视图

例1:

编写存储过程:

创建一个存储过程,查询员工姓名,员工岗位,雇佣日期和薪水。

CREATEORREPLACEPROCEDUREselectemp(employeenoININTEGER)

IS

employeenamevarchar2(20);

employeejobvarchar2(9);

employeehiredatedate;

employeesalnumber(7,2);

BEGIN

selectename,job,hiredate,sal

INTOemployeename,employeejob,employeehiredate,employeesal

FROMemp

WHEREempno=employeeno;

DBMS_OUTPUT.put_line('员工姓名'

||employeename

||'员工岗位'

||employeejob

||'雇佣日期'

||employeehiredate

||'薪水'

||employeesal);

EXCEPTION

WHENOTHERS

THEN

DBMS_OUTPUT.put_line('ERRORS!

!

!

');

END;

/

例2:

编写函数:

创建一个函数,返回3.14*(f*f)的值。

CREATEORREPLACEFUNCTIONarea(ffloat)

RETURNfloat

IS

BEGIN

RETURN3.14*(f*f);

ENDarea;

例3:

编写视图:

创建一个视图,可以查询员工的姓名,工作,雇佣日期,工资,组织名称。

createviewaccounting_viewas

select

e.ename"employee_name",

e.job"job",

e.hiredate"hiredate",

e.sal"salary",

d.dname"dep_name"

fromdeptd,empe

wheree.deptno=d.deptno;

4.数据库存储管理操作

步骤:

假设存在表空间TEST,要求给该表空间添加数据文件。

1)确认表空间TEST已存在的数据文件路径和大小

SQL>createtablespacetestadddatafile‘/oracle/app/oracle/oradata/yxdb/test01.dbf’size2M;

SQL>selectfile_name,tablespace_name,bytes/1024/1024fromdba_data_fileswheretablespace_name='TEST';

FILE_NAMETABLESPACE_NAMEBYTES/1024/1024

------------------------------------------------------------------------------------------

/oracle/app/oracle/oradata/yxdb/test01.dbfTEST2

2)按照需求添加数据文件,大小为2M,不开启自动扩展

SQL>altertablespacetestadddatafile'/oracle/app/oracle/oradata/yxdb/test02.dbf'size2Mautoextendoff;

Tablespacealtered

5.数据库闪回操作

步骤:

假设数据表被误删除,利用闪回恢复特性恢复误删数据表。

1)确认是否已经开启闪回

SQL>selectflashback_onfromv$database;

FLASHBACK_ON

------------------

NO

2)开启闪回功能

SQL>shutdownimmediate;

SQL>startupmount;

SQL>alterdatabaseflashbackon;

SQL>alterdatabaseopen;

SQL>selectflashback_onfromv$database;

3)确认闪回路径和空间大小

NAMETYPEVALUE

----------------------------------------------------------------------------

db_recovery_file_deststring/oracle/app/oracle/fast_recovery_area

db_recovery_file_dest_sizebiginteger4182M

4)模拟用户误删除数据库表,利用闪回特性恢复误删数据表,并重新命名

SQL>createusertestidentifiedbytestdefaulttablespacetest;

Usercreated.

SQL>grantdbatotest;

Grantsucceeded.

SQL>conntest/test;

Connected.

SQL>createtabletestasselect*fromdba_objectswhererownum<18000;

SQL>droptabletest;

Tabledropped.

SQL>selectobject_name,original_name,ts_name,createtime,droptimefromrecyclebin;

OBJECT_NAMEORIGINAL_NAMETS_NAMECREATETIMEDROPTIME

----------------------------------------------------------------------------------------------------------------------------------

BIN$Mxf36aYJUX7gU2U4qMAgfA==$0TESTTEST2016-05-18:

13:

16:

192016-05-18:

13:

17:

05

SQL>select*fromtest;

select*fromtest

*

ERRORatline1:

ORA-00942:

tableorviewdoesnotexist

SQL>flashbacktable"BIN$Mxf36aYJUX7gU2U4qMAgfA==$0"tobeforedroprenametotest1;

Flashbackcomplete.

SQL>selectcount(*)fromtest1;

COUNT(*)

----------

17999

6.Impdp/expdb导入导出数据操作

假设需求是导出用户test的表t1,并导入到用户test1中。

步骤:

1)创建模拟数据环境,并创建数据泵目录,以及授权。

SQL>createtabletest.t1tablespacetestasselect*fromdba_objectswhererownum<1000;

Tablecreated.

SQL>createusertest1identifiedbytest1defaulttablespacetest;

Usercreated.

SQL>grantdbatotest1;

Grantsucceeded.

SQL>!

---创建dump目录

[oracle@james~]$mkdirdump

[oracle@james~]$pwd

/home/oracle

[oracle@james~]$cddump

[oracle@jamesdump]$pwd

/home/oracle/dump

[oracle@jamesdump]$exit

exit

---创建数据泵目录,并授权

SQL>createorreplacedirectorydumpas'/home/oracle/dump';

Directorycreated.

SQL>grantread,writeondirectorydumptopublic;

Grantsucceeded.

2)导出用户test的数据表t1

expdp\"/assysdba\"directory=dumpdumpfile=t1.dmptables=test.t1logfile=t1.log

3)导入用户test的数据表t1到用户test2里

impdp\"/assysdba\"directory=dumpdumpfile=t1.dmpremap_schema=test:

test1logfile=test1.log

7.数据文件损坏的恢复操作(rman)

假设数据文件损坏,需利用备份进行恢复。

前提是使用RMAN进行全备份,确保备份集的完整。

步骤:

1)全备数据库

mkdir-p/home/oracle/backup

rmantarget/catalogrman/rman@catalog

run{

backupascompressedbackupsetfulldatabase

format'/home/oracle/backup/full_bk_%u%p%s.rmn'

includecurrentcontrolfile;

backupascompressedbackupsetarchivelogall

format'/home/oracle/backup/arch_bk_%u%p%s.rmn'

deleteallinput;

}

2)模拟数据文件损坏

[oracle@james~]$cd/oracle/app/oracle/oradata/yxdb

[oracle@jamesyxdb]$ls

control01.ctlredo01.logredo03.logsystem01.dbftest01.dbftest03.dbfundotbs01.dbf

example01.dbfredo02.logsysaux01.dbftemp01.dbftest02.dbftest04.dbfusers01.dbf

[oracle@jamesyxdb]$>test01.dbf(直接清空数据文件)

SQL>shutdownimmediate

ORA-01115:

IOerrorreadingblockfromfile6(block#1)

ORA-01110:

datafile6:

'/oracle/app/oracle/oradata/yxdb/test01.dbf'

ORA-27072:

FileI/Oerror

Additionalinformation:

4

Additionalinformation:

1

3)利用RMAN备份恢复数据库

SQL>shutdownabort

ORACLEinstanceshutdown.

SQL>startupmount

ORACLEinstancestarted.

[oracle@jamesbackup]$rmantarget/

RMAN>restoredatabase;

RMAN>recoverdatabase;

SQL>alterdatabaseopen;

8.重做日志文件损坏的恢复操作(rman)

假设重做日志文件损坏,恢复重做日志需根据实际情况,采用非常规的方式进行修复。

RMAN的备份集只用于恢复数据和归档。

步骤:

1)全备数据库

mkdir-p/home/oracle/backup

rmantarget/catalogrman/rman@catalog

run{

backupascompressedbackupsetfulldatabase

format'/home/oracle/backup/full_bk_%u%p%s.rmn'

includecurrentcontrolfile;

backupascompressedbackupsetarchivelogall

format'/home/oracle/backup/arch_bk_%u%p%s.rmn'

deleteallinput;

}

2)模拟当前重做日志文件损坏

SQL>selectgroup#,members,statusfromv$log;

GROUP#MEMBERSSTATUS

------------------------------------

11INACTIVE

21CURRENT

31INACTIVE

[oracle@james~]$cd/oracle/app/oracle/oradata/yxdb

[oracle@jamesyxdb]$ls

control01.ctlredo01.logredo03.logsystem01.dbftest01.dbftest03.dbfundotbs01.dbf

example01.dbfredo02.logsysaux01.dbftemp01.dbftest02.dbftest04.dbfusers01.dbf

[oracle@jamesyxdb]$echo"">redo02.log(直接清空日志文件)

SQL>startup

ORACLEinstancestarted.

TotalSystemGlobalArea313159680bytes

FixedSize2252824bytes

VariableSize171970536bytes

DatabaseBuffers134217728bytes

RedoBuffers4718592bytes

Databasemounted.

ORA-00313:

openfailedformembersofloggroup2ofthread1

ORA-00312:

onlinelog2thread1:

'/oracle/app/oracle/oradata/yxdb/redo02.log'

ORA-27048:

skgfifi:

fileheaderinformationisinvalid

Additionalinformation:

13

3)恢复重做日志

---设置隐含参数

SQL>altersystemset"_allow_resetlogs_corruption"=truescope=spfile;

Systemaltered.

SQL>shutdownimmediate

ORA-01109:

databasenotopen

Databasedismounted.

ORACLEinstanceshutdown.

SQL>startup

ORACLEinstancestarted.

TotalSystemGlobalArea313159680bytes

FixedSize2252824bytes

VariableSize176164840bytes

DatabaseBuffers130023424bytes

RedoBuffers4718592bytes

Databasemounted.

ORA-00313:

openfailedformembersofloggroup2ofthread1

ORA-00312:

onlinelog2thread1:

'/oracle/app/oracle/oradata/yxdb/redo02.log'

ORA-27048:

skgfifi:

fileheaderinformationisinvalid

Additionalinformation:

13

SQL>showparameterreset

NAMETYPEVALUE

----------------------------------------------------------------------------

_allow_resetlogs_corruptionbooleanTRUE

---进行不完全恢复

SQL>recoverdatabaseuntilcancel;

ORA-00279:

change739425generatedat05/20/201611:

48:

48neededforthread1

ORA-00289:

suggestion:

/home/oracle/flash/YXDB/archivelog/2016_05_20/o1_mf_1_50_%u_.arc

ORA-00280:

change739425forthread1isinsequence#50

Specifylog:

{=suggested|filename|AUTO|CANCEL}

ORA-00308:

cannotopenarchivedlog

'/home/oracle/flash/YXDB/archivelog/2016_05_20/o1_mf_1_50_%u_.arc'

ORA-27037:

unabletoobtainfilestatus

Linux-x86_64Error:

2:

Nosuchfileordirectory

Additionalinformation:

3

ORA-01547:

warning:

RECOVERsucceededbutOPENRESETLOGSwouldgeterrorbelow

ORA-01194:

file1needsmorerecoverytobeconsistent

ORA-01110:

datafile1:

'/oracle/app/oracle/oradata/yxdb/system01.dbf'

SQL>alterdatabaseopen;

alterdatabaseopen

*

ERRORatline1:

ORA-01589:

mustuseRESETLOGSorNORESETLOGSoptionfordatabaseopen

SQL>alterdatabaseopenresetlogs;

alterdatabaseopenresetlogs

*

ERRORatline1:

ORA-01092:

ORACLEinstanceterminated.Disconnectionforced

ORA-00600:

internalerrorcode,arguments:

[2662],[0],[739432],[0],

[740004],[4194432],[],[],[],[],[],[]

ProcessID:

9525

SessionID:

125Serialnumber:

5

SQL>!

[oracle@james~]$ps-ef|greppmon

oracle271910

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1