ORACLE数据库实操培训文档格式.docx
《ORACLE数据库实操培训文档格式.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库实操培训文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
配置新的服务名连接串:
NEW_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.根据要求编写存储过程,函数,视图
编写存储过程:
创建一个存储过程,查询员工姓名,员工岗位,雇佣日期和薪水。
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;
/
编写函数:
创建一个函数,返回3.14*(f*f)的值。
CREATEORREPLACEFUNCTIONarea(ffloat)
RETURNfloat
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已存在的数据文件路径和大小
createtablespacetestadddatafile‘/oracle/app/oracle/oradata/yxdb/test01.dbf’size2M;
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,不开启自动扩展
altertablespacetestadddatafile'
/oracle/app/oracle/oradata/yxdb/test02.dbf'
size2Mautoextendoff;
Tablespacealtered
5.数据库闪回操作
假设数据表被误删除,利用闪回恢复特性恢复误删数据表。
1)确认是否已经开启闪回
selectflashback_onfromv$database;
FLASHBACK_ON
------------------
NO
2)开启闪回功能
shutdownimmediate;
startupmount;
alterdatabaseflashbackon;
alterdatabaseopen;
3)确认闪回路径和空间大小
NAMETYPEVALUE
----------------------------------------------------------------------------
db_recovery_file_deststring/oracle/app/oracle/fast_recovery_area
db_recovery_file_dest_sizebiginteger4182M
4)模拟用户误删除数据库表,利用闪回特性恢复误删数据表,并重新命名
createusertestidentifiedbytestdefaulttablespacetest;
Usercreated.
grantdbatotest;
Grantsucceeded.
conntest/test;
Connected.
createtabletestasselect*fromdba_objectswhererownum<
18000;
droptabletest;
Tabledropped.
selectobject_name,original_name,ts_name,createtime,droptimefromrecyclebin;
OBJECT_NAMEORIGINAL_NAMETS_NAMECREATETIMEDROPTIME
----------------------------------------------------------------------------------------------------------------------------------
BIN$Mxf36aYJUX7gU2U4qMAgfA==$0TESTTEST2016-05-18:
13:
16:
192016-05-18:
17:
05
select*fromtest;
select*fromtest
*
ERRORatline1:
ORA-00942:
tableorviewdoesnotexist
flashbacktable"
BIN$Mxf36aYJUX7gU2U4qMAgfA==$0"
tobeforedroprenametotest1;
Flashbackcomplete.
selectcount(*)fromtest1;
COUNT(*)
----------
17999
6.Impdp/expdb导入导出数据操作
假设需求是导出用户test的表t1,并导入到用户test1中。
1)创建模拟数据环境,并创建数据泵目录,以及授权。
createtabletest.t1tablespacetestasselect*fromdba_objectswhererownum<
1000;
Tablecreated.
createusertest1identifiedbytest1defaulttablespacetest;
grantdbatotest1;
!
---创建dump目录
[oracle@james~]$mkdirdump
[oracle@james~]$pwd
/home/oracle
[oracle@james~]$cddump
[oracle@jamesdump]$pwd
/home/oracle/dump
[oracle@jamesdump]$exit
exit
---创建数据泵目录,并授权
createorreplacedirectorydumpas'
/home/ora