导航:首页 > 程序命令 > oracle命令行

oracle命令行

发布时间:2022-02-22 17:54:30

❶ 怎么用命令行操作oracle数据库

众所周知,一般操作系统会提供定时执行任务的方法,例如:Unix平台上提供了让系统定时执行任务的命令Crontab。但是,对于某些需求,例如:一些对数据库表的操作,最为典型的是证券交易所每日收盘后的结算,它涉及大量的数据库表操作,如果仍然利用操作系统去定时执行,不仅需要大量的编程工作,而且还会出现用户不一致等运行错误,甚至导致程序无法执行。

一、分析问题

事实上,对于以上需求,我们可以利用数据库本身拥有的功能Job Queue(任务队列管理器)去实现。任务队列管理器允许用户提前调度和安排某一任务,使其能在指定的时间点或时间段内自动执行一次或多次,由于任务在数据库中被执行,所以执行效率很高。

任务队列管理器允许我们定制任务的执行时间,并提供了灵活的处理方式,还可以通过配置,安排任务在系统用户访问量少的时段内执行,极大地提高了工作效率。例如,对于数据库日常的备份、更新、删除和复制等耗时长、重复性强的工作,我们就可以利用任务队列管理器去自动执行以减少工作量。

目前,拥有此项功能的数据库有许多,最有代表性的是SQL Server 7.0、Oracle 8.0.5等。但是,要让任务队列管理器工作,还需要我们加以配置才能实现。SQL Server的功能配置是在一个图形化界面(GUI)中实现的,非常简单。利用OEM客户端管理工具,Oracle的配置也可以在一个图形界面中完成。然而大多数的用户更习惯于命令行的方式去操纵数据库。本文介绍如何通过命令行实现这种配置。

二、实现步骤

1.确保Oracle的工作模式允许启动任务队列管理器

Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令:

svrmgrl> alter system enable restricted session;
或sql> alter system disenable restricted session;

利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。

2.确保Oracle的系统已经配置了任务队列管理器的启动参数

SNP的启动参数位于Oracle的初始化文件中,该文件放在$ORACLE_HOME/dbs路径下,如果Oracle的SID是myora8的话,则初始化文件就是initmyora8.ora,在文件中对SNP启动参数的描述部分如下:

job_queue_process=n
job_queue_interval=N

第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。

第二行定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。

如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效。注意:如果任务要求执行的间隔很短的话,N的配置也要相应地小一点。

3.将任务加入到数据库的任务队列中

调用Oracle的dbms_job包中的存储过程,将任务加入到任务队列中:

dbms_job.submit( job out binary_integer,
whatinarchar2,
next_date indate,
intervalinvarchar2,
no_parseinboolean)

其中:

●job:输出变量,是此任务在任务队列中的编号;

●what:执行的任务的名称及其输入参数;

●next_date:任务执行的时间;

●interval:任务执行的时间间隔。

下面详细讨论一下dbms_job.submit中的参数interval。严格地讲,interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。

将任务加入到任务队列之前,要确定执行任务的数据库用户,若用户是scott, 则需要确保该用户拥有执行包dbms_job的权限;若没有,需要以DBA的身份将权利授予scott用户:

svrmgrl> grant execute on dbms_job to scott;

4.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段

例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令:

sql> variable n number;
sql> begin
dbms_job.submit(:n‘my_job;’,sysdate,
‘sysdate+1/360’);
commit;
end;
/

系统提示执行成功。

Sql> print :n;

系统打印此任务的编号,例如结果为300。

如上,我们创建了一个每隔4分钟执行一次的任务号为300的任务。可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况:

sql> select job,next_date,next_sec,failures,broken from user_jobs;

执行结果如下:


job next_date next_sec failures broken
300 2000/10/10 11:45:15 0 N

这表示任务号为300的任务,下一次将在2000/10/10 11:45:15执行,此任务的执行失败记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它,直到用户调用过程dbms_job.broken,重新设置为not broken,或强制调用dbms_job.run来重新执行它。

除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务。例如:dbms_job.change 、 dbms_job.what、dbms_job.interval可以用来修改提交的任务。要想删除该任务,只需运行dbms_job.remove(n)即可,其中n为任务号。

❷ oracle怎么运行cmd命令

可以在plsql中使用sysdb的身份登陆来执行这些解锁语句

❸ 使用命令行创建ORACLE数据库

