关于搭建Oracle数据库遇到的问题(Oracle10g)及解决办法

1、  安装数据库注意事项:

1)  安装路径必须是英文,最好不要有空格。如默认D:\oracle\product\10.2.0

2)  安装完成后,配置监听:

打开D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora 文件,把默认的HOST = Cname 改成 HOST=127.0.0.1(避免在开发过程中遇到的数据库监听适配错误问题);

3)  创建数据库:通过sql Plus 工具以sysdba身份登录,创建表空间,如:

Cmd

sqlplus /nolog

conn /as sysdba

create tablespace WaterSys datafile 'e:/database/WaterSys_DATA.dbf' size 50M autoextend on next 30M maxsize unlimited;

4)  创建用户:

create user abc identified by abc12345 default tablespace WaterSys temporary tablespace temp;

5)  给用户赋予基本权限:

grant connect,resource to abc;

grant dba to abc;(将dba权限赋给abc用户)

权限包括:CREATE  SESSION,  CREATE   ANY   TABLE ,  CREATE   ANY   VIEW  , CREATE   ANY   INDEX ,  CREATE   ANY   PROCEDURE ,

    ALTER   ANY   TABLE ,  ALTER   ANY   PROCEDURE ,

    DROP   ANY   TABLE ,  DROP   ANY   VIEW ,  DROP   ANY   INDEX ,  DROP   ANY   PROCEDURE ,

    SELECT   ANY   TABLE ,  INSERT   ANY   TABLE ,  UPDATE   ANY   TABLE ,  DELETE   ANY   TABLE

6)  撤销权限:

revoke connect, resource from user01;

7)  创建表、存储过程、作业等:

Start 'E:\ DB.sql';或者@E: \DB.sql;

8)  删除表空间:

drop tablespace WaterSys including contents and datafiles;

2、  查看及配置数据库相关信息:

1)  查看所有用户

SELECT   *   FROM  DBA_USERS;

SELECT   *   FROM  ALL_USERS;

SELECT   *   FROM  USER_USERS;

2)  查看用户系统权限

SELECT   *   FROM  DBA_SYS_PRIVS;

SELECT   *   FROM  USER_SYS_PRIVS;

3)  查看用户对象或角色权限

SELECT   *   FROM  DBA_TAB_PRIVS;

SELECT   *   FROM  ALL_TAB_PRIVS;

SELECT   *   FROM  USER_TAB_PRIVS;

4)  查看所有角色

SELECT   *   FROM  DBA_ROLES;

5)  查看用户或角色所拥有的角色

SELECT   *   FROM  DBA_ROLE_PRIVS;

SELECT   *   FROM  USER_ROLE_PRIVS;

6)  查看表空间

select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

7)  查看监听状态

lsnrctl status

8)  启动/停止监听

lsnrctl start/ lsnrctl stop

9)  查看连接数

select count(*) from sys.v_$session;

10)                    查询数据库当前进程的连接数

select count(*) from v$process;

11)                    查看数据库当前会话的连接数

select count(*) from v$session;

12)                    查看数据库的并发连接数

select count(*) from v$session where status='ACTIVE';

13)                    查看当前数据库建立的会话情况

select sid,serial#,username,program,machine,status from v$session;

14)                    查询数据库允许的最大连接数

select value from v$parameter where name = 'processes';

15)                    修改数据库允许的最大进程连接数

alter system set processes = 1000 scope = spfile;

16)                    修改数据库允许的最大会话连接数

alter system set sessions=1150 scope=spfile;

            注意修改参数后要重启:

            SQL> shutdown immediate;

            SQL> startup;

17)                    查看当前有哪些用户正在使用数据

select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

from v$session a,v$sqlarea b

where a.sql_address = b.address

order by cpu_time/executions desc;

18)                    查看SID

SELECT   Name   FROM   v$database;

19)                    查看oracle数据库字符集

select userenv('language') from dual;

20)                    修改oracle数据库字符集

sql> conn / as sysdba;

sql> shutdown immediate;

database closed.

  database dismounted.

  oracle instance shut down.

 sql> startup mount;

  oracle instance started.

  total system global area  135337420 bytes

  fixed size                          452044 bytes

  variable size                     109051904 bytes

  database buffers              25165824 bytes

  redo buffers                      667648 bytes

  database mounted.

 sql> alter system enable restricted session;

  system altered.

 sql> alter system set job_queue_processes=0;

  system altered.

 sql> alter system set aq_tm_processes=0;

  system altered.

 sql> alter database open;

  database altered.

 sql> alter database character set internal_use ZHS16GBK;

 sql> shutdown immediate;

 sql> startup;

