您的位置:首页 > 数据库 > Oracle

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

2012-11-16 16:02 519 查看
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)'
每天早上8点30分

'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(26,TRUE);
SQL>COMMIT;

8)
RUN
该过程用来执行该作业,例子:
SQL>EXEC DBMS_RN(26);
SQL>COMMIT;
如何停止一个作业?
SQL>DBMS_JOBS.BROKEN(2,TRUE);
SQL>COMMIT;
如何启动一个作业?
SQL>DBMS_JOBS.BROKEN(2,FALSE);
SQL>COMMIT;

学习资料待续》》》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