1、使用超级用户登录sqlplus。

2、创建表空间:

SQL> create tablespace test

2 datafile 'D:\oracle\oradata\test\test.dbf'(文件路径)

3 size 100M autoextend on next 10M maxsize unlimited extent management local;

3、创建用户和密码:

SQL> create user Username identified by Password default table

2 users Temporary TABLESPACE Temp;

4、用户受权限:

SQL> grant connect,resource,dba to Username;

5、提交:

SQL> commit;

❹ oracle怎么保存命令行代码

SQL>spool oracle.log
SQL> select * from al;
SQL>spool off
然后检查下oracle.log文件

ctrl+s 会提示保存路径。

❺ 如何用命令行连接oracle数据库

1,非集群下 Windows环境下数据库

conn scott/[email protected]:1521/orcl

conn scott/123456@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =

(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =

(SERVER = DEDICATED)(SERVICE_NAME = orcl)))

Linux环境下数据库

conn scott/123@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST

= 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =

orcl)))

2,集群下连接

conn scott/123@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE = yes)(FAILOVER = on)

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

(PROTOCOL=TCP)(HOST=127.0.0.2)(PORT=1521)))(CONNECT_DATA=(SERVER=default)

(SERVICE_NAME=orcl)))

(5)oracle命令行扩展阅读

在命令行中登录oracle数据库:

sqlplus username/password 如:普通用户登录 sqlplus scott/tiger

sqlplus username/password as sysdba 如:sqlplus sys/admin as sysdba

sqlplus username/password@net_service_name 如: sqlplus scott/tiger@orcl

sqlplus username/password@//host:port/sid

❻ oracle 命令行 执行触发器报错

在PL/SQL中脚本运行不正常的,你登入SQL*PLUS运行的话就不会错了。
PL/SQL的命令窗口与SQL*PLUS环境不完全一样的,有些命令语句在PL/SQL中不好使的。

❼ 如何通过命令行启动oracle

  1. 打开命令行窗口界面,可以同时按住“ctrl+R”键,在弹出来的运行窗口中输入cmd。

  2. 启动oracle服务,在命令行窗口中输入“net start oracleserviceXXXX”后面的XXXX实际是需要根据您自己的数据库实例名进行替换。如果您不知道,可以看下“计算机管理”界面下的服务中,能不能找到服务名类似的服务。提示“服务已经启动成功”就说明服务启动起来了。

  3. 启动监听程序,在命令行窗口输入lsnrctl start,等到提示“命令执行成功”就可以了。

❽ cmd oracle命令

一、ORACLE的启动和关闭
1、在单机环境下
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle

a、启动ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>startup
SVRMGR>quit

b、关闭ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>shutdown
SVRMGR>quit

启动oracle9i数据库命令:
$ sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Proction on Fri Oct 31 13:53:53 2003

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup^C

SQL> startup
ORACLE instance started.


2、在双机环境下
要想启动或关闭ORACLE系统必须首先切换到root用户,如下
su - root

a、启动ORACLE系统
hareg -y oracle

b、关闭ORACLE系统
hareg -n oracle

Oracle数据库有哪几种启动方式


说明:

有以下几种启动方式:
1、startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库

读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。


2、startup mount dbname
安装启动,这种方式启动下可执行:
数据库日志归档、
数据库介质恢复、
使数据文件联机或脱机,
重新定位数据文件、重做日志文件。

执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,
但此时不对数据文件和日志文件进行校验检查。


3、startup open dbname
先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,
这种方式下可访问数据库中的数据。


4、startup,等于以下三个命令
startup nomount
alter database mount
alter database open


5、startup restrict
约束方式启动
这种方式能够启动数据库,但只允许具有一定特权的用户访问
非特权用户访问时,会出现以下提示:
ERROR:
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用


6、startup force
强制启动方式
当不能关闭数据库时,可以用startup force来完成数据库的关闭
先关闭数据库,再执行正常启动数据库命令


7、startup pfile=参数文件名
带初始化参数文件的启动方式
先读取参数文件,再按参数文件中的设置启动数据库
例:startup pfile=E:Oracleadminoradbpfileinit.ora


8、startup EXCLUSIVE
二、用户如何有效地利用数据字典
ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化,
体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。

数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。
我们不能手工修改数据字典里的信息。

很多时候,一般的ORACLE用户不知道如何有效地利用它。

