大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
具体如下:
10年积累的成都网站设计、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有宽甸免费网站建设让你可以放心的选择与我们合作。
1、第一步,创建一个新的存储过程,见下图,转到下面的步骤。
2、第二步,完成上述步骤后,修改存储过程。
此存储过程具有一个输入参数(pid)和一个输出参数,即通过用户id查询用户名并返回名称,见下图,转到下面的步骤。
3、第三步,完成上述步骤后,调试存储过程,找到新创建的存储过程,右键单击[test]按钮,见下图,转到下面的步骤。
4、第四步,完成上述步骤后,修改id值,然后单击左上角的“倒三角”按钮以开始调试,见下图,转到下面的步骤。
5、第五步,完成上述步骤后,按[CTRL +
N]进行单步调试,按[CTRL + O]单步调试,按[CTRL + T]退出调试,或者单击调试工具进行调试,见下图,转到下面的步骤。
6、第六步,完成上述步骤后,可以在窗口底部输入变量名称,以观察变量的变化,见下图,转到下面的步骤。
7、第七步,完成上述步骤后,可以查看调试结果,见下图。这样,就解决了这个问题了。
1、新建存储过程,Create or Replace Procedure CHK_SYS_EMP 检查系统工号。
2、定义参数及变量:(TREV IN VARCHAR2,TRES OUT VARCHAR2) IS C_EMP VARCHAR2(25)。
3、存储过程框架用Begin开始,End结束。
4、查看需要调用表的结构以及相关字段。会用到表中的 EMP_NO ENABLED。
5、存储过程按需添加SQL语句。
6、程序运行测试OK。
第一种:只读。参数是只读的,不能修改,即调用时传递进来的是常量,或者变量(但变量不能在存储过程中修改)。通常select及DML类型的存储过程传递的是in类型的参数。
第二种:只写。忽略调用语句传递的任何参数,并在函数(过程)内部给这些参数赋值,因此是只写的。(这种情况是在函数或过程内部给参数重新赋值,但重新赋值后的参数是无法被外部调用的(好像游标类型的参数除外))
CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部调用:
set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;
无法在外部访问到firstValue与secondValue的值。此时打印出的结果为:
first is
second is
第三种:读或写。这可以完全控制参数,读取传递的参数的值。可以再函数(过程)内部修改参数的值,在退出函数(过程)后,这些参数被赋给在函数内部写入的值,这样就可以返回多个值。(即入口参数写入值后,可以传递到函数(过程)的外部,供外部调用的时候使用)
ps:函数中的返回值为如下几种:
char; varchar2; number; integer; date; boolean; table; record
SQL CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /
Procedure created.
SQL DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B
PL/SQL procedure successfully completed.
Oracle数据库能运行在 种模式下:归档模式(archivelog)和非归档模式(noarchivelog) 归档模式能提高Oracle数据库的可恢复性 生产数据库都应该运行在此模式下 归档模式应该和相应的备份策略相结合 只有归档模式没有相应的备份策略只会带来麻烦
检查归档模式命令
SQL archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence Current log sequence
设置归档模式
SQL shutdown immediate; Database closed Database di *** ounted ORACLE instance shut down SQL startup mount ORACLE instance started Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted SQL alter database archivelog; Database altered SQL alter database open; Database altered SQL archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence Next log sequence to archive Current log sequence
如果需要停止归档模式 使用 alter database noarchivelog 命令 Oracle g之前 你还需要修改初始化参数使数据库处于自动归档模式 在pfile/spfile中设置如下参数
log_archive_start = true
重启数据库此参数生效 此时数据库处于自动归档模式 也能在数据库启动过程中 手工执行
archive log start
使数据库启用自动归档 不过重启后数据库仍然处于手工归档模式 g使用db_recovery_file_dest来作为归档日志的存放地
SQL show parameter db_recovery NAME TYPE VALUE db_recovery_file_dest string /home/oracle/ora g/flash_reco very_area/ db_recovery_file_dest_size big integer G
能修改db_recovery_file_dest_size参数的大小
alter system set db_recovery_file_dest_size=
一
重做日志文件把对数据文件的修改在写入数据文件之前记录下来 日志文件以一种循环的方式被写入信息 当一个日志组被写满时 回自动向另一个日志组写入 管理员可以手工切换当前日志组 alter system switch logfile 可以切换当前的日志组 当日志组发生切换时 oracle向新的重做日志组分配一个日志序列号 当存在大量的事务时必须调整重做日志文件的大小 以避免频繁的日志切换发生 重做日志文件被顺序的写在磁盘上 如果磁盘没有其他活动 I/O将会很快 应该把重做日志文件保存在单独的磁盘上 以获取良好的性能 尤其不要把经常处于活动状态的SYSTEM UNDOTBS SYSAUX的表空间或索引表空间文件保存到同一块磁盘上 因为只有在事务的请求被写到重做日志后 请求才能被完成 最大限度的提高重做日志的吞吐量是oracle性能优化首先考虑的因素 当发生重做日志切换而生成一个新的检查点时 DBWn就会写脏缓冲器块 这样会影响oracle的性能 可以通过fast_start_mttr_target初始化参数来调整检查点
每个数据库都有自己的联机重做日志组 一个联机重做日志组有多个重做日志成员 每个日志成员有单独的操作系统文件 在一个rac配置(这种配置中单个数据库装有多个实例) 每个实例有一个联机重做日志线程 每个实例的lgwr进程都写到相同的联机重做日志文件 因此oracle必须跟踪数据库实例修改来自那个实例
当多路复用重做日志文件时 应该把一个组的成员保存在不同的磁盘上 以避免单点故障的发生 如果重做日志文件组的所有成员都无法写入数据 oracle将被挂起 Dba可以在创建数据库时创建多个联机重做日志文件的副本
对日志的操作如下
a 创建新的重做日志组
Alter database add logfile
Group ( /ora /oradata/mydb /redo log
/ora /oradata/mdb /redo log ) size m;
如果省略group子句 oracle分配一个有效的编号 如下
Alter database add logfile
b 添加新的组成员
alter database add logfile member
/ora /oradata/mydb /redo log to group ;(向第二组中添加新的成员)
c 重命名日志成员
在重命名日志组成员之前新的目标必须已经存在 Oracle的sql命令只是把控制文件中的内部指针指向新的日志文件 Dba需要用操作系统命令来重命名此日志文件 步骤如下
.关闭数据库
.使用操作系统命令重命名或移动日志文件
启动数据库实例(start mount) 重命名控制文件中的日志文 件成员 Alter database rename file old_redo_file_name to new_redo_file_name ;
.打开数据库 alter database open
.备份控制文件
D.删除重做日志组
将要被删除的重做日志组不能是活动的日志组 Alter database drop logfile group ; 当重做日志文件被删除后 相关的操作系统文件也被删除 相关的数据库控制文件也给更新
E.使用和删除重做日志组相同的方式 dba可以只删除一个非活动的重做日志组的成员
Alter database drop logfile member /ora /oradata/mydb /redo log ;
f 创建联机重做日志文件
当重做日志组成员遭到破坏时 可以删除并重新添加这个重做日志组或组成员
二
档案重做日志文件
它是联机重做日志文件的一个副本 Lgwr和arcn进程的故障都会引起数据库的挂起 只有当arcn进程把联机重做日志写到归档地后 才可以向此重做日志组成员写入数据
设置归档目的地
可以在参数初始化文件中的log_archive_dest_n来定义归档目的地 归档目的地可以在本地计算机上 也可在远程的数据库服务器上 定义语法如下
LOG_ARCHIVE_DEST_n= null_string |
(service=tnsnames_name |
LOCATION= directory_name )
[MANDATORY | OPTIONAL]
[REOPEN[=integer]]
例
LOG_ARCHIVE_DEST_ =((LOCATION= /archive/MYDB ) MANDATORU REOPEN= )定义归档日志的位置为/archive/MYDB mandatory子句的定义向这个位置写日志的操作必须的成功的 Reopen子句定义在日志写入失败时 下次尝试写入操作的时间间隔 缺省是 秒
例
LOG_ARCHIVE_DEST_@=(SERVICE=STDBY ) OPTIONAL REOPEN;语句中的stdby 的连接到远程数据库的oracle net连接串 由于写操作是可选的 所以数据库活动继续 当arcn进程不能写档案日志文件时 进程将立即尝试重新写入(这个动作有reopen子句来定义)
Log_archive_min_succeed_dest:定义最少归档日志的副本数量
Log_archive_format:定义归档日志文件采用的名称和使用的格式 可以使用预定义变量来构造每个归档日志文件的名称 变量如下
%s 日志序列号
%t 线程号
%r 复位日志id
%d 数据库id
lishixinzhi/Article/program/Oracle/201311/17689