oracle 如何编写定时脚本
用job,具体用法:
成都创新互联公司主要从事成都做网站、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务凌河,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
declare
n_job binary_integer;
begin
dbms_job.submit(n_job, '你要执行的东西', sysdate, TRUNC(LAST_DAY(SYSDATE))+4+2/24);
end;
-- 每月4号执行
dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(LAST_DAY(SYSDATE))+4+2/24');
-- 每分钟执行一次
dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(sysdate,’mi’) + 1 / (24*60)');
-- 凌晨两点执行
dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(sysdate) + 1 + 2/24');
-- 每周一凌晨2点执行 周一是每周的第二天next_day(sysdate,2)同理周二是第三天,next_day(sysdate,3)
dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(next_day(sysdate,2))+2/24');
-- 每月1日凌晨两点执行
dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(LAST_DAY(SYSDATE))+1+2/24');
-- 每季第一天凌晨两点执行
dbms_job.submit(n_job_01,'你调的东西',sysdate,'TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24');
-- 每年7月1日和1月1日凌晨2点
dbms_job.submit(n_job_01,'你调的东西',sysdate,'ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24');
-- 每年1月1日凌晨2点执行
dbms_job.submit(n_job_01,'你调的东西',sysdate, 'Add_months(trunc(sysdate,'yyyy'), 12) +2/24');
win10系统下怎样用oracle生成新建数据库脚本
1/s/1gfa3e63;这里是我在Oracle官网下载好了Windows系统64位的安装包,有2个zip文件。不想去官网找下载地址的童鞋可以直接用这个百度云盘的下载链接。1.去下载最新的oracle11g安装包的压缩文件,有2个压缩文件,都需要下载,下载完成以后需要解压缩在同一个目录下。在开始oracle数据安装之前建议:1.关闭本机的病毒防火墙。2.断开互联网。这样可以避免解压缩丢失文件和安装失败。2.我在下载好2个zip文件后,都解压在了database目录中。如下图:3.进入database双击 setup.exe 开始安装,在如下图:4.出现如下选项,选择是,继续安装。当然这是我机器出现了这个情况,可能你的满足要求了。。。5.取消勾,点击下一步:6.Oracle在进行安装的时候都会询问是否同时创建一个数据库出来,此处选择“创建和配置数据库”。7.每一个数据库可以想象为一个实例,所以此处表示只存在一个数据库的含义8.此处选择“高级安装”。9.语言现在选择支持“简体中文”和“英文”。10.选择“企业版”。11.此处设置Oracle的安装目录,将其安装到app目录下。12.选择一般事物 13.此处输入数据库的名称,同时SID与数据库的名称相同。14.使用默认配置,如下图:15.Oracle本身提供了多个操作用户,为了简单管理,所有的密码都统一设置为“oracleadmin”。随后将进行安装环境的检验,如果检验之中出现了错误,则会提示用户,或者由用户选择“忽略”。16.选择完成开始安装17.而后进入到了oracle的安装界面。此界面会运行一段时间,在此界面完成之后出现的任何界面都不要点任何的确定按钮,因为还需要进行后续的配置。18.安装完成之后会进入到配置用户口令界面,点击 用户口令 设置密码。此界面之中需要进行用户名及密码的配置,在使用Oracle数据库过程之中,主要使用三个用户(有三个用户的密码是public password,在实际中不可以使用):超级管理员:sys / change_on_install;普通管理员:system / manager;普通用户:scott / tiger,此用户需要配置解锁;19.完成之后选择“确定”那么再之后就可以进入到安装完成的界面,选择“关闭”即可。20.在Oracle安装完成之后,可以通过windows的服务找到所有与Oracle有关的服务选项。21.所有的服务建议将其全部修改为手工启动,这样电脑的启动速度可以快一些。但是有两个服务是必须启动的:OracleOraDb11g_home1TNSListener:数据库的监听服务,当使用任何的编程语言或者是前台工具连接数据库的时候,此服务必须启动,否则无法连接;OracleServiceSYNC:指的是数据库的实例服务,实例服务的命名规范“OracleServiceSID”,一般SID的名称都和数据库的名称保持一致,每一个数据库的服务都会创建一个sid。这里我的数据库的SID是sync。2. 使用sqlplus命令设置数据库1.当oracle安装完成之后,下面就需要对其进行使用,Oracle本身提供了一个“sqlplus.exe”的操作命令,直接运行此命令即可。2.此处输入用户名为scott,密码为tiger。 3.在数据库之中会存在多张数据表,那么下面发出一个查询emp表的操作命令,输入命令如下,默认的显示方式并不是特别的好,此处可以使用以下的命令更改显示方式 4.在Oracle之中会存在多种用户,如果要想切换不同的用户,可以使用如下的命令完成,如果现在使用的是sys用户登录,那么就必须加上“AS SYSDBA”表示由管理员登录,其他用户不需要。CONN 用户名/密码 [AS SYSDBA] ;范例:使用sys登录conn sys/change_on_install AS sysdba 如果要想查看当前用户输入“show user”命令即可查看。show user 5.如果说现在使用sys用户登录,并且发出同样的查询命令,会发现找不到emp表的错误提示:6.因为这张表属于scott用户,所以当使用scott用户登录的时候可以直接使用此表,但是如果换了一个用户,那么就必须使用这个表的完整名称“用户名.表名称”,emp属于scott的,所以全名是“scott.emp”。以上所述是小编给大家带来的Oracle11g数据库win8.1系统安装配置图文教程,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
关于Oracle一些常用脚本的汇总(2)
碎片检查
select tablespace_name sqrt(max(blocks)/sum(blocks))*
( /sqrt(sqrt(count(blocks)))) fsfi
from dba_free_space
group by tablespace_name order by ;
fsfi值越小 碎片越大 自由空间碎片索引
检查reverse_key index
select o object_name
from dba_objects o
where wner= DB_ACCT
AND O OBJECT_ID IN
(SELECT I OBJ# FROM SYS IND$ I
WHERE BITAND(I PROPERTY )= )
查具体后台进程号
select spid from v$session a v$process b where a PADDR=b ADDR and sid=
查看死锁表
SELECT SID DECODE(BLOCK NO YES ) BLOCKER
DECODE(REQUEST NO YES ) WAITER
FROM V$LOCK
WHERE REQUEST OR BLOCK
ORDER BY block DESC;
查看剩余表空间
select a tablespace_name free/total* pct_free free/ / free(M) from
(select sum(bytes) free tablespace_name from dba_free_space group by tablespace_name) a
(select sum(bytes) total tablespace_name from dba_data_files group by tablespace_name) b
where a tablespace_name=b tablespace_name
order by pct_free;
查看创建索引的进度
select sid message from v$session_longops where sid = order by start_time
查看缴费到帐
SELECT AREA_ID to_char(sysdate yyyy mm dd hh :mi:ss ) to_char(count( )) as cnt FROM ACCT_PAY_INTERFACE
WHERE PAY_DATE=sysdate and FLAG= group by AREA_Id
查看最消耗资源的sql
SELECT * FROM (SELECT PARSING_USER_ID EXECUTIONS SORTS MAND_TYPE
DISK_READS sql_text FROM v$sqlarea ORDER BY disk_reads DESC ) WHERE ROWNUM
查看占用系统资源的进程号spid
SELECT a username a machine a program a sid a serial# a status c piece c sql_text
FROM v$session a v$process b v$sqltext c WHERE b spid= AND b addr=a paddr AND a sql_address=c address(+)
ORDER BY c piece
查看占用系统io较大的session
SELECT se sid se serial# pr SPID se username se status se terminal se program
se MODULE se sql_address st event st p text si physical_reads si block_changes
FROM v$session se v$session_wait st v$sess_io si v$process pr WHERE st sid=se sid AND st sid=si sid
AND se PADDR=pr ADDR AND se sid AND st wait_time= AND st event NOT LIKE %SQL% ORDER BY physical_reads DESC
对检索出的结果的几点说明
我是按每个正在等待的session已经发生的物理读排的序 因为它与实际的IO相关
你可以看一下这些等待的进程都在忙什么 语句是否合理?
Select sql_address from v$session where sid=;
Select * from v$sqltext where address=;
执行以上两个语句便可以得到这个session的语句
你也以用alter system kill session sid serial# ;把这个session杀掉
应观注一下event这列 这是我们调优的关键一列 下面对常出现的event做以简要的说明
a buffer busy waits free buffer waits这两个参数所标识是dbwr是否够用的问题 与IO很大相关的 当v$session_wait中的free buffer wait的条目很小或没有的时侯 说明你的系统的dbwr进程决对够用 不用调整 free buffer wait的条目很多 你的系统感觉起来一定很慢 这时说明你的dbwr已经不够用了 它产生的wio已经成为你的数据库性能的瓶颈 这时的解决办法如下
a 增加写进程 同时要调整db_block_lru_latches参数
示例 修改或添加如下两个参数
db_writer_processes=
db_block_lru_latches=
a 开异步IO IBM这方面简单得多 hp则麻烦一些 可以与Hp工程师联系
b db file sequential read 指的是顺序读 即全表扫描 这也是我们应该尽量减少的部分 解决方法就是使用索引 sql调优 同时可以增大db_file_multiblock_read_count这个参数
c db file scattered read 这个参数指的是通过索引来读取 同样可以通过增加db_file_multiblock_read_count这个参数来提高性能
d latch free 与栓相关的了 需要专门调节
e 其他参数可以不特别观注
外部联接 + 的用法
外部联接 + 按其在 = 的左边或右边分左联接和右联接
若不带 + 运算符的表中的一个行不直接匹配于带 + 预算符的表中的任何行
则前者的行与后者中的一个空行相匹配并被返回 若二者均不带 +
则二者中无法匹配的均被返回 利用外部联接 +
可以替代效率十分低下的 not in 运算 大大提高运行速度 例如 下面这条命令执行起来很慢
select a empno from emp a where a empno not in
(select empno from emp where job= SALE );
倘若利用外部联接 改写命令如下:
select a empno from emp a emp b
where a empno=b empno(+)
and b empno is null
and b job= SALE ;
可以发现 运行速度明显提高
如何更改UNDO tablespace
create undo tablespace undotbs datafile D:\oracle\product\ \oradata\qa\undotbs dbf size M;
alter system set undo_tablespace=undotbs scope=both;
create pfile from spfile;
alter tablespace undotbs offline;
drop tablespace undotbs including contents;
将表改成
ALTER TABLE t_monitor_real_minute NOLOGGING;
Oracle RAC的参数文件和单实例参数文件不同 所以修改参数文件时需要注意
首先设置归档路径
SQL alter system set log_archive_dest= /opt/oracle/archive scope=spfile sid= * ;
System altered
SQL select sid name value from v$spparameter where name= log_archive_dest ;
SID NAME VALUE
* log_archive_dest /opt/oracle/archive
然后关闭两个实例 启动实例 更改数据库为归档模式
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 /opt/oracle/archive
Oldest online log sequence
Next log sequence to archive
Current log sequence
lishixinzhi/Article/program/Oracle/201311/17504
oracle数据库,批量插入数据脚本
批量插入数据脚本
1、第一种批量插入数据脚本,可以基本满足要求。理解上较为简单,所以这个最常用。
NEXTVAL和CURRVAL的区别:
1、如果 sequence.CURRVAL 和 sequence.NEXTVAL 都出现在一个 SQL 语句中,则序列只增加一次。在这种情况下,每个 sequence.CURRVAL 和 sequence.NEXTVAL 表达式都返回相同的值,不管在语句中sequence.CURRVAL 和 sequence.NEXTVAL 的顺序。
执行脚本结果如下:
3、两个表,同时批量插入数据的脚本
3、
4、 涉及子表时,批量插入数据脚本,
5、 批量修改数据 :
时间取数方式:
一、SYSTIMESTAMP(取当前系统值)
二、SYSDATE(取当前系统值,但只精确到时,分和秒都为0)
三、固定值为:TO_TIMESTAMP ('2019-2-12 15:24:45.703000', 'yyyy-mm-dd hh24:mi:ss.ff6')
把固定的字段改为变量:
方式一:’||i||’ 例:’{“no”:“111’||i||’”}’(此方式)
方式二:concat 例:concat(concat(’{“blNo”:111"’,i),’"}’)
nbu7.5备份oracle怎么设置脚本
1
、
建立连接
[root@localhost ~]#
su - oracle
[oracle@localhost ~]$
cd /usr/openv/netbackup/bin
[oracle@localhost bin]$
./oracle_link
2012
年
08
月
25
日星期六
09:43:28 CST
All Oracle instances should be shutdown before running this script.
Please log into the Unix system as the Oracle owner for running this script
Do you want to continue? (y/n) [n] y
LIBOBK path: /usr/openv/netbackup/bin
ORACLE_HOME: /orcl/oracle
Oracle version: 10.2.0.1.0
Platform type: i686
Linking LIBOBK:
ln -s /usr/openv/netbackup/bin/libobk.so /orcl/oracle/lib/libobk.so
Done
Please check the trace file located in /tmp/make_trace.4459
to make sure the linking process was successful.
2
、
创建备份脚本
[root@localhost ~]#
mkdir -p /usr/openv/netbackup/script
[root@localhost ~]#
cd /usr/openv/netbackup/ext/db_ext/oracle/samples/rman
[root@localhostrman]#
ls
cold_database_backup.sh
database_restore.sh
hot_tablespace_backup.sh
cold_duplex_database_backup_full.sh
hot_database_backup.sh
pit_database_restore.sh
[root@localhostrman]#
cp hot_database_backup.sh /usr/openv/netbackup/script/
[root@localhostrman]#
cd /usr/openv/netbackup/script/
[root@localhost script]#
ls
hot_database_backup.sh
[root@localhost script]#
mv hot_database_backup.sh rman.sh
[root@localhost script]#
chmodo+x rman.sh
[root@localhost script]#
vi rman.sh
#!/bin/sh
# $Header: hot_database_backup.sh,v 1.2 2002/08/06 23:51:42 $
#
#bcpyrght
#***************************************************************************
#* $VRTScprght: Copyright 1993 - 2008 Symantec Corporation, All Rights Reserved $ *
#***************************************************************************
#ecpyrght
#
# ---------------------------------------------------------------------------
#
hot_database_backup.sh
# ---------------------------------------------------------------------------
#
This script uses Recovery Manager to take a hot (inconsistent) database
#
backup. A hot backup is inconsistent because portions of the database are
#
being modified and written to the disk while the backup is progressing.
#
You must run your database in ARCHIVELOG mode to make hot backups. It is
#
assumed that this script will be executed by user root. In order for RMAN
#
to work properly we switch user (su -) to the oracle dba account before
#
execution. If this script runs under a user account that has Oracle dba
#
privilege, it will be executed using this user's account.
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
# Determine the user which is executing this script.
# ---------------------------------------------------------------------------
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
# ---------------------------------------------------------------------------
# Put output in this file name.out. Change as desired.
# Note: output directory requires write permission.
# ---------------------------------------------------------------------------
RMAN_LOG_FILE=${0}.out
# ---------------------------------------------------------------------------
# You may want to delete the output file so that backup information does
# not accumulate.
If not, delete the following lines.
# ---------------------------------------------------------------------------
if [ -f "$RMAN_LOG_FILE" ]
then
rm -f "$RMAN_LOG_FILE"
fi
# -----------------------------------------------------------------
# Initialize the log file.
# -----------------------------------------------------------------
echo $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Log the start of this script.
# ---------------------------------------------------------------------------
echo Script $0 $RMAN_LOG_FILE
echo ==== started on `date` ==== $RMAN_LOG_FILE
echo $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Replace /db/oracle/product/ora81, below, with the Oracle home path.
# ---------------------------------------------------------------------------
ORACLE_HOME=/u01/app/oracle/product/11.2.0/
export ORACLE_HOME
Oracle HOME
目录,可通过
env
命令查出
# ---------------------------------------------------------------------------
# Replace ora81, below, with the Oracle SID of the target database.
# ---------------------------------------------------------------------------
ORACLE_SID=orcl
export ORACLE_SID
Oracle
实例名
# ---------------------------------------------------------------------------
# Replace ora81, below, with the Oracle DBA user id (account).
# ---------------------------------------------------------------------------
ORACLE_USER=oracle
Oracle
系统账户
# ---------------------------------------------------------------------------
# Set the target connect string.
# Replace "sys/manager", below, with the target connect string.
# ---------------------------------------------------------------------------
TARGET_CONNECT_STR=sys/Qweasd123
Sys
用户及其密码
# ---------------------------------------------------------------------------
# Set the Oracle Recovery Manager name.
# ---------------------------------------------------------------------------
RMAN=$ORACLE_HOME/bin/rman
如何利用脚本文件来管理Oracle数据库
第一步:创建脚本文件。
在Oracle数据库重,创建脚本文件的方式很多。如可以直接在记事本中创建脚本文件,也可以通过SQL*Plus工具直接创建。不过,笔者的意见是,在SQL*Plus中直接创建脚本文件的话,比较麻烦。这主要是因为在SQL*Plus工具中,命令编辑能力非常有效。如不能够使用键盘上的箭头键定位输入的位置,不能够使用DEL键删除输入的内容等等。而且阅读起来也比较困难。
第二步:编辑脚本文件。
在我们使用脚本文件的时候,往往需要根据实际情况,对其进行稍微的调整。对脚本文件进行编辑,也有两种方式。一是通过SQL*Plus工具,二是第三方独立的脚本编辑软件。
对于一些调整不大的脚本文件,我们可以直接利用SQL*Plus工具打开,然后进行编辑。但是,对于需要进行大量修改的脚本文件,则笔者建议数据库管理员采用第三方独立的脚本编辑软件。原因很简单,就如同上面所说的那样,SQL*Plus工具脚本命令编辑功能非常的薄弱。若采用这个工具对现成的脚本语句进行编辑的话,则可能工作量还是重新编写一个来的轻。所以,数据库管理员要根据实际的情况,选择合适的脚本编辑工具。
另外,在编辑的过程中,要注意语法的正确性。特别是要注意,不能够改变其固有的格式。如不要不小心删除了最后的“/”符号结束。
第三步:运行脚本文件。
脚本建立好之后,如何运行脚本呢?在Oracle系统中也提供了许多方式。数据库管理员可以根据自己的使用习惯来进行选择。
一是通过Start语句来调用脚本文件。其语法是Start Filemame[相关参数]。在运行这个命令的时候,需要注意几个问题。
1、脚本文件的扩展名问题。上面在建立脚本文件的时候,笔者就跳掉过,为了在SQL*Plus等工具中可以直接调用这个脚本文件,最好能够把扩展名改为Oracle数据库能够接受的扩展名。默认情况下,扩展名设置为SQL即可。
2、脚本文件的路径问题。若用户在利用Start调用脚本文件的时候,若没有清楚的指名保存路径的话,则SQL*Plus工具会现在当前的目录中进行查找;若没有的话,则会根据环境变量中确定的目录中进行查找。而一般情况下,我们把脚本文件都会独立存放。所以,在使用Start命令执行脚本文件的时候,最好能够注明脚本文件的绝对路径名。防止语句执行错误。
另外@命令也可以起到跟Start命令一样的作用。只不过,前者的使用范围更广一点。@命令可以脱离SQL*PLUS工具而使用。如可以直接在微软操作系统中的命令行方式下使用。当然,这操作系统要事先部署了Oracle数据库环境。
二是可以直接利用SQL*Plus工具打开文本文件,执行脚本语句。然后点击“文件”、“执行”命令执行这个脚本语句。这种方式的好处就是,系统会主动提示用户需要输入的参数。
总之,脚本文件是我们管理Oracle数据库的一大利器。我们好好利用脚本文件,可以提高Oracle数据库的管理效率。毕竟,每次在需要的时候,都去编写命令是一件很麻烦的事情。而脚本文件的最大好处,就是可以提高语句的重复利用,节省我们编写语句、调试测试的时间。
分享标题:oracle怎么设置脚本 oracle添加字段脚本
当前链接:http://lswzjz.com/article/hjiood.html