dictionary 全部数据字典表的名称和解释,它有一个同义词dict
dict_column 全部数据字典表里字段名称和解释

如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句:

SQL>select * from dictionary where instr(comments,'index')>0;

如果我们想知道user_indexes表各字段名称的详细含义,可以用下面这条SQL语句:

SQL>select column_name,comments from dict_columns where table_name='USER_INDEXES';

依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。

下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。

1、用户

查看当前用户的缺省表空间
SQL>select username,default_tablespace from user_users;

查看当前用户的角色
SQL>select * from user_role_privs;

查看当前用户的系统权限和表级权限
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;

2、表

查看用户下所有的表
SQL>select * from user_tables;

查看名称包含log字符的表
SQL>select object_name,object_id from user_objects
where instr(object_name,'LOG')>0;

查看某表的创建时间
SQL>select object_name,created from user_objects where object_name=upper('&table_name');

查看某表的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&table_name');

查看放在ORACLE的内存区里的表
SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

3、索引

查看索引个数和类别
SQL>select index_name,index_type,table_name from user_indexes order by table_name;

查看索引被索引的字段
SQL>select * from user_ind_columns where index_name=upper('&index_name');

查看索引的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&index_name');

4、序列号

查看序列号,last_number是当前值
SQL>select * from user_sequences;

5、视图

查看视图的名称
SQL>select view_name from user_views;

查看创建视图的select语句
SQL>set view_name,text_length from user_views;
SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小
SQL>select text from user_views where view_name=upper('&view_name');

6、同义词

查看同义词的名称
SQL>select * from user_synonyms;

7、约束条件

查看某表的约束条件
SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
from user_constraints where table_name = upper('&table_name');

SQL>select c.constraint_name,c.constraint_type,cc.column_name
from user_constraints c,user_cons_columns cc
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
and c.owner = cc.owner and c.constraint_name = cc.constraint_name
order by cc.position;

8、存储函数和过程

查看函数和过程的状态
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE';

查看函数和过程的源代码
SQL>select text from all_source where owner=user and name=upper('&plsql_name');


三、查看数据库的SQL
1、查看表空间的名称及大小

select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;

2、查看表空间物理文件的名称及大小

select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;

3、查看回滚段名称及大小

select segment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
max_extents, v.curext CurExtent
From dba_rollback_segs r, v$ro

❾ oracle 命令行查询为什么只显示2

结尾没输入";"字符 显示的"2"并不是结果 而是提示用户继续输入其他语句的行标识符 ORACLE的语句需要以";"来终结

❿ 如何用cmd命令连接oracle数据库

1,非集群下 Windows环境下数据库

conn scott/[email protected]:1521/orcl

conn scott/123456@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =

(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =

(SERVER = DEDICATED)(SERVICE_NAME = orcl)))

Linux环境下数据库

conn scott/123@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST

= 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =

orcl)))

2,集群下连接

conn scott/123@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE = yes)(FAILOVER = on)

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

(PROTOCOL=TCP)(HOST=127.0.0.2)(PORT=1521)))(CONNECT_DATA=(SERVER=default)

(SERVICE_NAME=orcl)))

(10)oracle命令行扩展阅读

在命令行中登录oracle数据库:

sqlplus username/password 如:普通用户登录 sqlplus scott/tiger

sqlplus username/password as sysdba 如:sqlplus sys/admin as sysdba

sqlplus username/password@net_service_name 如: sqlplus scott/tiger@orcl

sqlplus username/password@//host:port/sid

阅读全文

与oracle命令行相关的资料

热点内容
安卓接口如何更换 浏览:396
云音乐程序员上线功能 浏览:39
小天才手表如何查看app的使用时长 浏览:604
编译器多久能写一个 浏览:644
过磅怎么算法钱 浏览:867
同一款手机备份文件夹可以互用吗 浏览:864
matlab图像处理pdf 浏览:61
学python3最好的书 浏览:768
maven下载依赖的命令 浏览:91
二分查找流程图算法 浏览:685
质量问题的算法 浏览:82
c代码编译吃cpu频率还是核心 浏览:171
pdf签名adobe 浏览:405
在家无聊解压图片 浏览:534
单片机拨打电话 浏览:440
单片机问题解说 浏览:795
我的世界手机版命令方块零重力 浏览:689
解压游戏无广告最新版 浏览:423
如何下载养生堂app 浏览:242
oracle中文乱码java 浏览:938