3、  当数据库spfile 文件被破坏,数据库无法启动的情况下,解决办法:

1)从pfile 启动数据库

startup pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.628200622196';

            2)创建spfile文件

create spfile from

pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.628200622196';

            3)关闭重启

shutdown immediate;

startup;

4、  使用DBMS_JOB包创建ORACLE定时任务

1 SUBMIT

该过程用于建立一个新的作业,当建立作业的时候,需要通过设置相应的参数来告诉Oracle要执行的内容,要执行的时间,要执行任务的间隔。如下格式:

DBMS_JOB.SUBMIT(

   JOB OUT BINARY_INTERGER,

   WHAT IN VARCHAR2

   NEXT_DATE IN DATE DEFAULT SYSDATE,

   INTERVAL IN VARCHAR2 DEFAULT ‘NULL’,

   NO_PARSE IN BOOLEAN DEFAULT FALSE,

   INSTANCE IN BINARY_INTEGER DEFAULT ANY_INSTANCE,

   FORCE IN BOOLEAN DEFAULT FALSE

);

 

参数说明:

job

用于指定作业编号

what

 用于指定作业要执行的操作

next_date

 用于指定该操作的下一次运行的日期

interval

 用于指定该操作的时间间隔

no_parse

 用于指定是否需要解析与作业相关的过程

instance

 用于指定哪个例程可以运行作业?

force

 用于指定是否强制运行与作业相关的例程

 

interval参数值参考信息:

每天午夜12

 'TRUNC(SYSDATE + 1)'

每天早上830

 'TRUNC(SYSDATE + 1) + 8*60+30/(24*60)'

每星期二中午12

 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'

每个月第一天的午夜12

 'TRUNC(LAST_DAY(SYSDATE ) + 1)'

每个季度最后一天的晚上11

 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'

每分钟执行一次

 'SYSDATE+1/1440'

 

2 REMOVE

这个过程的作用是用于删除作业队列当中的特定的作业,它的语法如下:

DBMS_JOB.REMOVE(JOB IN BINARY_INTEGER);

下面是一个删除作业的例子:

首先查看DBA_JOBS表,看表里面有哪些任务正在执行着?

SELECT * FROM DBA_JOBS;

可以看到里面的JOB就是我们要删除的作业的编号,LOG_USER是创建该任务的人。

SQL> EXEC DBMS_JOB.REMOVE(26);

SQL>COMMIT;

 

3 CHANGE

该过程改变与作业相关的所有的信息,其中包括作业的操作内容,作业运行的时间以及运行时间间隔信息等等。语法如下:

DBMS_JOB.CHANGE(

JOB IN BINARY_INTEGER,

WHAT IN VARCHAR2

NEXT_DATE,

INTERVAL IN VARCHAR2

INSTANCE IN BINARY_INTEGER DEFAULT NULL,

FORCE IN BOOLEAN DEFAULT FALSE

);

 

例子:

SQL>EXEC DBMS_JOB.CHANGE(12,NULL,NULL,’SYSDATE+2’);

SQL>COMMIT;

 

4 WHAT

WHAT用来改变作业要执行的操作,例如:

SQL>EXEC DBMS_JOB.WHAT(26,’GETNO_F1;);

 

5)  NEXT_DATE

用来改变作业的下次运行日期

SQL>EXEC DBMS_JOB.NEXT_DATE(‘26’,’SYSDATE+2’);

 

6)  INTERVAL

该过程用来改变作业的运行时间间隔,下面的运行时间间隔修改为每分钟执行一次:

SQL>exec dbms_job.interval(26,’SYSDATE+1/24/60)

 

7)  BROKEN

该过程用于给该作业打上中断标志,可以在DBA_JOBS表里面观察该作业的BROKEN标志知否为中断。例子:

SQL>EXEC DBMS_JOB.BROKEN(26TRUE);

SQL>COMMIT;

 

8)  RUN

该过程用来执行该作业,例子:

SQL>EXEC DBMS_RN(26);

SQL>COMMIT;

 如何停止一个作业?

SQL>DBMS_JOBS.BROKEN(2TRUE);

SQL>COMMIT;

如何启动一个作业?

SQL>DBMS_JOBS.BROKEN(2,FALSE);

SQL>COMMIT;

 

学习资料待续》》》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值