Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101960102
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-12 16:50:43

  来源:赛迪网技术社区    作者:tel2320491

问:请问如何在REPORT中设置动态显示域?

答:在REPORT中设置动态显示域的方法如下:

1. 在REPORT的“数据模型”下面的“用户参数”中,创建用户自定义参数,如RQ,RQ是从FORM传递过来的显示日期,数据类型为字符型。

2. 在布局模型中,创建一个显示域F_1,在属性选项板中修改该显示域的源为用户自定义参数RQ,并且设为“不可见的”。

3. 在动态预览中,创建一个文本域D_1,调整该文本域的位置和宽度,在该域的内容中输入&&F_1,则该域会动态显示用户定义参数RQ的值。

问:有关口令

我在Solaris系统上运行 Oracle8i 8.1.7企业版。我创建了两个数据库:SUGAR和TestDb。将两者的remote_login_passwordfile都设置为 “独占(exclusive)”。我试图以SYSDBA身份连接到TestDb,但未能成功。下面是我的做法:

$sqlplus /nolog 
SQL> conn sys/change_on_install@testdb 
Connected.(已连接) 
SQL> select * from v$pwfile_users; 
username sysdb sysop 
----------------------------------------- 
internal true true 
sys true true 
SQL> conn sys/change_on_install@testdb as 
sysdba 
ERROR(错误) 
ORA-01017: invalid username/password; logon 
denied(无效的用户名/口令,登录被拒绝) 
Warning: You are on longer connected to 
ORACLE(警告:你已经与ORACLE断开连接)

我为什么不能以SYSDBA身份连接到TestDb?

答:通常Oracle中的SYS口令与INTERNAL口令是同步的,SYS口令存储于口令文件中。在上述情况下你建立了包含有一个口令的口令文件,而不是使用缺省的 “change_on_install,”这就是问题之所在。

希望下面的方法对你有所帮助。首先,建立一个口令文件,其中包含一个口令,这个口令不要与系统口令匹配:

$ orapwd file=orapw password=foobar 
entries=40 
然后,进入服务器,启动数据库: 
$ svrmgr 
SVRMGR> connect internal 
Connected.(已连接) 
SVRMGR> startup 
ORACLE instance started.(ORACLE 实例已启动) 
Total System Global Area (系统全局区域大小) 
193073136 bytes 
Fixed Size (固定大小) 
69616 bytes 
Variable Size (可变大小) 
141639680 bytes 
Database Buffers (数据库缓冲区) 
45056000 bytes 
Redo Buffers (重做缓冲区) 
6307840 bytes 
Database mounted. (数据库已加载) 
Database opened.数据库已打开。

现在使用SYS用户的口令,以SYS身份连接:

SVRMGR> connect sys/change_on_install@ora81 
Connected.(已连接)

成功了。现在试着以SYSDBA身份连接:

SVRMGR> connect sys/change_on_install@ora81 
as sysdba; 
ORA-01017: invalid username/password; logon 
denied(无效的用户名/口令;登录被拒绝)

这里出现了你所说的错误。你的SYS口令为:change_on_install,但口令文件中的口令却是foobar。SYS用户是专用的,以SYSDBA身份连接就像是以INTERNAL连接,你必须使用口令文件中的口令。试试这样做:

SVRMGR— connect sys/foobar@ora81 as sysdba; 
Connected.(已连接)

并不是每个人都需要使用口令文件中的口令;用户需要使用他们自己的口令。通过授权SYSDBA给SCOTT,你就可以明白这一点:

SVRMGR> grant sysdba to scott; 
Statement processed.(已处理)

这个命令将SCOTT以SCOTT的凭证加入到口令文件中。如果你改变了SCOTT的口令,口令文件也会自动同步改变。现在,你可以试试以SYSDBA身份连接SCOTT了:

SVRMGR> connect scott/tiger@ora81 as sysdba; 
Connected.(已连接)

一切正常。现在可以使用ALTER USER 命令来改变SYS用户的口令。

SVRMGR> alter user sys identified by 
change_on_install; 
Statement processed.(已成功更改) 
SVRMGR≫ connect sys/change_on_install@ora81 
as sysdba; 
Connected.(已连接)

你还可以用change_on_install,因为改变SYS用户口令将同时改变口令文件中的口令。当你建立了口令文件后,Oracle数据库在其中放入两个账号:SYS和INTERNAL,并将你在命令行中提供的口令作为这两个账户的口令。当你改变数据库中的SYS用户口令时,数据库将冲掉口令文件中的SYS和INTERNAL口令。下面操作将显示口令foobar已经是无效的了:

SVRMGR> connect sys/foobar@ora81 as sysdba; 
ORA-01017: invalid username/password; logon 
denied(无效的用户名/口令,登录被拒绝)
阅读(390) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~