关于搭建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;
学习资料待续》》》
安装数据库注意事项:
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;
学习资料待续》》》
相关文章推荐
- 关于VS中遇到System.IO.FileNotFoundException问题的解决办法
- Caffe搭建:常见问题解决办法和ubuntu使用中遇到问题
- 关于android开发遇到的一些问题的解决办法---间断的更新
- ubuntu13.10(楼主是在麒麟系统下测试的)下ns2环境搭建和可能遇到的问题及解决办法
- 关于markdown文件插入图片遇到的小问题和解决办法
- Caffe搭建:常见问题解决办法和ubuntu使用中遇到问题解决方法(持续更新)
- 关于今天做项目时遇到的问题 以及解决办法
- 关于调试php的socket服务端中遇到的问题及解决办法
- 【转载】关于2440的MDK平台下移植ucOS2,遇到的问题,及解决办法
- 关于安装配置ambari时遇到的问题及解决办法
- Caffe搭建:常见问题解决办法和ubuntu使用中遇到问题(持续更新)
- 关于在myeclipse中导入工程所遇到的问题,解决办法
- 关于tomcat环境下上传大文件遇到的问题及解决办法
- 关于JAVA调用Matlab遇到的问题+JDK重装后原有项目报错的解决办法
- ios升级为5后,程序编译时遇到的关于libz 1.2.3.dylib类包的各种问题解决办法
- 举例说明关于android编程中遇到的java.lang.ClassCastException: android.app.Application问题的原因及解决办法
- 安装Piwik时遇到的一个奇怪的关于PHP参数问题的解决办法
- android编程过程中遇到的关于Canvas: trying to use a recycled bitmap android.graphics.Bitmap问题的原因及解决办法
- 搭建fabric1.0过程中遇到的问题及解决办法
- android编程中遇到的关于调试百度地图时出现的 java.lang.UnsatisfiedLinkError: initClass 问题的原因及解决办法