{"id":1349,"date":"2023-06-24T15:14:37","date_gmt":"2023-06-24T15:14:37","guid":{"rendered":"http:\/\/wp.chaoyu.nl\/?p=1349"},"modified":"2023-07-25T00:12:37","modified_gmt":"2023-07-24T22:12:37","slug":"1349","status":"publish","type":"post","link":"https:\/\/chaoyu.nl\/?p=1349","title":{"rendered":"Database link Between OCI Autonomous Database"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\"><strong>Say you would like to create DB link between 2 Autonomous Database in OCI DB1 and DB2. Assume DB1 want to query data from DB2<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">select owner\n      ,credential_name\nfrom   dba_credentials\nwhere  credential_name = 'OCI$RESOURCE_PRINCIPAL'\nand    owner = 'ADMIN';<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-verse\"><strong>Create New Database Directory on DB1<\/strong><\/pre>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">CREATE DIRECTORY ATP_WALLET_DIR AS 'ATP_WALLET_DIR';\n\nselect directory_name\n      ,directory_path\nfrom   dba_directories\nwhere  directory_name like upper('ATP_WALLET_DIR');<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Next, we need to create 2 credentials. 1 is used to access Bucket, 1 is used for storing schema@pwd to DB2<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Credentials to Access Bucket<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">here multiple ways are available 1. using auth Token 2. use API keys Both are done via OCI console + DBMS_CLOUD.CREATE_CREDENTIAL procedure.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">auth Token is bit easier<\/p>\n<\/blockquote>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\">get the user from OCI (it is normally an email)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">get a new auth Token(copy the token)<\/p>\n<\/div>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">begin\n   dbms_cloud.create_credential(credential_name =&gt; 'DB001_OCI_AUTH_CREDENTIAL'\n                               ,username        =&gt; 'YOUMAIL@MAIL&gt;COM'\n                               ,password        =&gt; 'TOKEN');\nend;\n\/\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">API keys<\/p>\n<\/blockquote>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4fc3f8e1 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\">find the user you like to use from oci <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">click on API keys and generate a new key<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">you need your user ocid, tenancy ocid, private key, fingerprint<\/p>\n<\/div>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">begin\n   dbms_cloud.create_credential(credential_name =&gt; 'DB001_OCI_AUTH_CREDENTIAL'\n                               ,user_ocid       =&gt; 'ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa'\n                               ,tenancy_ocid    =&gt; 'ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a'\n                               ,private_key     =&gt; 'MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM\/\/JEBg='\n                               ,fingerprint     =&gt; 'f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27');\nend;\n\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Create Credential to Access DB2 schema<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the user from the Source Database, e.g if you want to access object from schema ADMIN, should then use ADMIN@PWD or any other schemas.<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">begin\n   dbms_cloud.create_credential(credential_name =&gt; 'DB001_LINK_CRED'\n                               ,username        =&gt; 'SCHEMA_NAME'\n                               ,password        =&gt; 'PWD');\nend;\n\/\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Get Wallet<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unzip wallet and upload to a bucket where your earlier created Credential can access<br>use the following code to download it and place it in the newly created database direcotry.<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">begin\n   dbms_cloud.get_object(credential_name =&gt; 'DB001_OCI_AUTH_CREDENTIAL'\n                        ,object_uri      =&gt; 'https:\/\/objectstorage.eu-frankfurt-1.oraclecloud.com\/n\/frpnibrn7ulj\/b\/public\/o\/DBwallet\/cwallet.sso'\n                        ,directory_name  =&gt; 'ATP_WALLET_DIR');\nend;\n\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Create db link to access DB2<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">begin\n   dbms_cloud_admin.create_database_link(db_link_name    =&gt; 'DB002_LINK'\n                                        ,hostname        =&gt; '#CHECK TNS#'\n                                        ,port            =&gt; '1522'\n                                        ,service_name    =&gt; '#CHECK TNS#'\n                                        ,credential_name =&gt; 'DB001_LINK_CRED'\n                                        ,directory_name  =&gt; 'ATP_WALLET_DIR');\nend;\n\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code lang=\"sql\" class=\"language-sql line-numbers\">select sysdate\nfrom   dual@db002_link\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Say you would like to create DB link between 2 Autonomous Database in OCI DB1 and DB2. Assume DB1 want to query data from DB2 Create New Database Directory on DB1 Next, we need to create 2 credentials. 1 is used to access Bucket, 1 is used for storing schema@pwd to DB2 Credentials to Access&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1365,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12],"tags":[52,42],"class_list":["post-1349","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oci","category-oralce-db","tag-database-link","tag-oci-autonomous-database"],"_links":{"self":[{"href":"https:\/\/chaoyu.nl\/index.php?rest_route=\/wp\/v2\/posts\/1349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chaoyu.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chaoyu.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chaoyu.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chaoyu.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1349"}],"version-history":[{"count":10,"href":"https:\/\/chaoyu.nl\/index.php?rest_route=\/wp\/v2\/posts\/1349\/revisions"}],"predecessor-version":[{"id":1388,"href":"https:\/\/chaoyu.nl\/index.php?rest_route=\/wp\/v2\/posts\/1349\/revisions\/1388"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chaoyu.nl\/index.php?rest_route=\/wp\/v2\/media\/1365"}],"wp:attachment":[{"href":"https:\/\/chaoyu.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chaoyu.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chaoyu.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}